summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.travis.yml1
-rw-r--r--Makefile3
-rw-r--r--asm-de/battle_message.s4
-rw-r--r--asm-de/easy_chat.s105
-rw-r--r--asm/battle_2.s28
-rw-r--r--asm/battle_3.s32
-rw-r--r--asm/battle_4.s32351
-rw-r--r--asm/battle_8.s5222
-rw-r--r--asm/battle_9.s12
-rw-r--r--asm/battle_anim_807B69C.s960
-rw-r--r--asm/battle_anim_81258BC.s2
-rw-r--r--asm/battle_records.s868
-rw-r--r--asm/cable_club.s2
-rw-r--r--asm/crt0.s11
-rw-r--r--asm/easy_chat.s101
-rw-r--r--asm/field_fadetransition.s1221
-rw-r--r--asm/field_screen_effect.s789
-rw-r--r--asm/fldeff_flash.s753
-rw-r--r--asm/m4a_1.s2
-rw-r--r--asm/macros/event.inc4
-rw-r--r--asm/menu_helpers.s1339
-rw-r--r--asm/mon_markings.s1008
-rw-r--r--asm/mystery_event_script.s831
-rw-r--r--asm/pokedex_area_screen.s12
-rw-r--r--asm/pokemon_icon.s788
-rw-r--r--asm/pokemon_menu.s4
-rw-r--r--asm/pokenav.s10
-rw-r--r--asm/record_mixing.s543
-rw-r--r--asm/region_map.s3969
-rw-r--r--asm/reset_rtc_screen.s1300
-rw-r--r--asm/rom_header.inc4
-rw-r--r--asm/trader.s656
-rw-r--r--asm/unknown_task.s645
-rw-r--r--common_syms/battle_anim.txt3
-rw-r--r--common_syms/contest_painting.txt5
-rw-r--r--common_syms/field_camera.txt3
-rw-r--r--common_syms/field_control_avatar.txt1
-rw-r--r--common_syms/field_map_obj.txt1
-rw-r--r--common_syms/fieldmap.txt1
-rw-r--r--common_syms/intro.txt2
-rw-r--r--common_syms/mori_debug_menu.txt1
-rw-r--r--common_syms/pokedex.txt2
-rw-r--r--common_syms/pokemon_1.txt4
-rw-r--r--common_syms/record_mixing.txt1
-rw-r--r--common_syms/rom3.txt1
-rw-r--r--common_syms/rom4.txt4
-rw-r--r--common_syms/save.txt9
-rw-r--r--common_syms/sound.txt1
-rw-r--r--common_syms/sound_check_menu.txt1
-rw-r--r--common_syms/start_menu.txt1
-rw-r--r--common_syms/tv.txt1
-rw-r--r--constants/misc_constants.inc8
-rw-r--r--constants/version.inc6
-rw-r--r--data-de/event_scripts.s228
-rw-r--r--data-de/field_move_scripts.inc4
-rw-r--r--data-de/items.inc5236
-rw-r--r--data-de/menu_cursor.s2
-rw-r--r--data-de/region_map_locations.inc327
-rw-r--r--data-de/text/credits.inc4
-rw-r--r--data-de/text/item_descriptions.inc1393
-rw-r--r--data/battle_anim_807B69C.s23
-rw-r--r--data/battle_scripts_1.s200
-rw-r--r--data/battle_scripts_2.s8
-rw-r--r--data/berry_tag_screen.s12
-rw-r--r--data/crc16_table.inc34
-rw-r--r--data/data2a.s (renamed from data/data2.s)775
-rw-r--r--data/data2b.s296
-rw-r--r--data/diploma.s5
-rw-r--r--data/event_scripts.s228
-rw-r--r--data/field_move_scripts.inc4
-rw-r--r--data/graphics/pokemon/icon_palette_indices.inc442
-rw-r--r--data/graphics/pokemon/icon_palette_table.inc11
-rw-r--r--data/graphics/pokemon/icon_table.inc442
-rw-r--r--data/item.s10
-rw-r--r--data/items.inc5236
-rw-r--r--data/menu_helpers.s102
-rw-r--r--data/mystery_event_script_cmd_table.s22
-rw-r--r--data/option_menu.s13
-rw-r--r--data/pokemon_icon.s92
-rw-r--r--data/record_mixing.s68
-rw-r--r--data/region_map.s259
-rw-r--r--data/region_map_locations.inc327
-rw-r--r--data/region_map_sections.inc16
-rw-r--r--data/rom_8080874.s18
-rw-r--r--data/script_funcs.s22
-rw-r--r--data/scripts/bard.inc10
-rw-r--r--data/scripts/berry_tree.inc20
-rw-r--r--data/scripts/cable_club.inc134
-rw-r--r--data/scripts/contest_hall.inc40
-rw-r--r--data/scripts/day_care.inc58
-rw-r--r--data/scripts/gabby_and_ty.inc16
-rw-r--r--data/scripts/giddy.inc8
-rw-r--r--data/scripts/hipster.inc6
-rw-r--r--data/scripts/maps/AbandonedShip_Corridors_B1F.inc2
-rw-r--r--data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc8
-rw-r--r--data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc8
-rw-r--r--data/scripts/maps/AbandonedShip_Rooms2_1F.inc4
-rw-r--r--data/scripts/maps/AncientTomb.inc2
-rw-r--r--data/scripts/maps/BattleTower_BattleRoom.inc42
-rw-r--r--data/scripts/maps/BattleTower_Elevator.inc2
-rw-r--r--data/scripts/maps/BattleTower_Lobby.inc78
-rw-r--r--data/scripts/maps/CaveOfOrigin_B4F.inc10
-rw-r--r--data/scripts/maps/DesertRuins.inc2
-rw-r--r--data/scripts/maps/DewfordTown_Hall.inc8
-rw-r--r--data/scripts/maps/EverGrandeCity_ChampionsRoom.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity_DrakesRoom.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity_HallOfFame.inc4
-rw-r--r--data/scripts/maps/FallarborTown_ContestLobby.inc8
-rw-r--r--data/scripts/maps/FallarborTown_House2.inc6
-rw-r--r--data/scripts/maps/FortreeCity_Gym.inc4
-rw-r--r--data/scripts/maps/FortreeCity_House1.inc10
-rw-r--r--data/scripts/maps/IslandCave.inc8
-rw-r--r--data/scripts/maps/JaggedPass.inc4
-rw-r--r--data/scripts/maps/LavaridgeTown.inc2
-rw-r--r--data/scripts/maps/LilycoveCity.inc2
-rw-r--r--data/scripts/maps/LilycoveCity_ContestLobby.inc52
-rw-r--r--data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc4
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc6
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc10
-rw-r--r--data/scripts/maps/LilycoveCity_Harbor.inc2
-rw-r--r--data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc2
-rw-r--r--data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc14
-rw-r--r--data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc82
-rw-r--r--data/scripts/maps/LittlerootTown.inc2
-rw-r--r--data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc2
-rw-r--r--data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc6
-rw-r--r--data/scripts/maps/LittlerootTown_MaysHouse_1F.inc4
-rw-r--r--data/scripts/maps/LittlerootTown_MaysHouse_2F.inc6
-rw-r--r--data/scripts/maps/MauvilleCity_BikeShop.inc2
-rw-r--r--data/scripts/maps/MauvilleCity_GameCorner.inc24
-rw-r--r--data/scripts/maps/MauvilleCity_Gym.inc18
-rw-r--r--data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/MeteorFalls_1F_2R.inc6
-rw-r--r--data/scripts/maps/MossdeepCity_GameCorner_1F.inc20
-rw-r--r--data/scripts/maps/MossdeepCity_GameCorner_B1F.inc14
-rw-r--r--data/scripts/maps/MossdeepCity_Gym.inc2
-rw-r--r--data/scripts/maps/MossdeepCity_House1.inc2
-rw-r--r--data/scripts/maps/MossdeepCity_House4.inc4
-rw-r--r--data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc2
-rw-r--r--data/scripts/maps/MtChimney.inc2
-rw-r--r--data/scripts/maps/MtChimney_CableCarStation.inc4
-rw-r--r--data/scripts/maps/MtPyre_6F.inc2
-rw-r--r--data/scripts/maps/NewMauville_Entrance.inc2
-rw-r--r--data/scripts/maps/NewMauville_Inside.inc6
-rw-r--r--data/scripts/maps/PacifidlogTown_House2.inc12
-rw-r--r--data/scripts/maps/PacifidlogTown_House3.inc10
-rw-r--r--data/scripts/maps/PacifidlogTown_House5.inc2
-rw-r--r--data/scripts/maps/PetalburgCity.inc8
-rw-r--r--data/scripts/maps/PetalburgCity_Gym.inc24
-rw-r--r--data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/PetalburgWoods.inc2
-rw-r--r--data/scripts/maps/Route101.inc4
-rw-r--r--data/scripts/maps/Route102.inc2
-rw-r--r--data/scripts/maps/Route103.inc6
-rw-r--r--data/scripts/maps/Route104.inc10
-rw-r--r--data/scripts/maps/Route104_Prototype.inc2
-rw-r--r--data/scripts/maps/Route106.inc2
-rw-r--r--data/scripts/maps/Route107.inc2
-rw-r--r--data/scripts/maps/Route109.inc6
-rw-r--r--data/scripts/maps/Route110.inc18
-rw-r--r--data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc2
-rw-r--r--data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc2
-rw-r--r--data/scripts/maps/Route110_TrickHouseEnd.inc6
-rw-r--r--data/scripts/maps/Route110_TrickHouseEntrance.inc18
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle2.inc8
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle3.inc2
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle6.inc4
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle7.inc10
-rw-r--r--data/scripts/maps/Route111.inc8
-rw-r--r--data/scripts/maps/Route112.inc2
-rw-r--r--data/scripts/maps/Route112_CableCarStation.inc4
-rw-r--r--data/scripts/maps/Route113.inc4
-rw-r--r--data/scripts/maps/Route113_GlassWorkshop.inc2
-rw-r--r--data/scripts/maps/Route114.inc4
-rw-r--r--data/scripts/maps/Route115.inc6
-rw-r--r--data/scripts/maps/Route116.inc8
-rw-r--r--data/scripts/maps/Route117.inc12
-rw-r--r--data/scripts/maps/Route118.inc4
-rw-r--r--data/scripts/maps/Route119.inc6
-rw-r--r--data/scripts/maps/Route119_WeatherInstitute_1F.inc2
-rw-r--r--data/scripts/maps/Route120.inc8
-rw-r--r--data/scripts/maps/Route121.inc4
-rw-r--r--data/scripts/maps/Route121_SafariZoneEntrance.inc6
-rw-r--r--data/scripts/maps/Route123.inc8
-rw-r--r--data/scripts/maps/Route124.inc6
-rw-r--r--data/scripts/maps/Route125.inc2
-rw-r--r--data/scripts/maps/Route128.inc6
-rw-r--r--data/scripts/maps/Route130.inc2
-rw-r--r--data/scripts/maps/RustboroCity_House1.inc10
-rw-r--r--data/scripts/maps/SSTidalCorridor.inc14
-rw-r--r--data/scripts/maps/SafariZone_Southeast.inc2
-rw-r--r--data/scripts/maps/SeafloorCavern_Room9.inc12
-rw-r--r--data/scripts/maps/SealedChamber_InnerRoom.inc10
-rw-r--r--data/scripts/maps/SecretBase_YellowCave4.inc2
-rw-r--r--data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc2
-rw-r--r--data/scripts/maps/ShoalCave_LowTideInnerRoom.inc12
-rw-r--r--data/scripts/maps/ShoalCave_LowTideLowerRoom.inc2
-rw-r--r--data/scripts/maps/ShoalCave_LowTideStairsRoom.inc2
-rw-r--r--data/scripts/maps/SkyPillar_Top.inc2
-rw-r--r--data/scripts/maps/SlateportCity.inc6
-rw-r--r--data/scripts/maps/SlateportCity_ContestLobby.inc8
-rw-r--r--data/scripts/maps/SlateportCity_House1.inc16
-rw-r--r--data/scripts/maps/SlateportCity_PokemonFanClub.inc12
-rw-r--r--data/scripts/maps/SootopolisCity.inc2
-rw-r--r--data/scripts/maps/SootopolisCity_Gym_1F.inc8
-rw-r--r--data/scripts/maps/SootopolisCity_House8.inc16
-rw-r--r--data/scripts/maps/SouthernIsland_Interior.inc6
-rw-r--r--data/scripts/maps/UnknownMap_25_34.inc4
-rw-r--r--data/scripts/maps/VerdanturfTown_ContestLobby.inc8
-rw-r--r--data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc2
-rw-r--r--data/scripts/maps/VictoryRoad_1F.inc2
-rw-r--r--data/scripts/mystery_event_club.inc2
-rw-r--r--data/scripts/players_house.inc6
-rw-r--r--data/scripts/pokeblocks.inc28
-rw-r--r--data/scripts/safari_zone.inc8
-rw-r--r--data/scripts/storyteller.inc14
-rw-r--r--data/scripts/trader.inc12
-rw-r--r--data/scripts/tv.inc30
-rw-r--r--data/specials.inc693
-rw-r--r--data/task.s7
-rw-r--r--data/text/item_descriptions.inc1393
-rw-r--r--data/trader.s17
-rw-r--r--data/trainer_card.s62
-rw-r--r--data/util.s70
-rw-r--r--graphics-de/title_screen/logo_sapphire.pal227
-rw-r--r--graphics-de/title_screen/pokemon_sapphire.pngbin0 -> 4558 bytes
-rw-r--r--graphics-de/title_screen/sapphireversion.pngbin0 -> 2321 bytes
-rw-r--r--graphics/pokenav/fly_target_icons.pal (renamed from graphics/pokenav/map_misc.pal)0
-rw-r--r--graphics/pokenav/fly_target_icons.png (renamed from graphics/pokenav/map_misc.png)bin291 -> 291 bytes
-rw-r--r--graphics/pokenav/region_map.pal226
-rw-r--r--[-rwxr-xr-x]include/battle.h393
-rw-r--r--include/battle_ai.h1
-rw-r--r--include/battle_records.h5
-rw-r--r--include/contest_painting.h5
-rw-r--r--[-rwxr-xr-x]include/decoration.h13
-rw-r--r--include/decoration_inventory.h2
-rw-r--r--include/event_data.h16
-rw-r--r--include/field_effect.h12
-rw-r--r--include/field_fadetransition.h2
-rw-r--r--include/field_map_obj.h2
-rw-r--r--include/field_special_scene.h1
-rw-r--r--include/field_specials.h8
-rw-r--r--include/flags.h24
-rw-r--r--include/global.fieldmap.h2
-rw-r--r--include/global.h53
-rw-r--r--include/graphics.h15
-rw-r--r--include/item.h6
-rw-r--r--include/item_use.h25
-rw-r--r--include/libgncmultiboot.h1
-rw-r--r--[-rwxr-xr-x]include/menu.h4
-rw-r--r--[-rwxr-xr-x]include/menu_helpers.h23
-rw-r--r--include/mystery_event_script.h6
-rw-r--r--[-rwxr-xr-x]include/pokeblock.h11
-rw-r--r--[-rwxr-xr-x]include/pokemon.h21
-rw-r--r--include/pokemon_menu.h1
-rw-r--r--[-rwxr-xr-x]include/pokenav.h0
-rw-r--r--include/record_mixing.h10
-rw-r--r--[-rwxr-xr-x]include/region_map.h73
-rw-r--r--include/rom3.h22
-rw-r--r--include/rom4.h12
-rw-r--r--include/save.h2
-rw-r--r--include/script.h4
-rw-r--r--include/secret_base.h1
-rw-r--r--[-rwxr-xr-x]include/strings.h0
-rw-r--r--include/text.h2
-rw-r--r--include/trainer_card.h16
-rw-r--r--[-rwxr-xr-x]include/use_pokeblock.h3
-rw-r--r--include/util.h1
-rw-r--r--[-rwxr-xr-x]include/vars.h1
-rw-r--r--ld_script.txt63
-rw-r--r--sapphire_de.sha11
-rw-r--r--src/agb_flash_mx.c4
-rw-r--r--src/battle_10.c3
-rw-r--r--src/battle_2.c98
-rw-r--r--src/battle_4.c18196
-rw-r--r--src/battle_6.c4
-rw-r--r--src/battle_7.c2
-rw-r--r--src/battle_8.c1642
-rw-r--r--src/battle_ai.c62
-rw-r--r--src/battle_anim.c8
-rw-r--r--src/battle_anim_807B69C.c353
-rw-r--r--src/battle_records.c316
-rw-r--r--src/berry_tag_screen.c39
-rw-r--r--src/bike.c6
-rw-r--r--src/braille_puzzles.c2
-rw-r--r--src/cable_club.c1
-rw-r--r--src/choose_party.c3
-rw-r--r--src/contest_painting.c32
-rw-r--r--src/credits.c320
-rw-r--r--src/data/item_descriptions_de.h1392
-rw-r--r--src/data/item_descriptions_en.h1392
-rw-r--r--src/data/items_de.h5587
-rw-r--r--src/data/items_en.h5587
-rw-r--r--src/data/pokedex_entries_de.h3030
-rw-r--r--src/data/region_map_layout.h42
-rw-r--r--src/data/region_map_names_de.h79
-rw-r--r--src/data/region_map_names_en.h79
-rw-r--r--[-rwxr-xr-x]src/decoration.c21
-rw-r--r--src/easy_chat.c186
-rw-r--r--src/event_data.c18
-rw-r--r--src/field_camera.c19
-rw-r--r--src/field_control_avatar.c9
-rw-r--r--src/field_effect.c2
-rw-r--r--src/field_fadetransition.c559
-rw-r--r--src/field_map_obj.c9
-rw-r--r--src/field_map_obj_helpers.c2
-rw-r--r--src/field_message_box.c2
-rw-r--r--src/field_player_avatar.c2
-rw-r--r--src/field_region_map.c13
-rw-r--r--src/field_screen_effect.c340
-rw-r--r--[-rwxr-xr-x]src/field_specials.c20
-rw-r--r--[-rwxr-xr-x]src/field_tasks.c0
-rw-r--r--src/fieldmap.c2
-rw-r--r--src/fldeff_cut.c1
-rw-r--r--src/fldeff_flash.c306
-rw-r--r--src/fldeff_strength.c2
-rw-r--r--src/fldeff_sweetscent.c2
-rw-r--r--src/fldeff_teleport.c2
-rw-r--r--src/intro.c10
-rw-r--r--src/item.c28
-rw-r--r--src/load_save.c29
-rw-r--r--src/map_name_popup.c2
-rw-r--r--src/menu.c4
-rw-r--r--src/menu_cursor.c17
-rw-r--r--src/menu_helpers.c572
-rw-r--r--src/mon_markings.c383
-rw-r--r--src/money.c3
-rw-r--r--src/mori_debug_menu.c3
-rw-r--r--src/mystery_event_menu.c5
-rw-r--r--src/mystery_event_script.c421
-rw-r--r--src/new_game.c3
-rw-r--r--src/option_menu.c5
-rw-r--r--src/player_pc.c25
-rw-r--r--[-rwxr-xr-x]src/pokeblock.c118
-rw-r--r--src/pokedex.c14
-rw-r--r--src/pokemon_1.c49
-rw-r--r--src/pokemon_2.c3
-rw-r--r--src/pokemon_icon.c1276
-rw-r--r--src/pokemon_storage_system.c2
-rw-r--r--src/record_mixing.c893
-rw-r--r--src/region_map.c1847
-rw-r--r--src/reset_rtc_screen.c496
-rw-r--r--src/rom3.c50
-rw-r--r--src/rom4.c38
-rw-r--r--src/rom6.c4
-rw-r--r--src/rotating_gate.c6
-rw-r--r--src/save.c28
-rw-r--r--src/save_failed_screen.c26
-rw-r--r--src/save_menu_util.c2
-rw-r--r--src/scrcmd.c18
-rw-r--r--src/script.c9
-rw-r--r--src/script_movement.c2
-rw-r--r--src/secret_base.c2
-rw-r--r--src/sound.c8
-rw-r--r--[-rwxr-xr-x]src/sound_check_menu.c19
-rw-r--r--src/start_menu.c4
-rw-r--r--src/task.c3
-rw-r--r--src/title_screen.c13
-rw-r--r--src/trader.c261
-rw-r--r--src/trainer_card.c906
-rw-r--r--src/trainer_see.c2
-rw-r--r--src/tv.c2881
-rw-r--r--src/unknown_debug_menu.c4
-rw-r--r--src/unknown_task.c255
-rw-r--r--[-rwxr-xr-x]src/use_pokeblock.c9
-rw-r--r--src/util.c218
-rw-r--r--sym_bss.txt100
-rw-r--r--sym_common.txt170
-rw-r--r--sym_ewram.txt492
370 files changed, 50240 insertions, 75690 deletions
diff --git a/.gitignore b/.gitignore
index ae9ac207b..4e73c4f17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,3 +38,4 @@ Thumbs.db
build/
.idea/
*.DS_Store
+*.pl
diff --git a/.travis.yml b/.travis.yml
index 3db6ab6fc..56bea002d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -55,5 +55,6 @@ matrix:
script:
- ./build_tools.sh
- make -j2 compare_ruby_de
+ - make -j2 compare_sapphire_de
allow_failures:
- env: _="Formatting"
diff --git a/Makefile b/Makefile
index c8482e7c7..e18b7b2f0 100644
--- a/Makefile
+++ b/Makefile
@@ -26,7 +26,7 @@ RAMSCRGEN := tools/ramscrgen/ramscrgen
REVISION := 0
-VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_de
+VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_de sapphire_de
# Clear the default suffixes.
.SUFFIXES:
@@ -178,3 +178,4 @@ $(eval $(call VERSION_RULES,sapphire,SAPPHIRE,0,ENGLISH))
$(eval $(call VERSION_RULES,sapphire_rev1,SAPPHIRE,1,ENGLISH))
$(eval $(call VERSION_RULES,sapphire_rev2,SAPPHIRE,2,ENGLISH))
$(eval $(call VERSION_RULES,ruby_de,RUBY,0,GERMAN))
+$(eval $(call VERSION_RULES,sapphire_de,SAPPHIRE,0,GERMAN))
diff --git a/asm-de/battle_message.s b/asm-de/battle_message.s
index dda69ce44..2f671a766 100644
--- a/asm-de/battle_message.s
+++ b/asm-de/battle_message.s
@@ -1561,11 +1561,11 @@ _08de121754:
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
- ldr r0, _08de121764 @ =0x081fd47c
+ ldr r0, _08de121764 @ =gTrainers+4
adds r4, r1, r0
b _081219E6
.align 2, 0
-_08de121764: .4byte 0x081fd47c
+_08de121764: .4byte gTrainers+4
_08121830:
lsls r0, r7, 3
subs r0, r7
diff --git a/asm-de/easy_chat.s b/asm-de/easy_chat.s
index 54cf8808c..2f6c28fdb 100644
--- a/asm-de/easy_chat.s
+++ b/asm-de/easy_chat.s
@@ -4212,7 +4212,7 @@ _080E812C:
mov r2, r8
strb r2, [r0]
adds r0, 0x1
- ldr r1, _080E81A4 @ =0x083e7686
+ ldr r1, _080E81A4 @ =gBerryMasterWifePhrases + 0x2
adds r4, r1
ldrh r1, [r4]
movs r2, 0
@@ -4246,7 +4246,7 @@ _080E818A:
_080E8198: .4byte 0x0200b19a
_080E819C: .4byte 0xffff5e66
_080E81A0: .4byte gBerryMasterWifePhrases
-_080E81A4: .4byte 0x083e7686
+_080E81A4: .4byte gBerryMasterWifePhrases + 0x2
_080E81A8:
lsls r0, r4, 16
lsrs r5, r0, 16
@@ -10801,105 +10801,4 @@ _080EB45A:
bx r1
thumb_func_end de_sub_80EB748
- thumb_func_start sub_80EB3FC
-sub_80EB3FC: @ 80EB4B4
- push {r4-r7,lr}
- adds r5, r0, 0
- lsls r6, r1, 16
- lsrs r4, r6, 16
- adds r7, r4, 0
- adds r0, r4, 0
- bl sub_80EB37C
- lsls r0, 24
- cmp r0, 0
- beq _080EB4D8
- ldr r1, _080EB4D4 @ =gOtherText_ThreeQuestions
- adds r0, r5, 0
- bl StringCopy
- b _080EB55E
- .align 2, 0
-_080EB4D4: .4byte gOtherText_ThreeQuestions
-_080EB4D8:
- ldr r0, _080EB4F4 @ =0x0000ffff
- cmp r4, r0
- beq _080EB558
- lsrs r1, r6, 25
- ldr r2, _080EB4F8 @ =0x000001ff
- ands r2, r7
- cmp r1, 0x13
- bgt _080EB4FC
- cmp r1, 0x12
- bge _080EB510
- cmp r1, 0
- beq _080EB500
- b _080EB520
- .align 2, 0
-_080EB4F4: .4byte 0x0000ffff
-_080EB4F8: .4byte 0x000001ff
-_080EB4FC:
- cmp r1, 0x15
- bne _080EB520
-_080EB500:
- movs r0, 0xB
- adds r1, r2, 0
- muls r1, r0
- ldr r0, _080EB50C @ =gSpeciesNames
- adds r1, r0
- b _080EB550
- .align 2, 0
-_080EB50C: .4byte gSpeciesNames
-_080EB510:
- movs r0, 0xD
- adds r1, r2, 0
- muls r1, r0
- ldr r0, _080EB51C @ =gMoveNames
- adds r1, r0
- b _080EB550
- .align 2, 0
-_080EB51C: .4byte gMoveNames
-_080EB520:
- ldr r0, _080EB564 @ =gEasyChatGroupWords
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- subs r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _080EB568 @ =0x0000ffff
- cmp r2, r0
- beq _080EB550
- adds r3, r0, 0
-_080EB536:
- ldrb r0, [r1]
- adds r1, 0x1
- subs r2, 0x1
- cmp r0, 0xFF
- beq _080EB548
-_080EB540:
- ldrb r0, [r1]
- adds r1, 0x1
- cmp r0, 0xFF
- bne _080EB540
-_080EB548:
- lsls r0, r2, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bne _080EB536
-_080EB550:
- adds r0, r5, 0
- bl StringCopy
- adds r5, r0, 0
-_080EB558:
- movs r0, 0xFF
- strb r0, [r5]
- adds r0, r5, 0
-_080EB55E:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080EB564: .4byte gEasyChatGroupWords
-_080EB568: .4byte 0x0000ffff
- thumb_func_end sub_80EB3FC
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_2.s b/asm/battle_2.s
index ed4140583..4e8d16c7e 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -573,7 +573,7 @@ _080127E0:
str r0, [sp]
movs r0, 0
movs r2, 0x6
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ bl EmitChoosePokemon
b _0801289E
.align 2, 0
_08012808: .4byte gActiveBank
@@ -624,7 +624,7 @@ _08012854:
movs r1, 0
_0801286C:
movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ bl EmitChoosePokemon
b _0801289E
.align 2, 0
_08012874: .4byte gActionForBanks
@@ -643,7 +643,7 @@ _08012884:
movs r1, 0
movs r2, 0x6
movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ bl EmitChoosePokemon
_0801289E:
ldr r0, _080128A8 @ =gActiveBank
ldrb r0, [r0]
@@ -2789,7 +2789,7 @@ _08013A04:
beq _08013A0E
b _08013B42
_08013A0E:
- bl sub_80325B8
+ bl BattleMusicStop
ldr r1, _08013A3C @ =gBattlescriptCurrInstr
ldr r0, _08013A40 @ =gUnknown_081D8DBE
str r0, [r1]
@@ -3936,14 +3936,14 @@ _080143B6:
cmp r0, 0x1F
bne _08014404
adds r0, r2, 0
- bl sub_801E3B4
+ bl BankGetTurnOrder
lsls r0, 24
lsrs r0, 24
ldr r1, [sp]
cmp r0, r1
bcs _08014404
ldrb r0, [r4]
- bl sub_801E3B4
+ bl BankGetTurnOrder
lsls r0, 24
lsrs r0, 24
str r0, [sp]
@@ -4261,7 +4261,7 @@ _0801469A:
strb r0, [r5]
_080146AC:
ldr r4, _080146E0 @ =gBattlescriptCurrInstr
- ldr r3, _080146E4 @ =gUnknown_081D6BBC
+ ldr r3, _080146E4 @ =gBattleScriptsEffectsTable
ldr r2, _080146E8 @ =gBattleMoves
ldr r0, _080146EC @ =gCurrentMove
ldrh r1, [r0]
@@ -4288,7 +4288,7 @@ _080146CC:
bx r0
.align 2, 0
_080146E0: .4byte gBattlescriptCurrInstr
-_080146E4: .4byte gUnknown_081D6BBC
+_080146E4: .4byte gBattleScriptsEffectsTable
_080146E8: .4byte gBattleMoves
_080146EC: .4byte gCurrentMove
_080146F0: .4byte gFightStateTracker
@@ -5528,8 +5528,8 @@ _08015148: .4byte 0x00016112
_0801514C: .4byte 0x00017130
thumb_func_end bsC_8016D70
- thumb_func_start sub_8015150
-sub_8015150: @ 8015150
+ thumb_func_start GetBattleBank
+GetBattleBank: @ 8015150
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -5592,10 +5592,10 @@ _080151C8:
bx r1
.align 2, 0
_080151D0: .4byte gBank1
- thumb_func_end sub_8015150
+ thumb_func_end GetBattleBank
- thumb_func_start sub_80151D4
-sub_80151D4: @ 80151D4
+ thumb_func_start PressurePPLose
+PressurePPLose: @ 80151D4
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 24
@@ -5695,7 +5695,7 @@ _08015286:
_08015290: .4byte gDisableStructs
_08015294: .4byte gBitTable
_08015298: .4byte gActiveBank
- thumb_func_end sub_80151D4
+ thumb_func_end PressurePPLose
thumb_func_start sub_801529C
sub_801529C: @ 801529C
diff --git a/asm/battle_3.s b/asm/battle_3.s
index 8f3097c3d..7fc14545c 100644
--- a/asm/battle_3.s
+++ b/asm/battle_3.s
@@ -1819,7 +1819,7 @@ _080166D8:
ldrb r1, [r6]
movs r0, 0x1
movs r2, 0
- bl sub_801A02C
+ bl ItemBattleEffects
lsls r0, 24
cmp r0, 0
beq _080166F2
@@ -1840,7 +1840,7 @@ _08016704:
ldrb r1, [r6]
movs r0, 0x1
movs r2, 0x1
- bl sub_801A02C
+ bl ItemBattleEffects
lsls r0, 24
cmp r0, 0
beq _0801671E
@@ -2576,7 +2576,7 @@ _08016CE0:
strb r0, [r1, 0x3]
movs r0, 0x1
movs r1, 0
- bl sub_801E3EC
+ bl SetMoveEffect
ldrb r0, [r6]
muls r0, r7
adds r0, r5
@@ -3731,7 +3731,7 @@ _08017668:
movs r0, 0x1
movs r1, 0
movs r2, 0x1
- bl sub_801A02C
+ bl ItemBattleEffects
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -3823,8 +3823,8 @@ _08017710: .4byte gUnknown_02024AD0
_08017714: .4byte 0xff7fffff
thumb_func_end b_clear_atk_up_if_hit_flag_unless_enraged
- thumb_func_start sub_8017718
-sub_8017718: @ 8017718
+ thumb_func_start CantUseMove
+CantUseMove: @ 8017718
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -4866,7 +4866,7 @@ _08018008: .4byte 0x02000000
_0801800C: .4byte 0x000160e7
_08018010: .4byte gActiveBank
_08018014: .4byte gUnknown_02024ACC
- thumb_func_end sub_8017718
+ thumb_func_end CantUseMove
thumb_func_start sub_8018018
sub_8018018: @ 8018018
@@ -8668,8 +8668,8 @@ _0801A024: .4byte gBattleMainFunc
_0801A028: .4byte sub_8013FBC
thumb_func_end b_push_move_exec
- thumb_func_start sub_801A02C
-sub_801A02C: @ 801A02C
+ thumb_func_start ItemBattleEffects
+ItemBattleEffects: @ 801A02C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -10938,7 +10938,7 @@ _0801B2BC:
bl b_movescr_stack_push_cursor
movs r0, 0
movs r1, 0
- bl sub_801E3EC
+ bl SetMoveEffect
bl b_movescr_stack_pop_cursor
b _0801B3CA
.align 2, 0
@@ -11049,7 +11049,7 @@ _0801B3FC: .4byte 0x02000000
_0801B400: .4byte 0x00016003
_0801B404: .4byte gBattlescriptCurrInstr
_0801B408: .4byte gUnknown_081D9AA7
- thumb_func_end sub_801A02C
+ thumb_func_end ItemBattleEffects
thumb_func_start unref_sub_801B40C
unref_sub_801B40C: @ 801B40C
@@ -11636,8 +11636,8 @@ _0801B920: .4byte 0x02000000
_0801B924: .4byte 0x00016010
thumb_func_end sub_801B5C0
- thumb_func_start sub_801B928
-sub_801B928: @ 801B928
+ thumb_func_start IsPokeDisobedient
+IsPokeDisobedient: @ 801B928
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -11828,7 +11828,7 @@ _0801BA9E:
ands r5, r4
cmp r5, 0
bne _0801BA9E
- ldr r4, _0801BB18 @ =gUnknown_02024BEA
+ ldr r4, _0801BB18 @ =gRandomMove
ldr r3, _0801BB04 @ =gBattleMons
ldr r0, _0801BB10 @ =gCurrMovePos
ldrb r0, [r0]
@@ -11870,7 +11870,7 @@ _0801BB08: .4byte gBankAttacker
_0801BB0C: .4byte gBitTable
_0801BB10: .4byte gCurrMovePos
_0801BB14: .4byte gUnknown_02024BE5
-_0801BB18: .4byte gUnknown_02024BEA
+_0801BB18: .4byte gRandomMove
_0801BB1C: .4byte gBattleCommunication
_0801BB20: .4byte gDynamicBasePower
_0801BB24: .4byte 0x02000000
@@ -12012,6 +12012,6 @@ _0801BC40: .4byte gBankTarget
_0801BC44: .4byte gBattlescriptCurrInstr
_0801BC48: .4byte gUnknown_081D99A0
_0801BC4C: .4byte gHitMarker
- thumb_func_end sub_801B928
+ thumb_func_end IsPokeDisobedient
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_4.s b/asm/battle_4.s
deleted file mode 100644
index 6747abc6c..000000000
--- a/asm/battle_4.s
+++ /dev/null
@@ -1,32351 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start atk00_attackcanceler
-atk00_attackcanceler: @ 801BC50
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r0, _0801BC6C @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801BC74
- ldr r1, _0801BC70 @ =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- b _0801BFF4
- .align 2, 0
-_0801BC6C: .4byte gBattleOutcome
-_0801BC70: .4byte gFightStateTracker
-_0801BC74:
- ldr r2, _0801BCA4 @ =gBattleMons
- ldr r0, _0801BCA8 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0801BCB8
- ldr r2, _0801BCAC @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _0801BCB8
- movs r0, 0x80
- lsls r0, 12
- orrs r1, r0
- str r1, [r2]
- ldr r1, _0801BCB0 @ =gBattlescriptCurrInstr
- ldr r0, _0801BCB4 @ =BattleScript_EndTurn
- b _0801BFF2
- .align 2, 0
-_0801BCA4: .4byte gBattleMons
-_0801BCA8: .4byte gBankAttacker
-_0801BCAC: .4byte gHitMarker
-_0801BCB0: .4byte gBattlescriptCurrInstr
-_0801BCB4: .4byte BattleScript_EndTurn
-_0801BCB8:
- bl sub_8017718
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0801BCC6
- b _0801BFF4
-_0801BCC6:
- ldr r0, _0801BD34 @ =gBankTarget
- ldrb r1, [r0]
- str r2, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0801BCDE
- b _0801BFF4
-_0801BCDE:
- ldr r4, _0801BD38 @ =gBattleMons
- ldr r0, _0801BD3C @ =gCurrMovePos
- ldrb r1, [r0]
- ldr r3, _0801BD40 @ =gBankAttacker
- ldrb r2, [r3]
- movs r0, 0x58
- muls r2, r0
- adds r1, r2
- adds r0, r4, 0
- adds r0, 0x24
- adds r1, r0
- ldrb r0, [r1]
- ldr r5, _0801BD44 @ =gHitMarker
- cmp r0, 0
- bne _0801BD5C
- ldr r0, _0801BD48 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xA5
- beq _0801BD5C
- ldr r0, [r5]
- ldr r1, _0801BD4C @ =0x00800200
- ands r0, r1
- cmp r0, 0
- bne _0801BD5C
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- bne _0801BD5C
- ldr r1, _0801BD50 @ =gBattlescriptCurrInstr
- ldr r0, _0801BD54 @ =BattleScript_NoPPForMove
- str r0, [r1]
- ldr r2, _0801BD58 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- b _0801BFF4
- .align 2, 0
-_0801BD34: .4byte gBankTarget
-_0801BD38: .4byte gBattleMons
-_0801BD3C: .4byte gCurrMovePos
-_0801BD40: .4byte gBankAttacker
-_0801BD44: .4byte gHitMarker
-_0801BD48: .4byte gCurrentMove
-_0801BD4C: .4byte 0x00800200
-_0801BD50: .4byte gBattlescriptCurrInstr
-_0801BD54: .4byte BattleScript_NoPPForMove
-_0801BD58: .4byte gBattleMoveFlags
-_0801BD5C:
- ldr r0, [r5]
- ldr r1, _0801BDA0 @ =0xff7fffff
- ands r0, r1
- str r0, [r5]
- movs r6, 0x80
- lsls r6, 18
- ands r0, r6
- cmp r0, 0
- bne _0801BDB4
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r1, r4, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- bne _0801BDB4
- bl sub_801B928
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0801BDB4
- cmp r2, 0x2
- bne _0801BDA4
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- b _0801BFF4
- .align 2, 0
-_0801BDA0: .4byte 0xff7fffff
-_0801BDA4:
- ldr r0, _0801BDB0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _0801BFF4
- .align 2, 0
-_0801BDB0: .4byte gBattleMoveFlags
-_0801BDB4:
- ldr r2, _0801BE18 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 18
- orrs r0, r1
- str r0, [r2]
- ldr r2, _0801BE1C @ =gProtectStructs
- ldr r1, _0801BE20 @ =gBankTarget
- ldrb r3, [r1]
- lsls r0, r3, 4
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 27
- mov r8, r1
- mov r9, r2
- cmp r0, 0
- bge _0801BE3C
- ldr r2, _0801BE24 @ =gBattleMoves
- ldr r0, _0801BE28 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801BE3C
- ldr r0, _0801BE2C @ =gBankAttacker
- ldrb r0, [r0]
- ldr r2, _0801BE30 @ =0x00000115
- adds r1, r3, 0
- bl sub_80151D4
- mov r0, r8
- ldrb r1, [r0]
- lsls r1, 4
- add r1, r9
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801BE34 @ =gBattlescriptCurrInstr
- ldr r0, _0801BE38 @ =BattleScript_MagicCoatBounce
- b _0801BFF2
- .align 2, 0
-_0801BE18: .4byte gHitMarker
-_0801BE1C: .4byte gProtectStructs
-_0801BE20: .4byte gBankTarget
-_0801BE24: .4byte gBattleMoves
-_0801BE28: .4byte gCurrentMove
-_0801BE2C: .4byte gBankAttacker
-_0801BE30: .4byte 0x00000115
-_0801BE34: .4byte gBattlescriptCurrInstr
-_0801BE38: .4byte BattleScript_MagicCoatBounce
-_0801BE3C:
- movs r2, 0
- ldr r0, _0801BEB8 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r2, r0
- bge _0801BE7E
- ldr r6, _0801BEBC @ =gProtectStructs
- ldr r1, _0801BEC0 @ =gBattleMoves
- mov r12, r1
- adds r5, r0, 0
- ldr r7, _0801BEC4 @ =gTurnOrder
-_0801BE50:
- adds r4, r2, r7
- ldrb r3, [r4]
- lsls r0, r3, 4
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _0801BE78
- ldr r0, _0801BEC8 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r1, [r0, 0x8]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0801BE78
- b _0801BFA4
-_0801BE78:
- adds r2, 0x1
- cmp r2, r5
- blt _0801BE50
-_0801BE7E:
- ldr r0, _0801BECC @ =gSpecialStatuses
- mov r1, r8
- ldrb r2, [r1]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r3, [r1]
- lsls r0, r3, 30
- cmp r0, 0
- bge _0801BEDC
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- strb r0, [r1]
- ldr r4, _0801BED0 @ =gLastUsedAbility
- movs r0, 0x1F
- strb r0, [r4]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801BED4 @ =gBattlescriptCurrInstr
- ldr r0, _0801BED8 @ =BattleScript_TookAttack
- str r0, [r1]
- mov r2, r8
- ldrb r0, [r2]
- ldrb r1, [r4]
- bl RecordAbilityBattle
- b _0801BFF4
- .align 2, 0
-_0801BEB8: .4byte gNoOfAllBanks
-_0801BEBC: .4byte gProtectStructs
-_0801BEC0: .4byte gBattleMoves
-_0801BEC4: .4byte gTurnOrder
-_0801BEC8: .4byte gCurrentMove
-_0801BECC: .4byte gSpecialStatuses
-_0801BED0: .4byte gLastUsedAbility
-_0801BED4: .4byte gBattlescriptCurrInstr
-_0801BED8: .4byte BattleScript_TookAttack
-_0801BEDC:
- lsls r0, r2, 4
- add r0, r9
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- bne _0801BEEA
- b _0801BFEC
-_0801BEEA:
- ldr r1, _0801BF80 @ =gBattleMoves
- ldr r2, _0801BF84 @ =gCurrentMove
- ldrh r3, [r2]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x2
- ands r0, r1
- adds r4, r2, 0
- cmp r0, 0
- beq _0801BFEC
- cmp r3, 0xAE
- bne _0801BF28
- ldr r2, _0801BF88 @ =gBattleMons
- ldr r0, _0801BF8C @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _0801BF28
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _0801BFEC
-_0801BF28:
- ldrh r0, [r4]
- bl sub_8028350
- lsls r0, 24
- cmp r0, 0
- beq _0801BF4E
- ldr r1, _0801BF88 @ =gBattleMons
- ldr r0, _0801BF8C @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- beq _0801BFEC
-_0801BF4E:
- ldr r0, _0801BF8C @ =gBankAttacker
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- ldr r2, _0801BF90 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801BF94 @ =gMoveHitWith
- ldr r3, _0801BF98 @ =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801BF9C @ =gUnknown_02024C44
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r1, _0801BFA0 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _0801BFEC
- .align 2, 0
-_0801BF80: .4byte gBattleMoves
-_0801BF84: .4byte gCurrentMove
-_0801BF88: .4byte gBattleMons
-_0801BF8C: .4byte gBankAttacker
-_0801BF90: .4byte gBattleMoveFlags
-_0801BF94: .4byte gMoveHitWith
-_0801BF98: .4byte gBankTarget
-_0801BF9C: .4byte gUnknown_02024C44
-_0801BFA0: .4byte gBattleCommunication
-_0801BFA4:
- ldr r0, _0801BFD4 @ =gBankAttacker
- ldrb r0, [r0]
- ldr r2, _0801BFD8 @ =0x00000121
- adds r1, r3, 0
- bl sub_80151D4
- ldrb r1, [r4]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r0, _0801BFDC @ =0x02000000
- ldrb r1, [r4]
- ldr r2, _0801BFE0 @ =0x00016003
- adds r0, r2
- strb r1, [r0]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801BFE4 @ =gBattlescriptCurrInstr
- ldr r0, _0801BFE8 @ =BattleScript_SnatchedMove
- b _0801BFF2
- .align 2, 0
-_0801BFD4: .4byte gBankAttacker
-_0801BFD8: .4byte 0x00000121
-_0801BFDC: .4byte 0x02000000
-_0801BFE0: .4byte 0x00016003
-_0801BFE4: .4byte gBattlescriptCurrInstr
-_0801BFE8: .4byte BattleScript_SnatchedMove
-_0801BFEC:
- ldr r1, _0801C004 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_0801BFF2:
- str r0, [r1]
-_0801BFF4:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C004: .4byte gBattlescriptCurrInstr
- thumb_func_end atk00_attackcanceler
-
- thumb_func_start mcmd_jump_if_move_not_executed
-mcmd_jump_if_move_not_executed: @ 801C008
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r1, _0801C054 @ =gBattlescriptCurrInstr
- ldr r5, [r1]
- adds r4, r5, r0
- ldr r0, _0801C058 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0801C068
- ldr r1, _0801C05C @ =gMoveHitWith
- ldr r3, _0801C060 @ =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801C064 @ =gUnknown_02024C44
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldrb r4, [r5, 0x1]
- ldrb r0, [r5, 0x2]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r5, 0x3]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r5, 0x4]
- lsls r0, 24
- orrs r4, r0
- b _0801C082
- .align 2, 0
-_0801C054: .4byte gBattlescriptCurrInstr
-_0801C058: .4byte gBattleMoveFlags
-_0801C05C: .4byte gMoveHitWith
-_0801C060: .4byte gBankTarget
-_0801C064: .4byte gUnknown_02024C44
-_0801C068:
- bl b_feature_update_destiny_bond
- ldr r0, _0801C090 @ =gBankTarget
- ldrb r1, [r0]
- str r6, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801C086
-_0801C082:
- ldr r0, _0801C094 @ =gBattlescriptCurrInstr
- str r4, [r0]
-_0801C086:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C090: .4byte gBankTarget
-_0801C094: .4byte gBattlescriptCurrInstr
- thumb_func_end mcmd_jump_if_move_not_executed
-
- thumb_func_start atk40_jump_if_move_affected_by_protect
-atk40_jump_if_move_affected_by_protect: @ 801C098
- push {lr}
- ldr r1, _0801C0E0 @ =gProtectStructs
- ldr r0, _0801C0E4 @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0801C0F8
- ldr r2, _0801C0E8 @ =gBattleMoves
- ldr r0, _0801C0EC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801C0F8
- ldr r2, _0801C0F0 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x5
- movs r1, 0
- bl mcmd_jump_if_move_not_executed
- ldr r1, _0801C0F4 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _0801C100
- .align 2, 0
-_0801C0E0: .4byte gProtectStructs
-_0801C0E4: .4byte gBankTarget
-_0801C0E8: .4byte gBattleMoves
-_0801C0EC: .4byte gCurrentMove
-_0801C0F0: .4byte gBattleMoveFlags
-_0801C0F4: .4byte gBattleCommunication
-_0801C0F8:
- ldr r1, _0801C104 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0801C100:
- pop {r0}
- bx r0
- .align 2, 0
-_0801C104: .4byte gBattlescriptCurrInstr
- thumb_func_end atk40_jump_if_move_affected_by_protect
-
- thumb_func_start sub_801C108
-sub_801C108: @ 801C108
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r4, 0
- ldr r1, _0801C15C @ =gProtectStructs
- ldr r0, _0801C160 @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0801C154
- ldr r2, _0801C164 @ =gBattleMoves
- ldr r0, _0801C168 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801C154
- ldr r2, _0801C16C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x7
- adds r1, r3, 0
- bl mcmd_jump_if_move_not_executed
- ldr r1, _0801C170 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- movs r4, 0x1
-_0801C154:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0801C15C: .4byte gProtectStructs
-_0801C160: .4byte gBankTarget
-_0801C164: .4byte gBattleMoves
-_0801C168: .4byte gCurrentMove
-_0801C16C: .4byte gBattleMoveFlags
-_0801C170: .4byte gBattleCommunication
- thumb_func_end sub_801C108
-
- thumb_func_start sub_801C174
-sub_801C174: @ 801C174
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r2, _0801C1D4 @ =gStatuses3
- ldr r3, _0801C1D8 @ =gBankTarget
- ldrb r4, [r3]
- lsls r0, r4, 2
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x18
- ands r1, r0
- adds r6, r2, 0
- cmp r1, 0
- beq _0801C1A6
- ldr r1, _0801C1DC @ =gDisableStructs
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, _0801C1E0 @ =gBankAttacker
- ldrb r0, [r0, 0x15]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0801C290
-_0801C1A6:
- ldr r0, _0801C1E4 @ =gHitMarker
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 9
- ands r1, r2
- adds r2, r0, 0
- cmp r1, 0
- bne _0801C1EC
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801C1EC
-_0801C1C6:
- ldr r0, _0801C1E8 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _0801C290
- .align 2, 0
-_0801C1D4: .4byte gStatuses3
-_0801C1D8: .4byte gBankTarget
-_0801C1DC: .4byte gDisableStructs
-_0801C1E0: .4byte gBankAttacker
-_0801C1E4: .4byte gHitMarker
-_0801C1E8: .4byte gBattleMoveFlags
-_0801C1EC:
- ldr r0, [r2]
- ldr r1, _0801C29C @ =0xfffeffff
- ands r0, r1
- str r0, [r2]
- movs r1, 0x80
- lsls r1, 10
- ands r0, r1
- cmp r0, 0
- bne _0801C20E
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0801C1C6
-_0801C20E:
- ldr r0, [r2]
- ldr r1, _0801C2A0 @ =0xfffdffff
- ands r0, r1
- str r0, [r2]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- bne _0801C22E
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ands r0, r1
- cmp r0, 0
- bne _0801C1C6
-_0801C22E:
- ldr r0, [r2]
- ldr r1, _0801C2A4 @ =0xfffbffff
- ands r0, r1
- str r0, [r2]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r5, 1
- cmp r0, 0
- bne _0801C27E
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801C27E
- ldr r0, _0801C2A8 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0801C27E
- ldr r0, _0801C2AC @ =gBattleMoves
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x98
- beq _0801C290
-_0801C27E:
- ldr r1, _0801C2AC @ =gBattleMoves
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _0801C290
- cmp r0, 0x4E
- bne _0801C2B0
-_0801C290:
- movs r0, 0x7
- adds r1, r5, 0
- bl mcmd_jump_if_move_not_executed
- movs r0, 0x1
- b _0801C2B2
- .align 2, 0
-_0801C29C: .4byte 0xfffeffff
-_0801C2A0: .4byte 0xfffdffff
-_0801C2A4: .4byte 0xfffbffff
-_0801C2A8: .4byte gBattleWeather
-_0801C2AC: .4byte gBattleMoves
-_0801C2B0:
- movs r0, 0
-_0801C2B2:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_801C174
-
- thumb_func_start atk01_accuracycheck
-atk01_accuracycheck: @ 801C2BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _0801C314 @ =gBattlescriptCurrInstr
- ldr r5, [r0]
- ldrb r6, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- lsls r1, 8
- orrs r6, r1
- adds r1, r6, 0x2
- lsls r1, 16
- lsrs r1, 16
- adds r7, r0, 0
- cmp r1, 0x1
- bhi _0801C378
- ldr r2, _0801C318 @ =gStatuses3
- ldr r3, _0801C31C @ =gBankTarget
- ldrb r4, [r3]
- lsls r0, r4, 2
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x18
- ands r1, r0
- cmp r1, 0
- beq _0801C32C
- ldr r0, _0801C320 @ =0x0000ffff
- cmp r6, r0
- bne _0801C32C
- ldr r1, _0801C324 @ =gDisableStructs
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, _0801C328 @ =gBankAttacker
- ldrb r0, [r0, 0x15]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0801C32C
- adds r0, r5, 0x7
- str r0, [r7]
- b _0801C632
- .align 2, 0
-_0801C314: .4byte gBattlescriptCurrInstr
-_0801C318: .4byte gStatuses3
-_0801C31C: .4byte gBankTarget
-_0801C320: .4byte 0x0000ffff
-_0801C324: .4byte gDisableStructs
-_0801C328: .4byte gBankAttacker
-_0801C32C:
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ldr r1, _0801C358 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _0801C35C
- ldr r2, [r7]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r7]
- b _0801C632
- .align 2, 0
-_0801C358: .4byte 0x000400c0
-_0801C35C:
- movs r0, 0
- bl sub_801C108
- lsls r0, 24
- cmp r0, 0
- beq _0801C36A
- b _0801C632
-_0801C36A:
- ldr r1, _0801C374 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x7
- str r0, [r1]
- b _0801C632
- .align 2, 0
-_0801C374: .4byte gBattlescriptCurrInstr
-_0801C378:
- cmp r6, 0
- bne _0801C380
- ldr r0, _0801C398 @ =gCurrentMove
- ldrh r6, [r0]
-_0801C380:
- ldr r0, _0801C39C @ =0x02000000
- ldr r1, _0801C3A0 @ =0x0001601c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801C3A4
- movs r2, 0x3F
- mov r10, r2
- mov r3, r10
- ands r3, r0
- mov r10, r3
- b _0801C3B2
- .align 2, 0
-_0801C398: .4byte gCurrentMove
-_0801C39C: .4byte 0x02000000
-_0801C3A0: .4byte 0x0001601c
-_0801C3A4:
- ldr r1, _0801C3F8 @ =gBattleMoves
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- mov r10, r0
-_0801C3B2:
- adds r0, r6, 0
- bl sub_801C108
- lsls r0, 24
- cmp r0, 0
- beq _0801C3C0
- b _0801C632
-_0801C3C0:
- adds r0, r6, 0
- bl sub_801C174
- lsls r0, 24
- cmp r0, 0
- beq _0801C3CE
- b _0801C632
-_0801C3CE:
- ldr r3, _0801C3FC @ =gBattleMons
- ldr r0, _0801C400 @ =gBankTarget
- ldrb r0, [r0]
- movs r2, 0x58
- adds r4, r0, 0
- muls r4, r2
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r4, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801C408
- ldr r0, _0801C404 @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- ldrb r5, [r0, 0x1E]
- b _0801C41E
- .align 2, 0
-_0801C3F8: .4byte gBattleMoves
-_0801C3FC: .4byte gBattleMons
-_0801C400: .4byte gBankTarget
-_0801C404: .4byte gBankAttacker
-_0801C408:
- ldr r0, _0801C56C @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- ldrb r0, [r0, 0x1E]
- adds r0, 0x6
- adds r1, r4, r3
- ldrb r1, [r1, 0x1F]
- subs r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
-_0801C41E:
- lsls r0, r5, 24
- cmp r0, 0
- bge _0801C426
- movs r5, 0
-_0801C426:
- lsls r0, r5, 24
- asrs r0, 24
- cmp r0, 0xC
- ble _0801C430
- movs r5, 0xC
-_0801C430:
- ldr r1, _0801C570 @ =gBattleMoves
- lsls r4, r6, 1
- adds r0, r4, r6
- lsls r0, 2
- adds r7, r0, r1
- ldrb r0, [r7, 0x3]
- mov r8, r0
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp, 0x4]
- cmp r0, 0
- bne _0801C482
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801C482
- ldr r0, _0801C574 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0801C482
- ldrb r0, [r7]
- cmp r0, 0x98
- bne _0801C482
- movs r1, 0x32
- mov r8, r1
-_0801C482:
- ldr r1, _0801C578 @ =gAccuracyStageRatios
- lsls r0, r5, 24
- asrs r0, 22
- adds r0, r1
- ldrb r1, [r0]
- mov r4, r8
- muls r4, r1
- ldrb r1, [r0, 0x1]
- adds r0, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r7, _0801C57C @ =gBattleMons
- ldr r0, _0801C56C @ =gBankAttacker
- ldrb r0, [r0]
- movs r5, 0x58
- muls r0, r5
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0xE
- bne _0801C4C0
- lsls r0, r4, 6
- adds r0, r4
- lsls r0, 1
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801C4C0:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0801C518
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801C518
- ldr r0, _0801C580 @ =gBankTarget
- ldrb r0, [r0]
- muls r0, r5
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _0801C518
- ldr r0, _0801C574 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _0801C518
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801C518:
- ldr r2, _0801C57C @ =gBattleMons
- ldr r0, _0801C56C @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- mov r9, r2
- cmp r0, 0x37
- bne _0801C544
- mov r2, r10
- cmp r2, 0x8
- bhi _0801C544
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801C544:
- ldr r3, _0801C580 @ =gBankTarget
- mov r8, r3
- ldrb r2, [r3]
- movs r7, 0x58
- adds r0, r2, 0
- muls r0, r7
- mov r3, r9
- adds r1, r0, r3
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0801C588
- ldr r1, _0801C584 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x7]
- ldrb r2, [r0, 0x1A]
- b _0801C5A4
- .align 2, 0
-_0801C56C: .4byte gBankAttacker
-_0801C570: .4byte gBattleMoves
-_0801C574: .4byte gBattleWeather
-_0801C578: .4byte gAccuracyStageRatios
-_0801C57C: .4byte gBattleMons
-_0801C580: .4byte gBankTarget
-_0801C584: .4byte gEnigmaBerries
-_0801C588:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r8
- ldrb r0, [r1]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r2, r0, 24
-_0801C5A4:
- ldr r0, _0801C608 @ =gStringBank
- ldr r1, _0801C60C @ =gBankTarget
- ldrb r1, [r1]
- strb r1, [r0]
- cmp r5, 0x16
- bne _0801C5C0
- movs r0, 0x64
- subs r0, r2
- muls r0, r4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801C5C0:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, 0x1
- cmp r0, r4
- ble _0801C62A
- ldr r2, _0801C610 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _0801C614 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0801C620
- ldr r1, _0801C618 @ =gBattleMoves
- ldr r2, [sp, 0x4]
- adds r0, r2, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x6]
- cmp r0, 0x8
- beq _0801C602
- cmp r0, 0x20
- bne _0801C620
-_0801C602:
- ldr r1, _0801C61C @ =gBattleCommunication
- movs r0, 0x2
- b _0801C624
- .align 2, 0
-_0801C608: .4byte gStringBank
-_0801C60C: .4byte gBankTarget
-_0801C610: .4byte gBattleMoveFlags
-_0801C614: .4byte gBattleTypeFlags
-_0801C618: .4byte gBattleMoves
-_0801C61C: .4byte gBattleCommunication
-_0801C620:
- ldr r1, _0801C644 @ =gBattleCommunication
- movs r0, 0
-_0801C624:
- strb r0, [r1, 0x6]
- bl b_wonderguard_and_levitate
-_0801C62A:
- movs r0, 0x7
- adds r1, r6, 0
- bl mcmd_jump_if_move_not_executed
-_0801C632:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C644: .4byte gBattleCommunication
- thumb_func_end atk01_accuracycheck
-
- thumb_func_start atk02_attackstring
-atk02_attackstring: @ 801C648
- push {r4,r5,lr}
- ldr r0, _0801C688 @ =gBattleExecBuffer
- ldr r5, [r0]
- cmp r5, 0
- bne _0801C680
- ldr r4, _0801C68C @ =gHitMarker
- ldr r0, [r4]
- movs r1, 0xC0
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- bne _0801C674
- ldr r0, _0801C690 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x4
- bl PrepareStringBattle
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 3
- orrs r0, r1
- str r0, [r4]
-_0801C674:
- ldr r0, _0801C694 @ =gBattlescriptCurrInstr
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- ldr r0, _0801C698 @ =gBattleCommunication
- strb r5, [r0, 0x7]
-_0801C680:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C688: .4byte gBattleExecBuffer
-_0801C68C: .4byte gHitMarker
-_0801C690: .4byte gBankAttacker
-_0801C694: .4byte gBattlescriptCurrInstr
-_0801C698: .4byte gBattleCommunication
- thumb_func_end atk02_attackstring
-
- thumb_func_start atk03_ppreduce
-atk03_ppreduce: @ 801C69C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r6, 0x1
- ldr r0, _0801C6EC @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0801C6B4
- b _0801C84E
-_0801C6B4:
- ldr r1, _0801C6F0 @ =gSpecialStatuses
- ldr r2, _0801C6F4 @ =gBankAttacker
- ldrb r3, [r2]
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r4, r0, 31
- mov r9, r2
- cmp r4, 0
- bne _0801C756
- ldr r2, _0801C6F8 @ =gBattleMoves
- ldr r0, _0801C6FC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x6]
- cmp r0, 0x20
- beq _0801C706
- cmp r0, 0x20
- bgt _0801C700
- cmp r0, 0x8
- beq _0801C71C
- b _0801C736
- .align 2, 0
-_0801C6EC: .4byte gBattleExecBuffer
-_0801C6F0: .4byte gSpecialStatuses
-_0801C6F4: .4byte gBankAttacker
-_0801C6F8: .4byte gBattleMoves
-_0801C6FC: .4byte gCurrentMove
-_0801C700:
- cmp r0, 0x40
- beq _0801C71C
- b _0801C736
-_0801C706:
- str r4, [sp]
- movs r0, 0x12
- adds r1, r3, 0
- movs r2, 0x2E
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0x1
- b _0801C756
-_0801C71C:
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x10
- movs r2, 0x2E
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0
- b _0801C756
-_0801C736:
- ldr r1, _0801C7B8 @ =gBankTarget
- mov r2, r9
- ldrb r0, [r2]
- ldrb r7, [r1]
- cmp r0, r7
- beq _0801C756
- ldr r2, _0801C7BC @ =gBattleMons
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2E
- bne _0801C756
- adds r6, 0x1
-_0801C756:
- ldr r0, _0801C7C0 @ =gHitMarker
- ldr r4, [r0]
- movs r0, 0xA0
- lsls r0, 4
- ands r4, r0
- cmp r4, 0
- bne _0801C83C
- ldr r2, _0801C7BC @ =gBattleMons
- ldr r3, _0801C7C4 @ =gCurrMovePos
- ldr r1, _0801C7C8 @ =gBankAttacker
- ldrb r5, [r1]
- movs r0, 0x58
- mov r8, r0
- mov r0, r8
- muls r0, r5
- ldrb r7, [r3]
- adds r0, r7
- movs r7, 0x24
- adds r7, r2
- mov r12, r7
- add r0, r12
- ldrb r0, [r0]
- mov r9, r1
- mov r10, r2
- adds r7, r3, 0
- cmp r0, 0
- beq _0801C83C
- ldr r0, _0801C7CC @ =gProtectStructs
- lsls r1, r5, 4
- adds r1, r0
- ldrb r0, [r1, 0x2]
- movs r2, 0x8
- orrs r0, r2
- strb r0, [r1, 0x2]
- mov r1, r9
- ldrb r0, [r1]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldrb r1, [r7]
- adds r0, r1
- mov r1, r12
- adds r2, r0, r1
- ldrb r0, [r2]
- cmp r0, r6
- ble _0801C7D0
- subs r0, r6
- strb r0, [r2]
- b _0801C7D2
- .align 2, 0
-_0801C7B8: .4byte gBankTarget
-_0801C7BC: .4byte gBattleMons
-_0801C7C0: .4byte gHitMarker
-_0801C7C4: .4byte gCurrMovePos
-_0801C7C8: .4byte gBankAttacker
-_0801C7CC: .4byte gProtectStructs
-_0801C7D0:
- strb r4, [r2]
-_0801C7D2:
- mov r2, r9
- ldrb r3, [r2]
- movs r4, 0x58
- adds r0, r3, 0
- muls r0, r4
- mov r1, r10
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0801C83C
- ldr r1, _0801C860 @ =gDisableStructs
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, _0801C864 @ =gBitTable
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0801C83C
- ldr r0, _0801C868 @ =gActiveBank
- strb r3, [r0]
- ldrb r1, [r7]
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- mov r2, r9
- ldrb r0, [r2]
- muls r0, r4
- mov r2, r10
- adds r2, 0x24
- adds r0, r2
- ldrb r7, [r7]
- adds r0, r7
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- mov r7, r9
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
-_0801C83C:
- ldr r2, _0801C86C @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0801C870 @ =0xfffff7ff
- ands r0, r1
- str r0, [r2]
- ldr r1, _0801C874 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801C84E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C860: .4byte gDisableStructs
-_0801C864: .4byte gBitTable
-_0801C868: .4byte gActiveBank
-_0801C86C: .4byte gHitMarker
-_0801C870: .4byte 0xfffff7ff
-_0801C874: .4byte gBattlescriptCurrInstr
- thumb_func_end atk03_ppreduce
-
- thumb_func_start atk04_critcalc
-atk04_critcalc: @ 801C878
- push {r4-r7,lr}
- ldr r1, _0801C89C @ =gBattleMons
- ldr r0, _0801C8A0 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- cmp r0, 0xAF
- bne _0801C8A8
- ldr r1, _0801C8A4 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r6, [r0, 0x7]
- b _0801C8B0
- .align 2, 0
-_0801C89C: .4byte gBattleMons
-_0801C8A0: .4byte gBankAttacker
-_0801C8A4: .4byte gEnigmaBerries
-_0801C8A8:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r6, r0, 24
-_0801C8B0:
- ldr r1, _0801C93C @ =gStringBank
- ldr r3, _0801C940 @ =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r4, _0801C944 @ =gBattleMons
- ldrb r1, [r3]
- movs r0, 0x58
- adds r7, r1, 0
- muls r7, r0
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r7, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- negs r0, r0
- asrs r5, r0, 31
- movs r0, 0x2
- ands r5, r0
- ldr r2, _0801C948 @ =gBattleMoves
- ldr r0, _0801C94C @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- mov r12, r3
- cmp r1, 0x2B
- bne _0801C8F0
- adds r5, 0x1
-_0801C8F0:
- adds r0, r5, 0
- cmp r1, 0x4B
- bne _0801C8F8
- adds r0, 0x1
-_0801C8F8:
- cmp r1, 0xC8
- bne _0801C8FE
- adds r0, 0x1
-_0801C8FE:
- adds r2, r0, 0
- cmp r1, 0xD1
- bne _0801C906
- adds r2, 0x1
-_0801C906:
- movs r1, 0
- cmp r6, 0x3F
- bne _0801C916
- adds r0, r7, r4
- ldrh r0, [r0]
- cmp r0, 0x71
- bne _0801C916
- movs r1, 0x1
-_0801C916:
- lsls r5, r1, 1
- movs r3, 0
- cmp r6, 0x42
- bne _0801C930
- mov r0, r12
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x53
- bne _0801C930
- movs r3, 0x1
-_0801C930:
- lsls r1, r3, 1
- cmp r6, 0x29
- bne _0801C950
- adds r0, r5, 0x1
- adds r0, r2, r0
- b _0801C952
- .align 2, 0
-_0801C93C: .4byte gStringBank
-_0801C940: .4byte gBankAttacker
-_0801C944: .4byte gBattleMons
-_0801C948: .4byte gBattleMoves
-_0801C94C: .4byte gCurrentMove
-_0801C950:
- adds r0, r2, r5
-_0801C952:
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- cmp r5, 0x4
- bls _0801C960
- movs r5, 0x4
-_0801C960:
- ldr r0, _0801C9BC @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- ldrb r4, [r0]
- cmp r4, 0x4
- beq _0801C9D0
- cmp r4, 0x4B
- beq _0801C9D0
- ldr r1, _0801C9C0 @ =gStatuses3
- mov r2, r12
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- bne _0801C9D0
- ldr r0, _0801C9C4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x84
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _0801C9D0
- bl Random
- ldr r2, _0801C9C8 @ =gCriticalHitChance
- lsls r1, r5, 1
- adds r1, r2
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _0801C9D0
- ldr r1, _0801C9CC @ =gCritMultiplier
- movs r0, 0x2
- b _0801C9D4
- .align 2, 0
-_0801C9BC: .4byte gBankTarget
-_0801C9C0: .4byte gStatuses3
-_0801C9C4: .4byte gBattleTypeFlags
-_0801C9C8: .4byte gCriticalHitChance
-_0801C9CC: .4byte gCritMultiplier
-_0801C9D0:
- ldr r1, _0801C9E4 @ =gCritMultiplier
- movs r0, 0x1
-_0801C9D4:
- strb r0, [r1]
- ldr r1, _0801C9E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C9E4: .4byte gCritMultiplier
-_0801C9E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk04_critcalc
-
- thumb_func_start atk05_damagecalc1
-atk05_damagecalc1: @ 801C9EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- ldr r4, _0801CABC @ =gSideAffecting
- ldr r6, _0801CAC0 @ =gBankTarget
- ldrb r0, [r6]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldr r0, _0801CAC4 @ =gBankAttacker
- mov r8, r0
- ldrb r0, [r0]
- movs r4, 0x58
- muls r0, r4
- ldr r2, _0801CAC8 @ =gBattleMons
- adds r0, r2
- ldrb r1, [r6]
- muls r1, r4
- adds r1, r2
- ldr r2, _0801CACC @ =gCurrentMove
- mov r9, r2
- ldrh r2, [r2]
- ldr r4, _0801CAD0 @ =gDynamicBasePower
- ldrh r4, [r4]
- str r4, [sp]
- ldr r5, _0801CAD4 @ =0x02000000
- ldr r7, _0801CAD8 @ =0x0001601c
- adds r4, r5, r7
- ldrb r4, [r4]
- str r4, [sp, 0x4]
- mov r7, r8
- ldrb r4, [r7]
- str r4, [sp, 0x8]
- ldrb r4, [r6]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- ldr r4, _0801CADC @ =gBattleMoveDamage
- ldr r1, _0801CAE0 @ =gCritMultiplier
- ldrb r1, [r1]
- muls r1, r0
- ldr r0, _0801CAE4 @ =0x0001601f
- adds r5, r0
- ldrb r0, [r5]
- adds r3, r1, 0
- muls r3, r0
- str r3, [r4]
- ldr r1, _0801CAE8 @ =gStatuses3
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _0801CA82
- ldr r2, _0801CAEC @ =gBattleMoves
- mov r7, r9
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0xD
- bne _0801CA82
- lsls r0, r3, 1
- str r0, [r4]
-_0801CA82:
- ldr r1, _0801CAF0 @ =gProtectStructs
- ldr r0, _0801CAC4 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _0801CAA4
- ldr r4, _0801CADC @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0801CAA4:
- ldr r1, _0801CAF4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801CABC: .4byte gSideAffecting
-_0801CAC0: .4byte gBankTarget
-_0801CAC4: .4byte gBankAttacker
-_0801CAC8: .4byte gBattleMons
-_0801CACC: .4byte gCurrentMove
-_0801CAD0: .4byte gDynamicBasePower
-_0801CAD4: .4byte 0x02000000
-_0801CAD8: .4byte 0x0001601c
-_0801CADC: .4byte gBattleMoveDamage
-_0801CAE0: .4byte gCritMultiplier
-_0801CAE4: .4byte 0x0001601f
-_0801CAE8: .4byte gStatuses3
-_0801CAEC: .4byte gBattleMoves
-_0801CAF0: .4byte gProtectStructs
-_0801CAF4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk05_damagecalc1
-
- thumb_func_start AI_CalcDmg
-AI_CalcDmg: @ 801CAF8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- adds r5, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _0801CBBC @ =gSideAffecting
- adds r0, r5, 0
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- movs r1, 0x58
- adds r0, r7, 0
- muls r0, r1
- ldr r2, _0801CBC0 @ =gBattleMons
- adds r0, r2
- muls r1, r5
- adds r1, r2
- ldr r2, _0801CBC4 @ =gCurrentMove
- mov r9, r2
- ldrh r2, [r2]
- ldr r4, _0801CBC8 @ =gDynamicBasePower
- mov r8, r4
- ldrh r4, [r4]
- str r4, [sp]
- ldr r6, _0801CBCC @ =0x02000000
- ldr r4, _0801CBD0 @ =0x0001601c
- ldrb r4, [r4, r6]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- str r5, [sp, 0xC]
- bl CalculateBaseDamage
- ldr r4, _0801CBD4 @ =gBattleMoveDamage
- movs r1, 0
- mov r2, r8
- strh r1, [r2]
- ldr r1, _0801CBD8 @ =gCritMultiplier
- ldrb r1, [r1]
- muls r1, r0
- ldr r0, _0801CBDC @ =0x0001601f
- adds r6, r0
- ldrb r0, [r6]
- adds r3, r1, 0
- muls r3, r0
- str r3, [r4]
- ldr r1, _0801CBE0 @ =gStatuses3
- lsls r0, r7, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _0801CB8E
- ldr r2, _0801CBE4 @ =gBattleMoves
- mov r6, r9
- ldrh r1, [r6]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0xD
- bne _0801CB8E
- lsls r0, r3, 1
- str r0, [r4]
-_0801CB8E:
- ldr r0, _0801CBE8 @ =gProtectStructs
- lsls r1, r7, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 28
- cmp r0, 0
- bge _0801CBAC
- ldr r4, _0801CBD4 @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0801CBAC:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801CBBC: .4byte gSideAffecting
-_0801CBC0: .4byte gBattleMons
-_0801CBC4: .4byte gCurrentMove
-_0801CBC8: .4byte gDynamicBasePower
-_0801CBCC: .4byte 0x02000000
-_0801CBD0: .4byte 0x0001601c
-_0801CBD4: .4byte gBattleMoveDamage
-_0801CBD8: .4byte gCritMultiplier
-_0801CBDC: .4byte 0x0001601f
-_0801CBE0: .4byte gStatuses3
-_0801CBE4: .4byte gBattleMoves
-_0801CBE8: .4byte gProtectStructs
- thumb_func_end AI_CalcDmg
-
- thumb_func_start battle_attack_damage_modulate_by_effectivity
-battle_attack_damage_modulate_by_effectivity: @ 801CBEC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _0801CC1C @ =gBattleMoveDamage
- ldr r0, [r5]
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _0801CC0C
- cmp r4, 0
- beq _0801CC0C
- movs r0, 0x1
- str r0, [r5]
-_0801CC0C:
- cmp r4, 0x5
- beq _0801CC3C
- cmp r4, 0x5
- bgt _0801CC20
- cmp r4, 0
- beq _0801CC26
- b _0801CCBE
- .align 2, 0
-_0801CC1C: .4byte gBattleMoveDamage
-_0801CC20:
- cmp r4, 0x14
- beq _0801CC7C
- b _0801CCBE
-_0801CC26:
- ldr r2, _0801CC38 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- movs r1, 0xFB
- ands r0, r1
- movs r1, 0xFD
- ands r0, r1
- b _0801CCBC
- .align 2, 0
-_0801CC38: .4byte gBattleMoveFlags
-_0801CC3C:
- ldr r2, _0801CC6C @ =gBattleMoves
- ldr r0, _0801CC70 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801CCBE
- ldr r2, _0801CC74 @ =gBattleMoveFlags
- ldrb r1, [r2]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801CCBE
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801CC78
- movs r0, 0xFD
- ands r0, r1
- b _0801CCBC
- .align 2, 0
-_0801CC6C: .4byte gBattleMoves
-_0801CC70: .4byte gCurrentMove
-_0801CC74: .4byte gBattleMoveFlags
-_0801CC78:
- movs r0, 0x4
- b _0801CCBA
-_0801CC7C:
- ldr r2, _0801CCAC @ =gBattleMoves
- ldr r0, _0801CCB0 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801CCBE
- ldr r2, _0801CCB4 @ =gBattleMoveFlags
- ldrb r1, [r2]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801CCBE
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801CCB8
- movs r0, 0xFB
- ands r0, r1
- b _0801CCBC
- .align 2, 0
-_0801CCAC: .4byte gBattleMoves
-_0801CCB0: .4byte gCurrentMove
-_0801CCB4: .4byte gBattleMoveFlags
-_0801CCB8:
- movs r0, 0x2
-_0801CCBA:
- orrs r0, r1
-_0801CCBC:
- strb r0, [r2]
-_0801CCBE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end battle_attack_damage_modulate_by_effectivity
-
- thumb_func_start atk06_typecalc
-atk06_typecalc: @ 801CCC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r3, 0
- ldr r1, _0801CCF0 @ =gCurrentMove
- ldrh r0, [r1]
- cmp r0, 0xA5
- bne _0801CCD8
- b _0801CEF4
-_0801CCD8:
- ldr r0, _0801CCF4 @ =0x02000000
- ldr r2, _0801CCF8 @ =0x0001601c
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801CCFC
- movs r1, 0x3F
- mov r8, r1
- mov r2, r8
- ands r2, r0
- mov r8, r2
- b _0801CD0C
- .align 2, 0
-_0801CCF0: .4byte gCurrentMove
-_0801CCF4: .4byte 0x02000000
-_0801CCF8: .4byte 0x0001601c
-_0801CCFC:
- ldr r2, _0801CD94 @ =gBattleMoves
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r8, r0
-_0801CD0C:
- ldr r2, _0801CD98 @ =gBattleMons
- ldr r0, _0801CD9C @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- adds r5, r2, 0
- cmp r0, r8
- beq _0801CD2E
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r8
- bne _0801CD44
-_0801CD2E:
- ldr r4, _0801CDA0 @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- str r0, [r4]
- movs r1, 0xA
- str r3, [sp, 0x4]
- bl __divsi3
- str r0, [r4]
- ldr r3, [sp, 0x4]
-_0801CD44:
- ldr r2, _0801CDA4 @ =gBankTarget
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- adds r4, r2, 0
- cmp r0, 0x1A
- bne _0801CDBC
- mov r1, r8
- cmp r1, 0x4
- bne _0801CDBC
- ldr r3, _0801CDA8 @ =gLastUsedAbility
- strb r0, [r3]
- ldr r2, _0801CDAC @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x9
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801CDB0 @ =gMoveHitWith
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801CDB4 @ =gUnknown_02024C44
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r0, _0801CDB8 @ =gBattleCommunication
- mov r2, r8
- strb r2, [r0, 0x6]
- ldrb r0, [r4]
- ldrb r1, [r3]
- bl RecordAbilityBattle
- b _0801CE58
- .align 2, 0
-_0801CD94: .4byte gBattleMoves
-_0801CD98: .4byte gBattleMons
-_0801CD9C: .4byte gBankAttacker
-_0801CDA0: .4byte gBattleMoveDamage
-_0801CDA4: .4byte gBankTarget
-_0801CDA8: .4byte gLastUsedAbility
-_0801CDAC: .4byte gBattleMoveFlags
-_0801CDB0: .4byte gMoveHitWith
-_0801CDB4: .4byte gUnknown_02024C44
-_0801CDB8: .4byte gBattleCommunication
-_0801CDBC:
- ldr r1, _0801CDC8 @ =gTypeEffectiveness
- adds r0, r3, r1
- ldrb r0, [r0]
- adds r2, r1, 0
- b _0801CE38
- .align 2, 0
-_0801CDC8: .4byte gTypeEffectiveness
-_0801CDCC:
- adds r3, 0x3
- b _0801CE34
-_0801CDD0:
- ldr r5, _0801CF08 @ =gTypeEffectiveness
- adds r0, r3, r5
- ldrb r0, [r0]
- cmp r0, r8
- bne _0801CE2C
- adds r1, r3, 0x1
- adds r1, r5
- ldr r2, _0801CF0C @ =gBattleMons
- ldr r7, _0801CF10 @ =gBankTarget
- ldrb r0, [r7]
- movs r6, 0x58
- muls r0, r6
- adds r0, r2
- adds r0, 0x21
- ldrb r4, [r1]
- ldrb r0, [r0]
- cmp r4, r0
- bne _0801CE06
- adds r0, r3, 0x2
- adds r0, r5
- ldrb r0, [r0]
- str r2, [sp]
- str r3, [sp, 0x4]
- bl battle_attack_damage_modulate_by_effectivity
- ldr r3, [sp, 0x4]
- ldr r2, [sp]
-_0801CE06:
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r2
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r4, r1
- bne _0801CE2C
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r4
- beq _0801CE2C
- adds r0, r3, 0x2
- adds r0, r5
- ldrb r0, [r0]
- str r3, [sp, 0x4]
- bl battle_attack_damage_modulate_by_effectivity
- ldr r3, [sp, 0x4]
-_0801CE2C:
- adds r3, 0x3
- ldr r5, _0801CF0C @ =gBattleMons
- ldr r4, _0801CF10 @ =gBankTarget
- ldr r2, _0801CF08 @ =gTypeEffectiveness
-_0801CE34:
- adds r0, r3, r2
- ldrb r0, [r0]
-_0801CE38:
- cmp r0, 0xFF
- beq _0801CE58
- cmp r0, 0xFE
- bne _0801CDD0
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r1, r5, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801CDCC
-_0801CE58:
- ldr r2, _0801CF0C @ =gBattleMons
- ldr r5, _0801CF10 @ =gBankTarget
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r6, [r0]
- cmp r6, 0x19
- bne _0801CED6
- ldr r0, _0801CF14 @ =gBankAttacker
- ldrb r0, [r0]
- ldr r7, _0801CF18 @ =gCurrentMove
- ldrh r1, [r7]
- bl move_weather_interaction
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0801CED6
- ldr r1, _0801CF1C @ =gBattleMoveFlags
- mov r8, r1
- ldrb r4, [r1]
- ands r0, r4
- cmp r0, 0
- beq _0801CE94
- movs r0, 0x6
- ands r0, r4
- cmp r0, 0x6
- bne _0801CED6
-_0801CE94:
- ldr r2, _0801CF20 @ =gBattleMoves
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801CED6
- ldr r3, _0801CF24 @ =gLastUsedAbility
- strb r6, [r3]
- movs r0, 0x1
- orrs r0, r4
- mov r2, r8
- strb r0, [r2]
- ldr r1, _0801CF28 @ =gMoveHitWith
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801CF2C @ =gUnknown_02024C44
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r1, _0801CF30 @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- ldrb r0, [r5]
- ldrb r1, [r3]
- bl RecordAbilityBattle
-_0801CED6:
- ldr r0, _0801CF1C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0801CEF4
- ldr r2, _0801CF34 @ =gProtectStructs
- ldr r0, _0801CF14 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r2
- ldrb r0, [r1, 0x1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1, 0x1]
-_0801CEF4:
- ldr r1, _0801CF38 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801CF08: .4byte gTypeEffectiveness
-_0801CF0C: .4byte gBattleMons
-_0801CF10: .4byte gBankTarget
-_0801CF14: .4byte gBankAttacker
-_0801CF18: .4byte gCurrentMove
-_0801CF1C: .4byte gBattleMoveFlags
-_0801CF20: .4byte gBattleMoves
-_0801CF24: .4byte gLastUsedAbility
-_0801CF28: .4byte gMoveHitWith
-_0801CF2C: .4byte gUnknown_02024C44
-_0801CF30: .4byte gBattleCommunication
-_0801CF34: .4byte gProtectStructs
-_0801CF38: .4byte gBattlescriptCurrInstr
- thumb_func_end atk06_typecalc
-
- thumb_func_start b_wonderguard_and_levitate
-b_wonderguard_and_levitate: @ 801CF3C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r6, 0
- movs r5, 0
- ldr r0, _0801CF80 @ =gCurrentMove
- ldrh r1, [r0]
- mov r9, r0
- cmp r1, 0xA5
- bne _0801CF54
- b _0801D1A4
-_0801CF54:
- ldr r2, _0801CF84 @ =gBattleMoves
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _0801CF66
- b _0801D1A4
-_0801CF66:
- ldr r0, _0801CF88 @ =0x02000000
- ldr r2, _0801CF8C @ =0x0001601c
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801CF90
- movs r1, 0x3F
- mov r12, r1
- mov r2, r12
- ands r2, r0
- mov r12, r2
- b _0801CF94
- .align 2, 0
-_0801CF80: .4byte gCurrentMove
-_0801CF84: .4byte gBattleMoves
-_0801CF88: .4byte 0x02000000
-_0801CF8C: .4byte 0x0001601c
-_0801CF90:
- ldrb r1, [r1, 0x2]
- mov r12, r1
-_0801CF94:
- ldr r2, _0801CFC8 @ =gBattleMons
- ldr r3, _0801CFCC @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r1, [r0]
- adds r7, r2, 0
- mov r8, r3
- cmp r1, 0x1A
- bne _0801CFD8
- mov r0, r12
- cmp r0, 0x4
- bne _0801CFD8
- ldr r0, _0801CFD0 @ =gLastUsedAbility
- strb r1, [r0]
- ldr r0, _0801CFD4 @ =gBattleCommunication
- mov r1, r12
- strb r1, [r0, 0x6]
- ldrb r0, [r3]
- movs r1, 0x1A
- bl RecordAbilityBattle
- b _0801D1A4
- .align 2, 0
-_0801CFC8: .4byte gBattleMons
-_0801CFCC: .4byte gBankTarget
-_0801CFD0: .4byte gLastUsedAbility
-_0801CFD4: .4byte gBattleCommunication
-_0801CFD8:
- ldr r1, _0801CFE4 @ =gTypeEffectiveness
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r4, r1, 0
- b _0801D12A
- .align 2, 0
-_0801CFE4: .4byte gTypeEffectiveness
-_0801CFE8:
- adds r0, r5, r4
- ldrb r0, [r0]
- cmp r0, r12
- beq _0801CFF2
- b _0801D124
-_0801CFF2:
- adds r2, r5, 0x1
- adds r3, r2, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x21
- ldrb r1, [r3]
- adds r3, r2, 0
- ldrb r0, [r0]
- cmp r1, r0
- bne _0801D032
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0801D032
- ldr r2, _0801D1B0 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801D1B4 @ =gProtectStructs
- ldr r0, _0801D1B8 @ =gBankAttacker
- ldrb r2, [r0]
- lsls r2, 4
- adds r2, r1
- ldrb r0, [r2, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1]
-_0801D032:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0801D078
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0801D078
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0801D078
- ldr r2, _0801D1B0 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801D1B4 @ =gProtectStructs
- ldr r0, _0801D1B8 @ =gBankAttacker
- ldrb r2, [r0]
- lsls r2, 4
- adds r2, r1
- ldrb r0, [r2, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1]
-_0801D078:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x21
- ldrb r1, [r2]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0801D09C
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0801D09C
- movs r0, 0x1
- orrs r6, r0
-_0801D09C:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0801D0CA
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0801D0CA
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0801D0CA
- movs r0, 0x1
- orrs r6, r0
-_0801D0CA:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x21
- ldrb r1, [r2]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0801D0F2
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0801D0F2
- movs r0, 0x2
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_0801D0F2:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0801D124
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0801D124
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0801D124
- movs r0, 0x2
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_0801D124:
- adds r5, 0x3
- adds r0, r5, r4
- ldrb r0, [r0]
-_0801D12A:
- cmp r0, 0xFF
- beq _0801D14E
- cmp r0, 0xFE
- beq _0801D134
- b _0801CFE8
-_0801D134:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- adds r1, r7, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801D124
-_0801D14E:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x20
- ldrb r4, [r0]
- cmp r4, 0x19
- bne _0801D1A4
- ldr r0, _0801D1B8 @ =gBankAttacker
- ldrb r0, [r0]
- mov r2, r9
- ldrh r1, [r2]
- bl move_weather_interaction
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0801D1A4
- movs r0, 0x3
- ands r6, r0
- cmp r6, 0x1
- beq _0801D1A4
- ldr r2, _0801D1BC @ =gBattleMoves
- mov r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801D1A4
- ldr r0, _0801D1C0 @ =gLastUsedAbility
- strb r4, [r0]
- ldr r1, _0801D1C4 @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x19
- bl RecordAbilityBattle
-_0801D1A4:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801D1B0: .4byte gBattleMoveFlags
-_0801D1B4: .4byte gProtectStructs
-_0801D1B8: .4byte gBankAttacker
-_0801D1BC: .4byte gBattleMoves
-_0801D1C0: .4byte gLastUsedAbility
-_0801D1C4: .4byte gBattleCommunication
- thumb_func_end b_wonderguard_and_levitate
-
- thumb_func_start b_attack_effectivity_adapt
-b_attack_effectivity_adapt: @ 801D1C8
- push {r4-r7,lr}
- adds r6, r2, 0
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r7, _0801D1FC @ =gBattleMoveDamage
- ldr r0, [r7]
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- str r0, [r7]
- cmp r0, 0
- bne _0801D1EE
- cmp r4, 0
- beq _0801D1EE
- movs r0, 0x1
- str r0, [r7]
-_0801D1EE:
- cmp r4, 0x5
- beq _0801D216
- cmp r4, 0x5
- bgt _0801D200
- cmp r4, 0
- beq _0801D206
- b _0801D27A
- .align 2, 0
-_0801D1FC: .4byte gBattleMoveDamage
-_0801D200:
- cmp r4, 0x14
- beq _0801D248
- b _0801D27A
-_0801D206:
- ldrb r0, [r6]
- movs r1, 0x8
- orrs r0, r1
- movs r1, 0xFB
- ands r0, r1
- movs r1, 0xFD
- ands r0, r1
- b _0801D278
-_0801D216:
- ldr r0, _0801D240 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801D27A
- ldrb r1, [r6]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801D27A
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801D244
- movs r0, 0xFD
- ands r0, r1
- b _0801D278
- .align 2, 0
-_0801D240: .4byte gBattleMoves
-_0801D244:
- movs r0, 0x4
- b _0801D276
-_0801D248:
- ldr r0, _0801D270 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801D27A
- ldrb r1, [r6]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801D27A
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801D274
- movs r0, 0xFB
- ands r0, r1
- b _0801D278
- .align 2, 0
-_0801D270: .4byte gBattleMoves
-_0801D274:
- movs r0, 0x2
-_0801D276:
- orrs r0, r1
-_0801D278:
- strb r0, [r6]
-_0801D27A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end b_attack_effectivity_adapt
-
- thumb_func_start TypeCalc
-TypeCalc: @ 801D280
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x4]
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- movs r7, 0
- mov r0, sp
- strb r7, [r0]
- mov r0, r10
- cmp r0, 0xA5
- bne _0801D2AE
- movs r0, 0
- b _0801D43A
-_0801D2AE:
- ldr r1, _0801D31C @ =gBattleMoves
- mov r3, r10
- lsls r2, r3, 1
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- str r0, [sp, 0x8]
- ldr r1, _0801D320 @ =gBattleMons
- movs r0, 0x58
- ldr r3, [sp, 0x4]
- muls r0, r3
- adds r3, r0, r1
- adds r0, r3, 0
- adds r0, 0x21
- ldrb r0, [r0]
- str r2, [sp, 0xC]
- adds r5, r1, 0
- ldr r1, [sp, 0x8]
- cmp r0, r1
- beq _0801D2E2
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- bne _0801D2F4
-_0801D2E2:
- ldr r4, _0801D324 @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- str r0, [r4]
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0801D2F4:
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- bne _0801D328
- ldr r3, [sp, 0x8]
- cmp r3, 0x4
- bne _0801D328
- movs r1, 0x9
- mov r0, sp
- ldrb r0, [r0]
- orrs r0, r1
- mov r1, sp
- strb r0, [r1]
- b _0801D3DC
- .align 2, 0
-_0801D31C: .4byte gBattleMoves
-_0801D320: .4byte gBattleMons
-_0801D324: .4byte gBattleMoveDamage
-_0801D328:
- ldr r1, _0801D344 @ =gTypeEffectiveness
- adds r0, r7, r1
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xFF
- beq _0801D3DC
- cmp r0, 0xFE
- bne _0801D34C
- movs r0, 0x58
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- b _0801D3CA
- .align 2, 0
-_0801D344: .4byte gTypeEffectiveness
-_0801D348:
- adds r7, 0x3
- b _0801D3B6
-_0801D34C:
- ldr r6, _0801D44C @ =gTypeEffectiveness
- adds r0, r7, r6
- ldrb r0, [r0]
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _0801D3B0
- adds r1, r7, 0x1
- adds r1, r6
- ldr r3, _0801D450 @ =gBattleMons
- mov r8, r3
- movs r3, 0x58
- mov r0, r9
- muls r0, r3
- mov r2, r8
- adds r5, r0, r2
- adds r0, r5, 0
- adds r0, 0x21
- ldrb r4, [r1]
- ldrb r0, [r0]
- cmp r4, r0
- bne _0801D388
- adds r0, r7, 0x2
- adds r0, r6
- ldrb r0, [r0]
- mov r1, r10
- mov r2, sp
- str r3, [sp, 0x10]
- bl b_attack_effectivity_adapt
- ldr r3, [sp, 0x10]
-_0801D388:
- adds r0, r5, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r4, r0
- bne _0801D3B0
- ldr r0, _0801D454 @ =gBankTarget
- ldrb r0, [r0]
- muls r0, r3
- add r0, r8
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r4
- beq _0801D3B0
- adds r0, r7, 0x2
- adds r0, r6
- ldrb r0, [r0]
- mov r1, r10
- mov r2, sp
- bl b_attack_effectivity_adapt
-_0801D3B0:
- adds r7, 0x3
- ldr r5, _0801D450 @ =gBattleMons
- ldr r2, _0801D44C @ =gTypeEffectiveness
-_0801D3B6:
- adds r0, r7, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0801D3DC
- cmp r0, 0xFE
- bne _0801D34C
- movs r0, 0x58
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
-_0801D3CA:
- adds r1, r5, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801D348
-_0801D3DC:
- movs r0, 0x58
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x19
- bne _0801D436
- mov r0, sp
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0801D436
- ldr r0, [sp, 0x4]
- mov r1, r10
- bl move_weather_interaction
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _0801D436
- mov r0, sp
- ldrb r3, [r0]
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0801D41E
- movs r0, 0x6
- ands r0, r3
- cmp r0, 0x6
- bne _0801D436
-_0801D41E:
- ldr r0, _0801D458 @ =gBattleMoves
- ldr r1, [sp, 0xC]
- add r1, r10
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801D436
- mov r0, sp
- movs r1, 0x1
- orrs r1, r3
- strb r1, [r0]
-_0801D436:
- mov r0, sp
- ldrb r0, [r0]
-_0801D43A:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801D44C: .4byte gTypeEffectiveness
-_0801D450: .4byte gBattleMons
-_0801D454: .4byte gBankTarget
-_0801D458: .4byte gBattleMoves
- thumb_func_end TypeCalc
-
- thumb_func_start ai_rate_move
-ai_rate_move: @ 801D45C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x4]
- movs r7, 0
- mov r0, sp
- strb r7, [r0]
- ldr r2, _0801D498 @ =gBaseStats
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x6]
- str r1, [sp, 0x8]
- ldrb r0, [r0, 0x7]
- mov r8, r0
- cmp r6, 0xA5
- bne _0801D49C
- movs r0, 0
- b _0801D554
- .align 2, 0
-_0801D498: .4byte gBaseStats
-_0801D49C:
- ldr r2, _0801D4C0 @ =gBattleMoves
- lsls r1, r6, 1
- adds r0, r1, r6
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r9, r0
- str r1, [sp, 0xC]
- ldr r3, [sp, 0x4]
- cmp r3, 0x1A
- bne _0801D4C4
- cmp r0, 0x4
- bne _0801D4C4
- movs r1, 0x9
- mov r0, sp
- strb r1, [r0]
- b _0801D51E
- .align 2, 0
-_0801D4C0: .4byte gBattleMoves
-_0801D4C4:
- ldr r0, _0801D564 @ =gTypeEffectiveness
- mov r10, r0
- adds r1, r7, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0801D51E
- adds r4, r1, 0
-_0801D4D2:
- ldrb r0, [r4]
- cmp r0, 0xFE
- beq _0801D510
- cmp r0, r9
- bne _0801D510
- ldrb r5, [r4, 0x1]
- ldr r1, [sp, 0x8]
- cmp r5, r1
- bne _0801D4EE
- ldrb r0, [r4, 0x2]
- adds r1, r6, 0
- mov r2, sp
- bl b_attack_effectivity_adapt
-_0801D4EE:
- cmp r5, r8
- bne _0801D510
- ldr r0, _0801D568 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- ldr r3, _0801D56C @ =gBattleMons
- adds r0, r3
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r8
- beq _0801D510
- ldrb r0, [r4, 0x2]
- adds r1, r6, 0
- mov r2, sp
- bl b_attack_effectivity_adapt
-_0801D510:
- adds r4, 0x3
- adds r7, 0x3
- mov r1, r10
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0801D4D2
-_0801D51E:
- ldr r3, [sp, 0x4]
- cmp r3, 0x19
- bne _0801D550
- mov r0, sp
- ldrb r2, [r0]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0801D538
- movs r0, 0x6
- ands r0, r2
- cmp r0, 0x6
- bne _0801D550
-_0801D538:
- ldr r0, _0801D570 @ =gBattleMoves
- ldr r3, [sp, 0xC]
- adds r1, r3, r6
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801D550
- mov r0, sp
- movs r1, 0x8
- orrs r1, r2
- strb r1, [r0]
-_0801D550:
- mov r0, sp
- ldrb r0, [r0]
-_0801D554:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801D564: .4byte gTypeEffectiveness
-_0801D568: .4byte gBankTarget
-_0801D56C: .4byte gBattleMons
-_0801D570: .4byte gBattleMoves
- thumb_func_end ai_rate_move
-
- thumb_func_start unref_sub_801D574
-unref_sub_801D574: @ 801D574
- push {r4,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x64
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _0801D5AC @ =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _0801D5A6
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801D5A6
- movs r0, 0x1
- str r0, [r4]
-_0801D5A6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801D5AC: .4byte gBattleMoveDamage
- thumb_func_end unref_sub_801D574
-
- thumb_func_start atk07_dmg_adjustment
-atk07_dmg_adjustment: @ 801D5B0
- push {r4-r7,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x64
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _0801D608 @ =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _0801D5E2
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801D5E2
- movs r0, 0x1
- str r0, [r4]
-_0801D5E2:
- ldr r7, _0801D60C @ =gBattleMons
- ldr r6, _0801D610 @ =gBankTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0801D618
- ldr r1, _0801D614 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _0801D632
- .align 2, 0
-_0801D608: .4byte gBattleMoveDamage
-_0801D60C: .4byte gBattleMons
-_0801D610: .4byte gBankTarget
-_0801D614: .4byte gEnigmaBerries
-_0801D618:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_0801D632:
- ldr r1, _0801D6F4 @ =gStringBank
- ldr r5, _0801D6F8 @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _0801D670
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _0801D670
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemBattle
- ldr r2, _0801D6FC @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_0801D670:
- ldr r2, _0801D700 @ =gBattleMons
- ldr r3, _0801D6F8 @ =gBankTarget
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, r2, 0
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r1, r0
- adds r5, r2, 0
- cmp r1, 0
- bne _0801D740
- ldr r2, _0801D704 @ =gBattleMoves
- ldr r0, _0801D708 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x65
- beq _0801D6C2
- ldr r0, _0801D70C @ =gProtectStructs
- lsls r1, r4, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- blt _0801D6C2
- ldr r0, _0801D6FC @ =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801D740
-_0801D6C2:
- ldrb r0, [r3]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r1, [r0, 0x28]
- ldr r2, _0801D710 @ =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _0801D740
- subs r0, r1, 0x1
- str r0, [r2]
- ldr r1, _0801D70C @ =gProtectStructs
- ldrb r3, [r3]
- lsls r0, r3, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _0801D718
- ldr r0, _0801D714 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0801D740
- .align 2, 0
-_0801D6F4: .4byte gStringBank
-_0801D6F8: .4byte gBankTarget
-_0801D6FC: .4byte gSpecialStatuses
-_0801D700: .4byte gBattleMons
-_0801D704: .4byte gBattleMoves
-_0801D708: .4byte gCurrentMove
-_0801D70C: .4byte gProtectStructs
-_0801D710: .4byte gBattleMoveDamage
-_0801D714: .4byte gBattleMoveFlags
-_0801D718:
- ldr r0, _0801D750 @ =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801D740
- ldr r2, _0801D754 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801D758 @ =gLastUsedItem
- adds r0, r3, 0
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_0801D740:
- ldr r1, _0801D75C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801D750: .4byte gSpecialStatuses
-_0801D754: .4byte gBattleMoveFlags
-_0801D758: .4byte gLastUsedItem
-_0801D75C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk07_dmg_adjustment
-
- thumb_func_start atk08_dmg_adjustment2
-atk08_dmg_adjustment2: @ 801D760
- push {r4-r7,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x64
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _0801D7B8 @ =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _0801D792
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801D792
- movs r0, 0x1
- str r0, [r4]
-_0801D792:
- ldr r7, _0801D7BC @ =gBattleMons
- ldr r6, _0801D7C0 @ =gBankTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0801D7C8
- ldr r1, _0801D7C4 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _0801D7E2
- .align 2, 0
-_0801D7B8: .4byte gBattleMoveDamage
-_0801D7BC: .4byte gBattleMons
-_0801D7C0: .4byte gBankTarget
-_0801D7C4: .4byte gEnigmaBerries
-_0801D7C8:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_0801D7E2:
- ldr r1, _0801D888 @ =gStringBank
- ldr r5, _0801D88C @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _0801D820
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _0801D820
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemBattle
- ldr r2, _0801D890 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_0801D820:
- ldr r4, _0801D894 @ =gBattleMons
- ldr r6, _0801D88C @ =gBankTarget
- ldrb r2, [r6]
- movs r7, 0x58
- adds r3, r2, 0
- muls r3, r7
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- bne _0801D8CC
- ldr r5, _0801D898 @ =gProtectStructs
- lsls r0, r2, 4
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- blt _0801D85E
- ldr r0, _0801D890 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801D8CC
-_0801D85E:
- adds r0, r3, r4
- ldrh r1, [r0, 0x28]
- ldr r2, _0801D89C @ =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _0801D8CC
- subs r0, r1, 0x1
- str r0, [r2]
- ldrb r3, [r6]
- lsls r0, r3, 4
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _0801D8A4
- ldr r0, _0801D8A0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0801D8CC
- .align 2, 0
-_0801D888: .4byte gStringBank
-_0801D88C: .4byte gBankTarget
-_0801D890: .4byte gSpecialStatuses
-_0801D894: .4byte gBattleMons
-_0801D898: .4byte gProtectStructs
-_0801D89C: .4byte gBattleMoveDamage
-_0801D8A0: .4byte gBattleMoveFlags
-_0801D8A4:
- ldr r0, _0801D8DC @ =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801D8CC
- ldr r2, _0801D8E0 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801D8E4 @ =gLastUsedItem
- adds r0, r3, 0
- muls r0, r7
- adds r0, r4
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_0801D8CC:
- ldr r1, _0801D8E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801D8DC: .4byte gSpecialStatuses
-_0801D8E0: .4byte gBattleMoveFlags
-_0801D8E4: .4byte gLastUsedItem
-_0801D8E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk08_dmg_adjustment2
-
- thumb_func_start atk09_attackanimation
-atk09_attackanimation: @ 801D8EC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0xC
- ldr r0, _0801D940 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0801D900
- b _0801DA4A
-_0801D900:
- ldr r0, _0801D944 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- ldr r3, _0801D948 @ =gCurrentMove
- cmp r0, 0
- beq _0801D960
- ldrh r0, [r3]
- cmp r0, 0x90
- beq _0801D960
- cmp r0, 0xA4
- beq _0801D960
- ldr r4, _0801D94C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801D950 @ =BattleScript_Pausex20
- str r0, [r4]
- ldr r1, _0801D954 @ =0x02000000
- ldr r0, _0801D958 @ =0x00016002
- adds r2, r1, r0
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- ldr r2, _0801D95C @ =0x000160a1
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0801DA4A
- .align 2, 0
-_0801D940: .4byte gBattleExecBuffer
-_0801D944: .4byte gHitMarker
-_0801D948: .4byte gCurrentMove
-_0801D94C: .4byte gBattlescriptCurrInstr
-_0801D950: .4byte BattleScript_Pausex20
-_0801D954: .4byte 0x02000000
-_0801D958: .4byte 0x00016002
-_0801D95C: .4byte 0x000160a1
-_0801D960:
- ldr r2, _0801DA0C @ =gBattleMoves
- ldrh r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x6]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0801D986
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0801D986
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0801D992
-_0801D986:
- ldr r0, _0801DA10 @ =0x02000000
- ldr r1, _0801DA14 @ =0x000160a1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0801DA00
-_0801D992:
- ldr r0, _0801DA18 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801DA3C
- ldr r1, _0801DA1C @ =gActiveBank
- ldr r2, _0801DA20 @ =gBankAttacker
- mov r9, r2
- ldrb r0, [r2]
- strb r0, [r1]
- ldrh r1, [r3]
- ldr r6, _0801DA10 @ =0x02000000
- ldr r0, _0801DA24 @ =0x00016002
- adds r0, r6
- mov r8, r0
- ldrb r2, [r0]
- ldr r0, _0801DA28 @ =gBattleMovePower
- ldrh r3, [r0]
- ldr r0, _0801DA2C @ =gBattleMoveDamage
- ldr r0, [r0]
- str r0, [sp]
- ldr r5, _0801DA30 @ =gBattleMons
- mov r0, r9
- ldrb r4, [r0]
- movs r0, 0x58
- muls r0, r4
- adds r0, r5
- adds r0, 0x2B
- ldrb r0, [r0]
- str r0, [sp, 0x4]
- mov r0, r9
- ldrb r4, [r0]
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r4, _0801DA34 @ =gDisableStructs
- adds r0, r4
- str r0, [sp, 0x8]
- movs r0, 0
- bl EmitMoveAnimation
- mov r1, r8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r2, _0801DA14 @ =0x000160a1
- adds r6, r2
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- mov r1, r9
- ldrb r0, [r1]
- bl MarkBufferBankForExecution
-_0801DA00:
- ldr r1, _0801DA38 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _0801DA4A
- .align 2, 0
-_0801DA0C: .4byte gBattleMoves
-_0801DA10: .4byte 0x02000000
-_0801DA14: .4byte 0x000160a1
-_0801DA18: .4byte gBattleMoveFlags
-_0801DA1C: .4byte gActiveBank
-_0801DA20: .4byte gBankAttacker
-_0801DA24: .4byte 0x00016002
-_0801DA28: .4byte gBattleMovePower
-_0801DA2C: .4byte gBattleMoveDamage
-_0801DA30: .4byte gBattleMons
-_0801DA34: .4byte gDisableStructs
-_0801DA38: .4byte gBattlescriptCurrInstr
-_0801DA3C:
- ldr r4, _0801DA58 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801DA5C @ =BattleScript_Pausex20
- str r0, [r4]
-_0801DA4A:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801DA58: .4byte gBattlescriptCurrInstr
-_0801DA5C: .4byte BattleScript_Pausex20
- thumb_func_end atk09_attackanimation
-
- thumb_func_start atk0A_waitanimation
-atk0A_waitanimation: @ 801DA60
- push {lr}
- ldr r0, _0801DA78 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801DA72
- ldr r1, _0801DA7C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801DA72:
- pop {r0}
- bx r0
- .align 2, 0
-_0801DA78: .4byte gBattleExecBuffer
-_0801DA7C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0A_waitanimation
-
- thumb_func_start atk0B_healthbarupdate
-atk0B_healthbarupdate: @ 801DA80
- push {r4,r5,lr}
- ldr r0, _0801DAE4 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801DB36
- ldr r0, _0801DAE8 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801DB2E
- ldr r0, _0801DAEC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r2, _0801DAF0 @ =gActiveBank
- strb r0, [r2]
- ldr r1, _0801DAF4 @ =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0801DB00
- ldr r0, _0801DAF8 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- beq _0801DB00
- ldr r0, _0801DAFC @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- cmp r0, 0
- bne _0801DB00
- movs r0, 0x80
- adds r1, r2, 0
- bl PrepareStringBattle
- b _0801DB2E
- .align 2, 0
-_0801DAE4: .4byte gBattleExecBuffer
-_0801DAE8: .4byte gBattleMoveFlags
-_0801DAEC: .4byte gBattlescriptCurrInstr
-_0801DAF0: .4byte gActiveBank
-_0801DAF4: .4byte gBattleMons
-_0801DAF8: .4byte gDisableStructs
-_0801DAFC: .4byte gHitMarker
-_0801DB00:
- ldr r5, _0801DB3C @ =gBattleMoveDamage
- ldrh r1, [r5]
- movs r0, 0
- bl EmitHealthBarUpdate
- ldr r4, _0801DB40 @ =gActiveBank
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0801DB2E
- ldr r0, [r5]
- cmp r0, 0
- ble _0801DB2E
- ldr r0, _0801DB44 @ =gBattleResults
- ldrb r1, [r0, 0x5]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x5]
-_0801DB2E:
- ldr r1, _0801DB48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0801DB36:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801DB3C: .4byte gBattleMoveDamage
-_0801DB40: .4byte gActiveBank
-_0801DB44: .4byte gBattleResults
-_0801DB48: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0B_healthbarupdate
-
- thumb_func_start atk0C_datahpupdate
-atk0C_datahpupdate: @ 801DB4C
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r0, _0801DB74 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0801DB5A
- b _0801DF2E
-_0801DB5A:
- ldr r0, _0801DB78 @ =0x02000000
- ldr r1, _0801DB7C @ =0x0001601c
- adds r0, r1
- ldrb r1, [r0]
- cmp r1, 0
- beq _0801DB80
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0801DB80
- movs r6, 0x3F
- ands r6, r1
- b _0801DB90
- .align 2, 0
-_0801DB74: .4byte gBattleExecBuffer
-_0801DB78: .4byte 0x02000000
-_0801DB7C: .4byte 0x0001601c
-_0801DB80:
- ldr r2, _0801DC1C @ =gBattleMoves
- ldr r0, _0801DC20 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r6, [r0, 0x2]
-_0801DB90:
- ldr r0, _0801DC24 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0801DB9E
- b _0801DF00
-_0801DB9E:
- ldr r0, _0801DC28 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r7, _0801DC2C @ =gActiveBank
- strb r0, [r7]
- ldr r1, _0801DC30 @ =gBattleMons
- ldrb r2, [r7]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0801DCB4
- ldr r0, _0801DC34 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r4, r1, r0
- ldrb r1, [r4, 0xA]
- mov r12, r0
- cmp r1, 0
- beq _0801DCB4
- ldr r0, _0801DC38 @ =gHitMarker
- ldr r3, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r3, r0
- cmp r3, 0
- bne _0801DCB4
- adds r5, r1, 0
- ldr r6, _0801DC3C @ =gBattleMoveDamage
- ldr r4, [r6]
- cmp r5, r4
- blt _0801DC48
- ldr r0, _0801DC40 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _0801DC02
- str r4, [r1]
-_0801DC02:
- ldrb r0, [r7]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r12
- ldr r2, [r6]
- ldrb r0, [r1, 0xA]
- subs r0, r2
- strb r0, [r1, 0xA]
- ldr r1, _0801DC44 @ =gHP_dealt
- ldr r0, [r6]
- str r0, [r1]
- b _0801DC78
- .align 2, 0
-_0801DC1C: .4byte gBattleMoves
-_0801DC20: .4byte gCurrentMove
-_0801DC24: .4byte gBattleMoveFlags
-_0801DC28: .4byte gBattlescriptCurrInstr
-_0801DC2C: .4byte gActiveBank
-_0801DC30: .4byte gBattleMons
-_0801DC34: .4byte gDisableStructs
-_0801DC38: .4byte gHitMarker
-_0801DC3C: .4byte gBattleMoveDamage
-_0801DC40: .4byte gSpecialStatuses
-_0801DC44: .4byte gHP_dealt
-_0801DC48:
- ldr r0, _0801DCA0 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _0801DC5C
- str r5, [r1]
-_0801DC5C:
- ldr r2, _0801DCA4 @ =gHP_dealt
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r0, [r0, 0xA]
- str r0, [r2]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- strb r3, [r0, 0xA]
-_0801DC78:
- ldr r0, _0801DCA8 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _0801DC8C
- b _0801DF26
-_0801DC8C:
- ldr r4, _0801DCAC @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- bl b_movescr_stack_push_cursor
- ldr r0, _0801DCB0 @ =BattleScript_SubstituteFade
- str r0, [r4]
- b _0801DF2E
- .align 2, 0
-_0801DCA0: .4byte gSpecialStatuses
-_0801DCA4: .4byte gHP_dealt
-_0801DCA8: .4byte gActiveBank
-_0801DCAC: .4byte gBattlescriptCurrInstr
-_0801DCB0: .4byte BattleScript_SubstituteFade
-_0801DCB4:
- ldr r0, _0801DCF4 @ =gHitMarker
- ldr r2, [r0]
- ldr r1, _0801DCF8 @ =0xfffffeff
- ands r2, r1
- str r2, [r0]
- ldr r1, _0801DCFC @ =gBattleMoveDamage
- ldr r5, [r1]
- mov r12, r0
- adds r7, r1, 0
- cmp r5, 0
- bge _0801DD08
- ldr r4, _0801DD00 @ =gBattleMons
- ldr r2, _0801DD04 @ =gActiveBank
- ldrb r0, [r2]
- movs r3, 0x58
- adds r1, r0, 0
- muls r1, r3
- adds r1, r4
- ldrh r0, [r1, 0x28]
- subs r0, r5
- strh r0, [r1, 0x28]
- ldrb r0, [r2]
- muls r0, r3
- adds r1, r0, r4
- ldrh r3, [r1, 0x2C]
- ldrh r0, [r1, 0x28]
- adds r5, r2, 0
- cmp r0, r3
- bhi _0801DCF0
- b _0801DEC6
-_0801DCF0:
- strh r3, [r1, 0x28]
- b _0801DEC6
- .align 2, 0
-_0801DCF4: .4byte gHitMarker
-_0801DCF8: .4byte 0xfffffeff
-_0801DCFC: .4byte gBattleMoveDamage
-_0801DD00: .4byte gBattleMons
-_0801DD04: .4byte gActiveBank
-_0801DD08:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _0801DD24
- movs r0, 0x21
- negs r0, r0
- ands r2, r0
- mov r0, r12
- str r2, [r0]
- ldr r5, _0801DD20 @ =gActiveBank
- b _0801DD6C
- .align 2, 0
-_0801DD20: .4byte gActiveBank
-_0801DD24:
- ldr r0, _0801DD4C @ =gTakenDmg
- ldr r2, _0801DD50 @ =gActiveBank
- ldrb r1, [r2]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- adds r0, r5
- str r0, [r1]
- ldr r0, _0801DD54 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- adds r5, r2, 0
- cmp r0, 0
- bne _0801DD60
- ldr r1, _0801DD58 @ =gTakenDmgBanks
- ldrb r0, [r5]
- adds r0, r1
- ldr r1, _0801DD5C @ =gBankAttacker
- b _0801DD68
- .align 2, 0
-_0801DD4C: .4byte gTakenDmg
-_0801DD50: .4byte gActiveBank
-_0801DD54: .4byte gBattlescriptCurrInstr
-_0801DD58: .4byte gTakenDmgBanks
-_0801DD5C: .4byte gBankAttacker
-_0801DD60:
- ldr r1, _0801DD8C @ =gTakenDmgBanks
- ldrb r0, [r5]
- adds r0, r1
- ldr r1, _0801DD90 @ =gBankTarget
-_0801DD68:
- ldrb r1, [r1]
- strb r1, [r0]
-_0801DD6C:
- ldr r4, _0801DD94 @ =gBattleMons
- ldrb r0, [r5]
- movs r3, 0x58
- muls r0, r3
- adds r2, r0, r4
- ldrh r0, [r2, 0x28]
- ldr r1, [r7]
- cmp r0, r1
- ble _0801DD9C
- subs r0, r1
- strh r0, [r2, 0x28]
- ldr r0, _0801DD98 @ =gHP_dealt
- str r1, [r0]
- adds r7, r0, 0
- b _0801DDAC
- .align 2, 0
-_0801DD8C: .4byte gTakenDmgBanks
-_0801DD90: .4byte gBankTarget
-_0801DD94: .4byte gBattleMons
-_0801DD98: .4byte gHP_dealt
-_0801DD9C:
- ldr r2, _0801DE20 @ =gHP_dealt
- str r0, [r2]
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r4
- movs r1, 0
- strh r1, [r0, 0x28]
- adds r7, r2, 0
-_0801DDAC:
- ldr r2, _0801DE24 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r2, 0x4
- adds r3, r0, r1
- ldr r0, [r3]
- adds r4, r2, 0
- cmp r0, 0
- bne _0801DDD4
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0801DDD4
- ldr r0, [r7]
- str r0, [r3]
-_0801DDD4:
- cmp r6, 0x8
- bhi _0801DE5C
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0801DE58
- ldr r0, _0801DE28 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xDC
- beq _0801DE58
- ldr r3, _0801DE2C @ =gProtectStructs
- ldrb r0, [r5]
- lsls r0, 4
- adds r1, r3, 0x4
- adds r0, r1
- ldr r2, [r7]
- str r2, [r0]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x8
- adds r0, r1
- str r2, [r0]
- ldr r0, _0801DE30 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0801DE38
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801DE34 @ =gBankAttacker
- b _0801DE40
- .align 2, 0
-_0801DE20: .4byte gHP_dealt
-_0801DE24: .4byte gSpecialStatuses
-_0801DE28: .4byte gCurrentMove
-_0801DE2C: .4byte gProtectStructs
-_0801DE30: .4byte gBattlescriptCurrInstr
-_0801DE34: .4byte gBankAttacker
-_0801DE38:
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801DE54 @ =gBankTarget
-_0801DE40:
- ldrb r1, [r2]
- strb r1, [r0, 0xC]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r2]
- strb r1, [r0, 0x10]
- b _0801DEC6
- .align 2, 0
-_0801DE54: .4byte gBankTarget
-_0801DE58:
- cmp r6, 0x8
- bls _0801DEC6
-_0801DE5C:
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0801DEC6
- ldr r3, _0801DEA0 @ =gProtectStructs
- ldrb r0, [r5]
- lsls r0, 4
- adds r1, r3, 0
- adds r1, 0x8
- adds r0, r1
- ldr r2, [r7]
- str r2, [r0]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0xC
- adds r0, r1
- str r2, [r0]
- ldr r0, _0801DEA4 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0801DEAC
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801DEA8 @ =gBankAttacker
- b _0801DEB4
- .align 2, 0
-_0801DEA0: .4byte gProtectStructs
-_0801DEA4: .4byte gBattlescriptCurrInstr
-_0801DEA8: .4byte gBankAttacker
-_0801DEAC:
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801DEF4 @ =gBankTarget
-_0801DEB4:
- ldrb r1, [r2]
- strb r1, [r0, 0xD]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r2]
- strb r1, [r0, 0x11]
-_0801DEC6:
- mov r1, r12
- ldr r0, [r1]
- ldr r1, _0801DEF8 @ =0xffefffff
- ands r0, r1
- mov r1, r12
- str r0, [r1]
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- ldr r1, _0801DEFC @ =gUnknown_02024AA8
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2A
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- b _0801DF26
- .align 2, 0
-_0801DEF4: .4byte gBankTarget
-_0801DEF8: .4byte 0xffefffff
-_0801DEFC: .4byte gUnknown_02024AA8
-_0801DF00:
- ldr r0, _0801DF38 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _0801DF3C @ =gActiveBank
- strb r0, [r1]
- ldr r2, _0801DF40 @ =gSpecialStatuses
- ldrb r1, [r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x4
- adds r1, r0, r2
- ldr r0, [r1]
- cmp r0, 0
- bne _0801DF26
- ldr r0, _0801DF44 @ =0x0000ffff
- str r0, [r1]
-_0801DF26:
- ldr r1, _0801DF38 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0801DF2E:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801DF38: .4byte gBattlescriptCurrInstr
-_0801DF3C: .4byte gActiveBank
-_0801DF40: .4byte gSpecialStatuses
-_0801DF44: .4byte 0x0000ffff
- thumb_func_end atk0C_datahpupdate
-
- thumb_func_start atk0D_critmessage
-atk0D_critmessage: @ 801DF48
- push {lr}
- ldr r0, _0801DF84 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801DF7E
- ldr r0, _0801DF88 @ =gCritMultiplier
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0801DF76
- ldr r0, _0801DF8C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801DF76
- ldr r0, _0801DF90 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0xD9
- bl PrepareStringBattle
- ldr r1, _0801DF94 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
-_0801DF76:
- ldr r1, _0801DF98 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801DF7E:
- pop {r0}
- bx r0
- .align 2, 0
-_0801DF84: .4byte gBattleExecBuffer
-_0801DF88: .4byte gCritMultiplier
-_0801DF8C: .4byte gBattleMoveFlags
-_0801DF90: .4byte gBankAttacker
-_0801DF94: .4byte gBattleCommunication
-_0801DF98: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0D_critmessage
-
- thumb_func_start atk0E_effectiveness_sound
-atk0E_effectiveness_sound: @ 801DF9C
- push {r4,lr}
- ldr r0, _0801DFD4 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801E05C
- ldr r4, _0801DFD8 @ =gActiveBank
- ldr r0, _0801DFDC @ =gBankTarget
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, _0801DFE0 @ =gBattleMoveFlags
- ldrb r2, [r1]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _0801E054
- movs r0, 0xFE
- ands r0, r2
- cmp r0, 0x10
- beq _0801E00E
- cmp r0, 0x10
- bgt _0801DFEA
- cmp r0, 0x4
- beq _0801DFFE
- cmp r0, 0x4
- bgt _0801DFE4
- cmp r0, 0x2
- beq _0801DFF8
- b _0801E00E
- .align 2, 0
-_0801DFD4: .4byte gBattleExecBuffer
-_0801DFD8: .4byte gActiveBank
-_0801DFDC: .4byte gBankTarget
-_0801DFE0: .4byte gBattleMoveFlags
-_0801DFE4:
- cmp r0, 0x8
- beq _0801E054
- b _0801E00E
-_0801DFEA:
- cmp r0, 0x40
- beq _0801E00E
- cmp r0, 0x40
- bgt _0801E00E
- cmp r0, 0x20
- beq _0801E054
- b _0801E00E
-_0801DFF8:
- movs r0, 0
- movs r1, 0xE
- b _0801E002
-_0801DFFE:
- movs r0, 0
- movs r1, 0xC
-_0801E002:
- bl EmitEffectivenessSound
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _0801E054
-_0801E00E:
- ldrb r1, [r1]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801E01E
- movs r0, 0
- movs r1, 0xE
- b _0801E02A
-_0801E01E:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801E03C
- movs r0, 0
- movs r1, 0xC
-_0801E02A:
- bl EmitEffectivenessSound
- ldr r0, _0801E038 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- b _0801E054
- .align 2, 0
-_0801E038: .4byte gActiveBank
-_0801E03C:
- movs r0, 0x28
- ands r0, r1
- cmp r0, 0
- bne _0801E054
- movs r0, 0
- movs r1, 0xD
- bl EmitEffectivenessSound
- ldr r0, _0801E064 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_0801E054:
- ldr r1, _0801E068 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801E05C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E064: .4byte gActiveBank
-_0801E068: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0E_effectiveness_sound
-
- thumb_func_start atk0F_resultmessage
-atk0F_resultmessage: @ 801E06C
- push {r4-r7,lr}
- movs r3, 0
- ldr r0, _0801E0A8 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E07A
- b _0801E20C
-_0801E07A:
- ldr r1, _0801E0AC @ =gBattleMoveFlags
- ldrb r2, [r1]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r2
- adds r6, r1, 0
- ldr r7, _0801E0B0 @ =gBattleCommunication
- cmp r0, 0
- beq _0801E0B8
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _0801E09A
- ldrb r0, [r7, 0x6]
- cmp r0, 0x2
- bls _0801E0B8
-_0801E09A:
- ldr r1, _0801E0B4 @ =gMissStrings
- ldrb r0, [r7, 0x6]
- lsls r0, 1
- adds r0, r1
- ldrh r3, [r0]
- strb r4, [r7, 0x7]
- b _0801E1F6
- .align 2, 0
-_0801E0A8: .4byte gBattleExecBuffer
-_0801E0AC: .4byte gBattleMoveFlags
-_0801E0B0: .4byte gBattleCommunication
-_0801E0B4: .4byte gMissStrings
-_0801E0B8:
- movs r0, 0x1
- strb r0, [r7, 0x7]
- ldrb r5, [r6]
- movs r0, 0xFE
- ands r0, r5
- cmp r0, 0x10
- beq _0801E0FC
- cmp r0, 0x10
- bgt _0801E0DE
- cmp r0, 0x4
- beq _0801E0F8
- cmp r0, 0x4
- bgt _0801E0D8
- cmp r0, 0x2
- beq _0801E0F4
- b _0801E144
-_0801E0D8:
- cmp r0, 0x8
- beq _0801E150
- b _0801E144
-_0801E0DE:
- cmp r0, 0x40
- beq _0801E100
- cmp r0, 0x40
- bgt _0801E0EE
- cmp r0, 0x20
- bne _0801E0EC
- b _0801E1F0
-_0801E0EC:
- b _0801E144
-_0801E0EE:
- cmp r0, 0x80
- beq _0801E104
- b _0801E144
-_0801E0F4:
- movs r3, 0xDE
- b _0801E1FA
-_0801E0F8:
- movs r3, 0xDD
- b _0801E1FA
-_0801E0FC:
- movs r3, 0xDA
- b _0801E1FA
-_0801E100:
- movs r3, 0x99
- b _0801E1FA
-_0801E104:
- ldr r4, _0801E12C @ =gLastUsedItem
- ldr r2, _0801E130 @ =gBattleMons
- ldr r3, _0801E134 @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- ldr r1, _0801E138 @ =gStringBank
- ldrb r0, [r3]
- strb r0, [r1]
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r6]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801E13C @ =gBattlescriptCurrInstr
- ldr r0, _0801E140 @ =BattleScript_HangedOnMsg
- b _0801E20A
- .align 2, 0
-_0801E12C: .4byte gLastUsedItem
-_0801E130: .4byte gBattleMons
-_0801E134: .4byte gBankTarget
-_0801E138: .4byte gStringBank
-_0801E13C: .4byte gBattlescriptCurrInstr
-_0801E140: .4byte BattleScript_HangedOnMsg
-_0801E144:
- adds r2, r6, 0
- ldrb r5, [r2]
- movs r0, 0x8
- ands r0, r5
- cmp r0, 0
- beq _0801E154
-_0801E150:
- movs r3, 0x1B
- b _0801E1FA
-_0801E154:
- movs r0, 0x10
- ands r0, r5
- cmp r0, 0
- beq _0801E17C
- movs r0, 0xEF
- ands r0, r5
- movs r1, 0xFD
- ands r0, r1
- movs r1, 0xFB
- ands r0, r1
- strb r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801E174 @ =gBattlescriptCurrInstr
- ldr r0, _0801E178 @ =BattleScript_OneHitKOMsg
- b _0801E20A
- .align 2, 0
-_0801E174: .4byte gBattlescriptCurrInstr
-_0801E178: .4byte BattleScript_OneHitKOMsg
-_0801E17C:
- movs r0, 0x40
- ands r0, r5
- cmp r0, 0
- beq _0801E19C
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801E194 @ =gBattlescriptCurrInstr
- ldr r0, _0801E198 @ =BattleScript_EnduredMsg
- b _0801E20A
- .align 2, 0
-_0801E194: .4byte gBattlescriptCurrInstr
-_0801E198: .4byte BattleScript_EnduredMsg
-_0801E19C:
- movs r0, 0x80
- ands r0, r5
- cmp r0, 0
- beq _0801E1E4
- ldr r4, _0801E1CC @ =gLastUsedItem
- ldr r2, _0801E1D0 @ =gBattleMons
- ldr r3, _0801E1D4 @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- ldr r1, _0801E1D8 @ =gStringBank
- ldrb r0, [r3]
- strb r0, [r1]
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r6]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801E1DC @ =gBattlescriptCurrInstr
- ldr r0, _0801E1E0 @ =BattleScript_HangedOnMsg
- b _0801E20A
- .align 2, 0
-_0801E1CC: .4byte gLastUsedItem
-_0801E1D0: .4byte gBattleMons
-_0801E1D4: .4byte gBankTarget
-_0801E1D8: .4byte gStringBank
-_0801E1DC: .4byte gBattlescriptCurrInstr
-_0801E1E0: .4byte BattleScript_HangedOnMsg
-_0801E1E4:
- movs r0, 0x20
- ands r0, r5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0801E1F4
-_0801E1F0:
- movs r3, 0xE5
- b _0801E1FA
-_0801E1F4:
- strb r0, [r7, 0x7]
-_0801E1F6:
- cmp r3, 0
- beq _0801E204
-_0801E1FA:
- adds r0, r3, 0
- ldr r1, _0801E214 @ =gBankAttacker
- ldrb r1, [r1]
- bl PrepareStringBattle
-_0801E204:
- ldr r1, _0801E218 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_0801E20A:
- str r0, [r1]
-_0801E20C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E214: .4byte gBankAttacker
-_0801E218: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0F_resultmessage
-
- thumb_func_start atk10_printstring
-atk10_printstring: @ 801E21C
- push {r4,lr}
- ldr r0, _0801E24C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801E246
- ldr r4, _0801E250 @ =gBattlescriptCurrInstr
- ldr r1, [r4]
- ldrb r0, [r1, 0x1]
- ldrb r1, [r1, 0x2]
- lsls r1, 8
- orrs r0, r1
- ldr r1, _0801E254 @ =gBankAttacker
- ldrb r1, [r1]
- bl PrepareStringBattle
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- ldr r1, _0801E258 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
-_0801E246:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E24C: .4byte gBattleExecBuffer
-_0801E250: .4byte gBattlescriptCurrInstr
-_0801E254: .4byte gBankAttacker
-_0801E258: .4byte gBattleCommunication
- thumb_func_end atk10_printstring
-
- thumb_func_start atk11_printstring_playeronly
-atk11_printstring_playeronly: @ 801E25C
- push {r4,r5,lr}
- ldr r5, _0801E290 @ =gActiveBank
- ldr r0, _0801E294 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, _0801E298 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl EmitPrintStringPlayerOnly
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- ldr r1, _0801E29C @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E290: .4byte gActiveBank
-_0801E294: .4byte gBankAttacker
-_0801E298: .4byte gBattlescriptCurrInstr
-_0801E29C: .4byte gBattleCommunication
- thumb_func_end atk11_printstring_playeronly
-
- thumb_func_start atk12_waitmessage
-atk12_waitmessage: @ 801E2A0
- push {r4-r6,lr}
- ldr r0, _0801E2BC @ =gBattleExecBuffer
- ldr r4, [r0]
- cmp r4, 0
- bne _0801E2EE
- ldr r6, _0801E2C0 @ =gBattleCommunication
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- bne _0801E2C8
- ldr r1, _0801E2C4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
- b _0801E2EE
- .align 2, 0
-_0801E2BC: .4byte gBattleExecBuffer
-_0801E2C0: .4byte gBattleCommunication
-_0801E2C4: .4byte gBattlescriptCurrInstr
-_0801E2C8:
- ldr r5, _0801E2F4 @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r3, _0801E2F8 @ =gPauseCounterBattle
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bcc _0801E2EE
- movs r1, 0
- strh r4, [r3]
- adds r0, r2, 0x3
- str r0, [r5]
- strb r1, [r6, 0x7]
-_0801E2EE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E2F4: .4byte gBattlescriptCurrInstr
-_0801E2F8: .4byte gPauseCounterBattle
- thumb_func_end atk12_waitmessage
-
- thumb_func_start atk13_printfromtable
-atk13_printfromtable: @ 801E2FC
- push {r4,r5,lr}
- ldr r0, _0801E340 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801E33A
- ldr r4, _0801E344 @ =gBattlescriptCurrInstr
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- ldr r5, _0801E348 @ =gBattleCommunication
- ldrb r0, [r5, 0x5]
- lsls r0, 1
- adds r1, r0
- ldrh r0, [r1]
- ldr r1, _0801E34C @ =gBankAttacker
- ldrb r1, [r1]
- bl PrepareStringBattle
- ldr r0, [r4]
- adds r0, 0x5
- str r0, [r4]
- movs r0, 0x1
- strb r0, [r5, 0x7]
-_0801E33A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E340: .4byte gBattleExecBuffer
-_0801E344: .4byte gBattlescriptCurrInstr
-_0801E348: .4byte gBattleCommunication
-_0801E34C: .4byte gBankAttacker
- thumb_func_end atk13_printfromtable
-
- thumb_func_start atk14_printfromtable_playeronly
-atk14_printfromtable_playeronly: @ 801E350
- push {r4-r6,lr}
- ldr r0, _0801E3A0 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801E39A
- ldr r5, _0801E3A4 @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- ldr r6, _0801E3A8 @ =gBattleCommunication
- ldrb r0, [r6, 0x5]
- lsls r0, 1
- adds r1, r0
- ldr r4, _0801E3AC @ =gActiveBank
- ldr r0, _0801E3B0 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldrh r1, [r1]
- movs r0, 0
- bl EmitPrintStringPlayerOnly
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x5
- str r0, [r5]
- movs r0, 0x1
- strb r0, [r6, 0x7]
-_0801E39A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E3A0: .4byte gBattleExecBuffer
-_0801E3A4: .4byte gBattlescriptCurrInstr
-_0801E3A8: .4byte gBattleCommunication
-_0801E3AC: .4byte gActiveBank
-_0801E3B0: .4byte gBankAttacker
- thumb_func_end atk14_printfromtable_playeronly
-
- thumb_func_start sub_801E3B4
-sub_801E3B4: @ 801E3B4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r0, _0801E3E4 @ =gNoOfAllBanks
- ldrb r3, [r0]
- cmp r1, r3
- bge _0801E3DA
- ldr r4, _0801E3E8 @ =gTurnOrder
- ldrb r0, [r4]
- cmp r0, r2
- beq _0801E3DA
-_0801E3CC:
- adds r1, 0x1
- cmp r1, r3
- bge _0801E3DA
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, r2
- bne _0801E3CC
-_0801E3DA:
- lsls r0, r1, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0801E3E4: .4byte gNoOfAllBanks
-_0801E3E8: .4byte gTurnOrder
- thumb_func_end sub_801E3B4
-
- thumb_func_start sub_801E3EC
-sub_801E3EC: @ 801E3EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0
- mov r10, r0
- movs r6, 0
- movs r1, 0x1
- str r1, [sp, 0x4]
- ldr r1, _0801E430 @ =gBattleCommunication
- ldrb r3, [r1, 0x3]
- movs r0, 0x40
- ands r0, r3
- adds r7, r1, 0
- cmp r0, 0
- beq _0801E444
- ldr r2, _0801E434 @ =gEffectBank
- ldr r0, _0801E438 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r2]
- movs r0, 0xBF
- ands r0, r3
- strb r0, [r7, 0x3]
- movs r6, 0x40
- ldr r0, _0801E43C @ =0x02000000
- ldr r1, _0801E440 @ =gBankTarget
- b _0801E450
- .align 2, 0
-_0801E430: .4byte gBattleCommunication
-_0801E434: .4byte gEffectBank
-_0801E438: .4byte gBankAttacker
-_0801E43C: .4byte 0x02000000
-_0801E440: .4byte gBankTarget
-_0801E444:
- ldr r2, _0801E538 @ =gEffectBank
- ldr r0, _0801E53C @ =gBankTarget
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r0, _0801E540 @ =0x02000000
- ldr r1, _0801E544 @ =gBankAttacker
-_0801E450:
- ldrb r1, [r1]
- ldr r3, _0801E548 @ =0x00016003
- adds r0, r3
- strb r1, [r0]
- mov r8, r2
- ldr r2, _0801E54C @ =gBattleMons
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x13
- bne _0801E48A
- ldr r0, _0801E550 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- bne _0801E48A
- cmp r4, 0
- bne _0801E48A
- ldrb r0, [r7, 0x3]
- cmp r0, 0x9
- bhi _0801E48A
- bl _0801F5DC
-_0801E48A:
- mov r1, r8
- ldrb r0, [r1]
- bl GetBankIdentity
- ldr r2, _0801E554 @ =gSideAffecting
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r2
- ldrh r1, [r1]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0801E4C4
- ldr r0, _0801E550 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- bne _0801E4C4
- cmp r4, 0
- bne _0801E4C4
- ldr r0, _0801E558 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- cmp r0, 0x7
- bhi _0801E4C4
- bl _0801F5DC
-_0801E4C4:
- ldr r3, _0801E54C @ =gBattleMons
- ldr r2, _0801E538 @ =gEffectBank
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0, 0x28]
- mov r8, r2
- mov r9, r3
- cmp r0, 0
- bne _0801E4EA
- ldr r0, _0801E558 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- cmp r0, 0xB
- beq _0801E4EA
- cmp r0, 0x1F
- beq _0801E4EA
- bl _0801F5DC
-_0801E4EA:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- mov r1, r9
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0801E50C
- cmp r6, 0x40
- beq _0801E50C
- bl _0801F5DC
-_0801E50C:
- ldr r0, _0801E558 @ =gBattleCommunication
- ldrb r1, [r0, 0x3]
- adds r7, r0, 0
- cmp r1, 0x6
- bls _0801E518
- b _0801EB4A
-_0801E518:
- ldr r1, _0801E55C @ =gStatusFlagsForMoveEffects
- ldrb r0, [r7, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0x10
- bne _0801E528
- b _0801E714
-_0801E528:
- cmp r0, 0x10
- bhi _0801E560
- cmp r0, 0x7
- beq _0801E57A
- cmp r0, 0x8
- bne _0801E536
- b _0801E630
-_0801E536:
- b _0801EA14
- .align 2, 0
-_0801E538: .4byte gEffectBank
-_0801E53C: .4byte gBankTarget
-_0801E540: .4byte 0x02000000
-_0801E544: .4byte gBankAttacker
-_0801E548: .4byte 0x00016003
-_0801E54C: .4byte gBattleMons
-_0801E550: .4byte gHitMarker
-_0801E554: .4byte gSideAffecting
-_0801E558: .4byte gBattleCommunication
-_0801E55C: .4byte gStatusFlagsForMoveEffects
-_0801E560:
- cmp r0, 0x40
- bne _0801E566
- b _0801E888
-_0801E566:
- cmp r0, 0x40
- bhi _0801E572
- cmp r0, 0x20
- bne _0801E570
- b _0801E7EA
-_0801E570:
- b _0801EA14
-_0801E572:
- cmp r0, 0x80
- bne _0801E578
- b _0801E8E4
-_0801E578:
- b _0801EA14
-_0801E57A:
- mov r3, r8
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- add r0, r9
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2B
- beq _0801E5DC
- ldr r0, _0801E5D4 @ =gActiveBank
- movs r1, 0
- strb r1, [r0]
- ldr r1, _0801E5D8 @ =gNoOfAllBanks
- ldrb r3, [r1]
- adds r7, r0, 0
- mov r12, r1
- cmp r3, 0
- beq _0801E5E8
- mov r4, r9
- ldr r0, [r4, 0x50]
- movs r1, 0x70
- ands r0, r1
- cmp r0, 0
- bne _0801E5E8
- adds r1, r7, 0
- mov r6, r9
- adds r6, 0x50
- movs r5, 0x58
- movs r4, 0x70
-_0801E5B4:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r3
- bcs _0801E5E8
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r6
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _0801E5B4
- b _0801E5E8
- .align 2, 0
-_0801E5D4: .4byte gActiveBank
-_0801E5D8: .4byte gNoOfAllBanks
-_0801E5DC:
- ldr r0, _0801E628 @ =gActiveBank
- ldr r2, _0801E62C @ =gNoOfAllBanks
- ldrb r1, [r2]
- strb r1, [r0]
- adds r7, r0, 0
- mov r12, r2
-_0801E5E8:
- mov r0, r8
- ldrb r2, [r0]
- movs r0, 0x58
- adds r1, r2, 0
- muls r1, r0
- mov r0, r9
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E600
- b _0801EA14
-_0801E600:
- ldrb r0, [r7]
- mov r3, r12
- ldrb r3, [r3]
- cmp r0, r3
- beq _0801E60C
- b _0801EA14
-_0801E60C:
- mov r4, r9
- adds r0, r1, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x48
- bne _0801E61A
- b _0801EA14
-_0801E61A:
- cmp r0, 0xF
- bne _0801E620
- b _0801EA14
-_0801E620:
- adds r0, r2, 0
- bl CancelMultiTurnMoves
- b _0801EA04
- .align 2, 0
-_0801E628: .4byte gActiveBank
-_0801E62C: .4byte gNoOfAllBanks
-_0801E630:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- add r0, r9
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x11
- bne _0801E688
- cmp r4, 0x1
- beq _0801E64A
- cmp r5, 0x80
- bne _0801E688
-_0801E64A:
- ldr r0, _0801E678 @ =gLastUsedAbility
- strb r1, [r0]
- mov r3, r8
- ldrb r0, [r3]
- movs r1, 0x11
- bl RecordAbilityBattle
- ldr r4, _0801E67C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E680 @ =BattleScript_PSNPrevention
-_0801E664:
- str r0, [r4]
- ldr r2, _0801E684 @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E676
- b _0801E928
-_0801E676:
- b _0801E94C
- .align 2, 0
-_0801E678: .4byte gLastUsedAbility
-_0801E67C: .4byte gBattlescriptCurrInstr
-_0801E680: .4byte BattleScript_PSNPrevention
-_0801E684: .4byte gHitMarker
-_0801E688:
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x58
- muls r0, r1
- add r0, r9
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r1, 0x3
- beq _0801E6AC
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _0801E6AC
- cmp r1, 0x8
- beq _0801E6AC
- cmp r0, 0x8
- bne _0801E6C6
-_0801E6AC:
- ldr r0, _0801E710 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E6C6
- cmp r4, 0x1
- bne _0801E6C0
- b _0801E98C
-_0801E6C0:
- cmp r5, 0x80
- bne _0801E6C6
- b _0801E98C
-_0801E6C6:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r1, r0
- mov r4, r9
- adds r3, r1, r4
- adds r0, r3, 0
- adds r0, 0x21
- ldrb r4, [r0]
- cmp r4, 0x3
- bne _0801E6DE
- b _0801EA14
-_0801E6DE:
- adds r0, 0x1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0801E6E8
- b _0801EA14
-_0801E6E8:
- cmp r4, 0x8
- bne _0801E6EE
- b _0801EA14
-_0801E6EE:
- cmp r0, 0x8
- bne _0801E6F4
- b _0801EA14
-_0801E6F4:
- mov r0, r9
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E702
- b _0801EA14
-_0801E702:
- adds r0, r3, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x11
- bne _0801E70E
- b _0801EA14
-_0801E70E:
- b _0801EA04
- .align 2, 0
-_0801E710: .4byte gHitMarker
-_0801E714:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- add r0, r9
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x29
- bne _0801E758
- cmp r4, 0x1
- beq _0801E72E
- cmp r5, 0x80
- bne _0801E758
-_0801E72E:
- ldr r0, _0801E74C @ =gLastUsedAbility
- strb r1, [r0]
- mov r3, r8
- ldrb r0, [r3]
- movs r1, 0x29
- bl RecordAbilityBattle
- ldr r4, _0801E750 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E754 @ =BattleScript_BRNPrevention
- b _0801E664
- .align 2, 0
-_0801E74C: .4byte gLastUsedAbility
-_0801E750: .4byte gBattlescriptCurrInstr
-_0801E754: .4byte BattleScript_BRNPrevention
-_0801E758:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- mov r2, r9
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xA
- beq _0801E778
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _0801E7A8
-_0801E778:
- ldr r0, _0801E79C @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E7A8
- cmp r4, 0x1
- beq _0801E78E
- cmp r5, 0x80
- bne _0801E7A8
-_0801E78E:
- ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention
- b _0801E998
- .align 2, 0
-_0801E79C: .4byte gHitMarker
-_0801E7A0: .4byte gBattlescriptCurrInstr
-_0801E7A4: .4byte BattleScript_BRNPrevention
-_0801E7A8:
- mov r3, r8
- ldrb r0, [r3]
- movs r1, 0x58
- adds r2, r0, 0
- muls r2, r1
- mov r4, r9
- adds r1, r2, r4
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _0801E7C2
- b _0801EA14
-_0801E7C2:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _0801E7CE
- b _0801EA14
-_0801E7CE:
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _0801E7DA
- b _0801EA14
-_0801E7DA:
- mov r0, r9
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E7E8
- b _0801EA14
-_0801E7E8:
- b _0801EA04
-_0801E7EA:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0801E826
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801E826
- ldr r0, _0801E87C @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0801E826
- movs r1, 0
- str r1, [sp, 0x4]
-_0801E826:
- ldr r4, _0801E880 @ =gBattleMons
- ldr r0, _0801E884 @ =gEffectBank
- ldrb r3, [r0]
- movs r0, 0x58
- adds r2, r3, 0
- muls r2, r0
- adds r1, r2, r4
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xF
- bne _0801E840
- b _0801EA14
-_0801E840:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xF
- bne _0801E84C
- b _0801EA14
-_0801E84C:
- adds r0, r4, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E85A
- b _0801EA14
-_0801E85A:
- ldr r2, [sp, 0x4]
- cmp r2, 0
- bne _0801E862
- b _0801EA14
-_0801E862:
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x28
- bne _0801E86E
- b _0801EA14
-_0801E86E:
- adds r0, r3, 0
- bl CancelMultiTurnMoves
- movs r3, 0x1
- mov r10, r3
- b _0801EA14
- .align 2, 0
-_0801E87C: .4byte gBattleWeather
-_0801E880: .4byte gBattleMons
-_0801E884: .4byte gEffectBank
-_0801E888:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- mov r2, r9
- adds r0, r1, r2
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0x7
- bne _0801E8D0
- cmp r4, 0x1
- beq _0801E8A6
- cmp r5, 0x80
- beq _0801E8A6
- b _0801EA14
-_0801E8A6:
- ldr r0, _0801E8C4 @ =gLastUsedAbility
- strb r2, [r0]
- mov r3, r8
- ldrb r0, [r3]
- movs r1, 0x7
- bl RecordAbilityBattle
- ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention
- b _0801E664
- .align 2, 0
-_0801E8C4: .4byte gLastUsedAbility
-_0801E8C8: .4byte gBattlescriptCurrInstr
-_0801E8CC: .4byte BattleScript_PRLZPrevention
-_0801E8D0:
- mov r0, r9
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E8DE
- b _0801EA14
-_0801E8DE:
- movs r4, 0x1
- mov r10, r4
- b _0801EA14
-_0801E8E4:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- add r0, r9
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x11
- bne _0801E952
- cmp r4, 0x1
- beq _0801E8FE
- cmp r5, 0x80
- bne _0801E952
-_0801E8FE:
- ldr r0, _0801E938 @ =gLastUsedAbility
- strb r1, [r0]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x11
- bl RecordAbilityBattle
- ldr r4, _0801E93C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E940 @ =BattleScript_PSNPrevention
- str r0, [r4]
- ldr r2, _0801E944 @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E94C
-_0801E928:
- movs r0, 0x1
- strb r0, [r7, 0x5]
- ldr r0, _0801E948 @ =0xffffdfff
- ands r1, r0
- str r1, [r2]
- bl _0801F5FA
- .align 2, 0
-_0801E938: .4byte gLastUsedAbility
-_0801E93C: .4byte gBattlescriptCurrInstr
-_0801E940: .4byte BattleScript_PSNPrevention
-_0801E944: .4byte gHitMarker
-_0801E948: .4byte 0xffffdfff
-_0801E94C:
- strb r0, [r7, 0x5]
- bl _0801F5FA
-_0801E952:
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x58
- muls r0, r1
- add r0, r9
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r1, 0x3
- beq _0801E976
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _0801E976
- cmp r1, 0x8
- beq _0801E976
- cmp r0, 0x8
- bne _0801E9B4
-_0801E976:
- ldr r0, _0801E9A4 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E9B4
- cmp r4, 0x1
- beq _0801E98C
- cmp r5, 0x80
- bne _0801E9B4
-_0801E98C:
- ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E9AC @ =BattleScript_PSNPrevention
-_0801E998:
- str r0, [r4]
- ldr r1, _0801E9B0 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- bl _0801F5FA
- .align 2, 0
-_0801E9A4: .4byte gHitMarker
-_0801E9A8: .4byte gBattlescriptCurrInstr
-_0801E9AC: .4byte BattleScript_PSNPrevention
-_0801E9B0: .4byte gBattleCommunication
-_0801E9B4:
- mov r3, r8
- ldrb r0, [r3]
- movs r6, 0x58
- muls r0, r6
- mov r2, r9
- adds r2, 0x4C
- adds r5, r0, r2
- ldr r4, [r5]
- cmp r4, 0
- bne _0801EA14
- mov r3, r9
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r3, [r0]
- cmp r3, 0x3
- beq _0801EA0A
- adds r0, 0x1
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _0801EA0A
- cmp r3, 0x8
- beq _0801EA0A
- cmp r0, 0x8
- beq _0801EA0A
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _0801EA14
- mov r4, r8
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x9
- negs r2, r2
- ands r0, r2
- str r0, [r1]
-_0801EA04:
- movs r0, 0x1
- mov r10, r0
- b _0801EA14
-_0801EA0A:
- ldr r0, _0801EA58 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
-_0801EA14:
- mov r1, r10
- cmp r1, 0x1
- beq _0801EA1C
- b _0801EB3C
-_0801EA1C:
- ldr r0, _0801EA5C @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects
- ldr r0, _0801EA64 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- cmp r3, 0x7
- bne _0801EA70
- bl Random
- ldr r2, _0801EA68 @ =gBattleMons
- ldr r1, _0801EA6C @ =gEffectBank
- ldrb r3, [r1]
- movs r1, 0x58
- muls r3, r1
- adds r2, 0x4C
- adds r3, r2
- movs r1, 0x3
- ands r1, r0
- adds r1, 0x2
- ldr r0, [r3]
- orrs r0, r1
- str r0, [r3]
- b _0801EA84
- .align 2, 0
-_0801EA58: .4byte gBattleMoveFlags
-_0801EA5C: .4byte gBattlescriptCurrInstr
-_0801EA60: .4byte gStatusFlagsForMoveEffects
-_0801EA64: .4byte gBattleCommunication
-_0801EA68: .4byte gBattleMons
-_0801EA6C: .4byte gEffectBank
-_0801EA70:
- ldr r2, _0801EAD4 @ =gBattleMons
- ldr r0, _0801EAD8 @ =gEffectBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r2, 0x4C
- adds r1, r2
- ldr r0, [r1]
- orrs r0, r3
- str r0, [r1]
-_0801EA84:
- ldr r2, _0801EADC @ =gBattlescriptCurrInstr
- ldr r1, _0801EAE0 @ =gMoveEffectBS_Ptrs
- ldr r5, _0801EAE4 @ =gBattleCommunication
- ldrb r0, [r5, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- ldr r4, _0801EAE8 @ =gActiveBank
- ldr r1, _0801EAD8 @ =gEffectBank
- ldrb r0, [r1]
- strb r0, [r4]
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- ldr r1, _0801EAEC @ =gUnknown_02024ACC
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r2, _0801EAF0 @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _0801EAF8
- movs r0, 0x1
- strb r0, [r5, 0x5]
- ldr r0, _0801EAF4 @ =0xffffdfff
- ands r1, r0
- str r1, [r2]
- b _0801EAFA
- .align 2, 0
-_0801EAD4: .4byte gBattleMons
-_0801EAD8: .4byte gEffectBank
-_0801EADC: .4byte gBattlescriptCurrInstr
-_0801EAE0: .4byte gMoveEffectBS_Ptrs
-_0801EAE4: .4byte gBattleCommunication
-_0801EAE8: .4byte gActiveBank
-_0801EAEC: .4byte gUnknown_02024ACC
-_0801EAF0: .4byte gHitMarker
-_0801EAF4: .4byte 0xffffdfff
-_0801EAF8:
- strb r0, [r5, 0x5]
-_0801EAFA:
- ldr r0, _0801EB2C @ =gBattleCommunication
- ldrb r2, [r0, 0x3]
- adds r7, r0, 0
- cmp r2, 0x2
- beq _0801EB14
- cmp r2, 0x6
- beq _0801EB14
- cmp r2, 0x5
- beq _0801EB14
- cmp r2, 0x3
- beq _0801EB14
- bl _0801F5FA
-_0801EB14:
- ldr r0, _0801EB30 @ =0x02000000
- ldrb r1, [r7, 0x3]
- ldr r2, _0801EB34 @ =0x000160ca
- adds r0, r2
- strb r1, [r0]
- ldr r2, _0801EB38 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 7
- bl _0801F4F2
- .align 2, 0
-_0801EB2C: .4byte gBattleCommunication
-_0801EB30: .4byte 0x02000000
-_0801EB34: .4byte 0x000160ca
-_0801EB38: .4byte gHitMarker
-_0801EB3C:
- mov r3, r10
- cmp r3, 0
- beq _0801EB46
- bl _0801F5FA
-_0801EB46:
- bl _0801F5DC
-_0801EB4A:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- mov r0, r9
- adds r0, 0x50
- adds r1, r0
- ldr r2, _0801EB84 @ =gStatusFlagsForMoveEffects
- ldrb r3, [r7, 0x3]
- lsls r0, r3, 2
- adds r0, r2
- ldr r1, [r1]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0801EB6E
- bl _0801F5DC
-_0801EB6E:
- subs r0, r3, 0x7
- cmp r0, 0x34
- bls _0801EB78
- bl _0801F5FA
-_0801EB78:
- lsls r0, 2
- ldr r1, _0801EB88 @ =_0801EB8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801EB84: .4byte gStatusFlagsForMoveEffects
-_0801EB88: .4byte _0801EB8C
- .align 2, 0
-_0801EB8C:
- .4byte _0801EC60
- .4byte _0801ECD4
- .4byte _0801EE4C
- .4byte _0801ED60
- .4byte _0801EDDC
- .4byte _0801EE84
- .4byte _0801EECC
- .4byte _0801EFA8
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F13C
- .4byte _0801F184
- .4byte _0801F1A4
- .4byte _0801F364
- .4byte _0801F3A0
- .4byte _0801F3BC
- .4byte _0801F3D4
- .4byte _0801F3EC
- .4byte _0801F44C
- .4byte _0801F464
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F4A8
- .4byte _0801F500
- .4byte _0801F5FA
- .4byte _0801F5FA
- .4byte _0801F5FA
- .4byte _0801F5FA
- .4byte _0801F5EC
-_0801EC60:
- mov r1, r8
- ldrb r0, [r1]
- movs r5, 0x58
- adds r1, r0, 0
- muls r1, r5
- mov r2, r9
- adds r0, r1, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0801EC7A
- bl _0801F5DC
-_0801EC7A:
- mov r4, r9
- adds r4, 0x50
- adds r0, r1, r4
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0801EC8E
- bl _0801F5DC
-_0801EC8E:
- bl Random
- mov r3, r8
- ldrb r1, [r3]
- adds r2, r1, 0
- muls r2, r5
- adds r2, r4
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsrs r1, 16
- adds r1, 0x2
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs
- ldr r0, _0801ECD0 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _0801F5F8
- .align 2, 0
-_0801ECC8: .4byte gBattlescriptCurrInstr
-_0801ECCC: .4byte gMoveEffectBS_Ptrs
-_0801ECD0: .4byte gBattleCommunication
-_0801ECD4:
- mov r0, r8
- ldrb r2, [r0]
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- add r0, r9
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x27
- bne _0801ED18
- cmp r4, 0x1
- beq _0801ECF4
- cmp r5, 0x80
- beq _0801ECF4
- bl _0801F5DC
-_0801ECF4:
- ldr r0, _0801ED0C @ =gLastUsedAbility
- strb r1, [r0]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x27
- bl RecordAbilityBattle
- ldr r1, _0801ED10 @ =gBattlescriptCurrInstr
- ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention
- str r0, [r1]
- bl _0801F5FA
- .align 2, 0
-_0801ED0C: .4byte gLastUsedAbility
-_0801ED10: .4byte gBattlescriptCurrInstr
-_0801ED14: .4byte BattleScript_FlinchPrevention
-_0801ED18:
- adds r0, r2, 0
- bl sub_801E3B4
- ldr r1, _0801ED54 @ =gCurrentMoveTurn
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bhi _0801ED2E
- bl _0801F5DC
-_0801ED2E:
- mov r2, r8
- ldrb r0, [r2]
- adds r2, r0, 0
- muls r2, r6
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r1, _0801ED58 @ =gStatusFlagsForMoveEffects
- ldr r0, _0801ED5C @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- orrs r1, r0
- str r1, [r2]
- bl _0801F5DC
- .align 2, 0
-_0801ED54: .4byte gCurrentMoveTurn
-_0801ED58: .4byte gStatusFlagsForMoveEffects
-_0801ED5C: .4byte gBattleCommunication
-_0801ED60:
- mov r3, r8
- ldrb r0, [r3]
- movs r5, 0x58
- muls r0, r5
- mov r4, r9
- adds r4, 0x50
- adds r2, r0, r4
- ldr r1, [r2]
- movs r0, 0x70
- ands r0, r1
- cmp r0, 0
- beq _0801ED7C
- bl _0801F5DC
-_0801ED7C:
- movs r0, 0x80
- lsls r0, 5
- orrs r1, r0
- str r1, [r2]
- ldr r1, _0801EDC8 @ =gLockedMove
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, _0801EDCC @ =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- bl Random
- mov r2, r8
- ldrb r1, [r2]
- adds r2, r1, 0
- muls r2, r5
- adds r2, r4
- movs r1, 0x3
- ands r1, r0
- adds r1, 0x2
- lsls r1, 4
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs
- ldr r0, _0801EDD8 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _0801F5F8
- .align 2, 0
-_0801EDC8: .4byte gLockedMove
-_0801EDCC: .4byte gCurrentMove
-_0801EDD0: .4byte gBattlescriptCurrInstr
-_0801EDD4: .4byte gMoveEffectBS_Ptrs
-_0801EDD8: .4byte gBattleCommunication
-_0801EDDC:
- ldr r5, _0801EE30 @ =gBankAttacker
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _0801EE14
- ldr r4, _0801EE34 @ =gPaydayMoney
- ldrh r3, [r4]
- ldr r2, _0801EE38 @ =gBattleMons
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, r3, r0
- strh r0, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r3, r0
- bls _0801EE14
- ldr r3, _0801EE3C @ =0x0000ffff
- adds r0, r3, 0
- strh r0, [r4]
-_0801EE14:
- ldr r4, _0801EE40 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs
- ldr r0, _0801EE48 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _0801F5F8
- .align 2, 0
-_0801EE30: .4byte gBankAttacker
-_0801EE34: .4byte gPaydayMoney
-_0801EE38: .4byte gBattleMons
-_0801EE3C: .4byte 0x0000ffff
-_0801EE40: .4byte gBattlescriptCurrInstr
-_0801EE44: .4byte gMoveEffectBS_Ptrs
-_0801EE48: .4byte gBattleCommunication
-_0801EE4C:
- mov r4, r8
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- mov r1, r9
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _0801EE62
- b _0801F5DC
-_0801EE62:
- bl Random
- ldr r4, _0801EE80 @ =gBattleCommunication
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, 0x3
- strb r0, [r4, 0x3]
- movs r0, 0
- movs r1, 0
- bl sub_801E3EC
- b _0801F5FA
- .align 2, 0
-_0801EE80: .4byte gBattleCommunication
-_0801EE84:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 5
- orrs r0, r1
- str r0, [r2]
- ldr r1, _0801EEC0 @ =gLockedMove
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldr r1, _0801EEC4 @ =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- ldr r0, _0801EEC8 @ =gProtectStructs
- ldrb r1, [r2]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x1]
- b _0801F5DC
- .align 2, 0
-_0801EEC0: .4byte gLockedMove
-_0801EEC4: .4byte gCurrentMove
-_0801EEC8: .4byte gProtectStructs
-_0801EECC:
- mov r3, r8
- ldrb r0, [r3]
- movs r6, 0x58
- muls r0, r6
- mov r4, r9
- adds r4, 0x50
- adds r0, r4
- ldr r5, [r0]
- movs r0, 0xE0
- lsls r0, 8
- ands r5, r0
- cmp r5, 0
- beq _0801EEE8
- b _0801F5DC
-_0801EEE8:
- bl Random
- mov r2, r8
- ldrb r1, [r2]
- adds r2, r1, 0
- muls r2, r6
- adds r2, r4
- movs r1, 0x3
- ands r1, r0
- adds r1, 0x3
- lsls r1, 13
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldr r2, _0801EF80 @ =0x02000000
- mov r3, r8
- ldrb r0, [r3]
- lsls r0, 1
- ldr r4, _0801EF84 @ =0x00016004
- adds r0, r4
- adds r0, r2
- ldr r6, _0801EF88 @ =gCurrentMove
- ldrh r1, [r6]
- strb r1, [r0]
- ldrb r0, [r3]
- lsls r0, 1
- ldr r1, _0801EF8C @ =0x00016005
- adds r0, r1
- adds r0, r2
- ldrh r1, [r6]
- lsrs r1, 8
- strb r1, [r0]
- ldrb r0, [r3]
- ldr r3, _0801EF90 @ =0x00016020
- adds r0, r3
- adds r0, r2
- ldr r1, _0801EF94 @ =gBankAttacker
- ldrb r1, [r1]
- strb r1, [r0]
- ldr r4, _0801EF98 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs
- ldr r2, _0801EFA0 @ =gBattleCommunication
- ldrb r0, [r2, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r4]
- strb r5, [r2, 0x5]
- ldr r1, _0801EFA4 @ =gTrappingMoves
- ldrh r0, [r1]
- ldrh r4, [r6]
- cmp r0, r4
- bne _0801EF5C
- b _0801F5FA
-_0801EF5C:
- adds r3, r1, 0
- adds r1, r6, 0
-_0801EF60:
- ldrb r0, [r2, 0x5]
- adds r0, 0x1
- strb r0, [r2, 0x5]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _0801EF70
- b _0801F5FA
-_0801EF70:
- ldrb r0, [r2, 0x5]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- ldrh r4, [r1]
- cmp r0, r4
- bne _0801EF60
- b _0801F5FA
- .align 2, 0
-_0801EF80: .4byte 0x02000000
-_0801EF84: .4byte 0x00016004
-_0801EF88: .4byte gCurrentMove
-_0801EF8C: .4byte 0x00016005
-_0801EF90: .4byte 0x00016020
-_0801EF94: .4byte gBankAttacker
-_0801EF98: .4byte gBattlescriptCurrInstr
-_0801EF9C: .4byte gMoveEffectBS_Ptrs
-_0801EFA0: .4byte gBattleCommunication
-_0801EFA4: .4byte gTrappingMoves
-_0801EFA8:
- ldr r1, _0801EFD8 @ =gBattleMoveDamage
- ldr r0, _0801EFDC @ =gHP_dealt
- ldr r0, [r0]
- cmp r0, 0
- bge _0801EFB4
- adds r0, 0x3
-_0801EFB4:
- asrs r0, 2
- str r0, [r1]
- cmp r0, 0
- bne _0801EFC0
- movs r0, 0x1
- str r0, [r1]
-_0801EFC0:
- ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs
- ldr r0, _0801EFE8 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- b _0801F5F8
- .align 2, 0
-_0801EFD8: .4byte gBattleMoveDamage
-_0801EFDC: .4byte gHP_dealt
-_0801EFE0: .4byte gBattlescriptCurrInstr
-_0801EFE4: .4byte gMoveEffectBS_Ptrs
-_0801EFE8: .4byte gBattleCommunication
-_0801EFEC:
- ldrb r1, [r7, 0x3]
- adds r1, 0xF2
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x10
- adds r2, r6, 0
- movs r3, 0
- bl sub_8025E20
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _0801F008
- b _0801F5DC
-_0801F008:
- ldr r2, _0801F02C @ =0x02000000
- ldrb r1, [r7, 0x3]
- movs r0, 0x3F
- ands r0, r1
- ldr r4, _0801F030 @ =0x000160a4
- adds r1, r2, r4
- strb r0, [r1]
- ldr r0, _0801F034 @ =0x000160a5
- adds r2, r0
- strb r3, [r2]
- ldr r4, _0801F038 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F03C @ =BattleScript_StatUp
- b _0801F5F8
- .align 2, 0
-_0801F02C: .4byte 0x02000000
-_0801F030: .4byte 0x000160a4
-_0801F034: .4byte 0x000160a5
-_0801F038: .4byte gBattlescriptCurrInstr
-_0801F03C: .4byte BattleScript_StatUp
-_0801F040:
- movs r0, 0x70
- negs r0, r0
- ldrb r1, [r7, 0x3]
- adds r1, 0xEB
- lsls r1, 24
- lsrs r1, 24
- adds r2, r6, 0
- movs r3, 0
- bl sub_8025E20
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _0801F05E
- b _0801F5DC
-_0801F05E:
- ldr r2, _0801F080 @ =0x02000000
- ldrb r1, [r7, 0x3]
- movs r0, 0x3F
- ands r0, r1
- ldr r4, _0801F084 @ =0x000160a4
- adds r1, r2, r4
- strb r0, [r1]
- ldr r0, _0801F088 @ =0x000160a5
- adds r2, r0
- strb r3, [r2]
- ldr r4, _0801F08C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F090 @ =BattleScript_StatDown
- b _0801F5F8
- .align 2, 0
-_0801F080: .4byte 0x02000000
-_0801F084: .4byte 0x000160a4
-_0801F088: .4byte 0x000160a5
-_0801F08C: .4byte gBattlescriptCurrInstr
-_0801F090: .4byte BattleScript_StatDown
-_0801F094:
- ldrb r1, [r7, 0x3]
- adds r1, 0xDA
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x20
- adds r2, r6, 0
- movs r3, 0
- bl sub_8025E20
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _0801F0B0
- b _0801F5DC
-_0801F0B0:
- ldr r2, _0801F0D4 @ =0x02000000
- ldrb r1, [r7, 0x3]
- movs r0, 0x3F
- ands r0, r1
- ldr r4, _0801F0D8 @ =0x000160a4
- adds r1, r2, r4
- strb r0, [r1]
- ldr r0, _0801F0DC @ =0x000160a5
- adds r2, r0
- strb r3, [r2]
- ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F0E4 @ =BattleScript_StatUp
- b _0801F5F8
- .align 2, 0
-_0801F0D4: .4byte 0x02000000
-_0801F0D8: .4byte 0x000160a4
-_0801F0DC: .4byte 0x000160a5
-_0801F0E0: .4byte gBattlescriptCurrInstr
-_0801F0E4: .4byte BattleScript_StatUp
-_0801F0E8:
- movs r0, 0x60
- negs r0, r0
- ldrb r1, [r7, 0x3]
- adds r1, 0xD3
- lsls r1, 24
- lsrs r1, 24
- adds r2, r6, 0
- movs r3, 0
- bl sub_8025E20
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _0801F106
- b _0801F5DC
-_0801F106:
- ldr r2, _0801F128 @ =0x02000000
- ldrb r1, [r7, 0x3]
- movs r0, 0x3F
- ands r0, r1
- ldr r4, _0801F12C @ =0x000160a4
- adds r1, r2, r4
- strb r0, [r1]
- ldr r0, _0801F130 @ =0x000160a5
- adds r2, r0
- strb r3, [r2]
- ldr r4, _0801F134 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F138 @ =BattleScript_StatDown
- b _0801F5F8
- .align 2, 0
-_0801F128: .4byte 0x02000000
-_0801F12C: .4byte 0x000160a4
-_0801F130: .4byte 0x000160a5
-_0801F134: .4byte gBattlescriptCurrInstr
-_0801F138: .4byte BattleScript_StatDown
-_0801F13C:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 15
- orrs r0, r1
- str r0, [r2]
- ldr r2, _0801F178 @ =gDisableStructs
- mov r3, r8
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x2
- strb r1, [r0, 0x19]
- ldr r1, _0801F17C @ =gLockedMove
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, _0801F180 @ =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- b _0801F5DC
- .align 2, 0
-_0801F178: .4byte gDisableStructs
-_0801F17C: .4byte gLockedMove
-_0801F180: .4byte gCurrentMove
-_0801F184:
- ldr r0, _0801F1A0 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 16
-_0801F19A:
- orrs r0, r1
- str r0, [r2]
- b _0801F5DC
- .align 2, 0
-_0801F1A0: .4byte gBankAttacker
-_0801F1A4:
- ldr r4, _0801F254 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0801F1D8
- ldr r0, _0801F258 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0801F25C @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _0801F214
- ldr r0, _0801F260 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _0801F1D8
- b _0801F5DC
-_0801F1D8:
- ldr r0, _0801F258 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0801F25C @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _0801F214
- ldr r0, _0801F260 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _0801F214
- ldr r0, _0801F264 @ =gWishFutureKnock
- adds r0, 0x29
- adds r0, r6, r0
- ldrb r1, [r0]
- ldr r3, _0801F268 @ =gBitTable
- ldr r2, _0801F26C @ =gBattlePartyID
- ldr r0, _0801F254 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0801F214
- b _0801F5DC
-_0801F214:
- ldr r2, _0801F270 @ =gBattleMons
- ldr r1, _0801F274 @ =gBankTarget
- ldrb r0, [r1]
- movs r3, 0x58
- muls r0, r3
- adds r4, r0, r2
- ldrh r0, [r4, 0x2E]
- adds r7, r1, 0
- mov r9, r2
- cmp r0, 0
- beq _0801F284
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x3C
- bne _0801F284
- ldr r1, _0801F278 @ =gBattlescriptCurrInstr
- ldr r0, _0801F27C @ =BattleScript_NoItemSteal
- str r0, [r1]
- ldr r1, _0801F280 @ =gLastUsedAbility
- ldrb r0, [r7]
- muls r0, r3
- add r0, r9
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _0801F5FA
- .align 2, 0
-_0801F254: .4byte gBankAttacker
-_0801F258: .4byte gBattleTypeFlags
-_0801F25C: .4byte 0x00000902
-_0801F260: .4byte gTrainerBattleOpponent
-_0801F264: .4byte gWishFutureKnock
-_0801F268: .4byte gBitTable
-_0801F26C: .4byte gBattlePartyID
-_0801F270: .4byte gBattleMons
-_0801F274: .4byte gBankTarget
-_0801F278: .4byte gBattlescriptCurrInstr
-_0801F27C: .4byte BattleScript_NoItemSteal
-_0801F280: .4byte gLastUsedAbility
-_0801F284:
- ldr r4, _0801F340 @ =gBankAttacker
- mov r10, r4
- ldrb r1, [r4]
- movs r0, 0x58
- mov r8, r0
- mov r0, r8
- muls r0, r1
- add r0, r9
- ldrh r3, [r0, 0x2E]
- cmp r3, 0
- beq _0801F29C
- b _0801F5DC
-_0801F29C:
- ldrb r0, [r7]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- ldrh r2, [r0, 0x2E]
- adds r0, r2, 0
- cmp r0, 0xAF
- bne _0801F2B0
- b _0801F5DC
-_0801F2B0:
- cmp r0, 0
- bne _0801F2B6
- b _0801F5DC
-_0801F2B6:
- lsls r0, r1, 1
- ldr r5, _0801F344 @ =0x020160f0
- adds r0, r5
- ldr r1, _0801F348 @ =gLastUsedItem
- strh r2, [r0]
- strh r2, [r1]
- ldrb r0, [r7]
- mov r4, r8
- muls r4, r0
- adds r0, r4, 0
- add r0, r9
- movs r6, 0
- strh r3, [r0, 0x2E]
- ldr r4, _0801F34C @ =gActiveBank
- mov r2, r10
- ldrb r0, [r2]
- strb r0, [r4]
- str r1, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- mov r3, r10
- ldrb r0, [r3]
- bl MarkBufferBankForExecution
- ldrb r0, [r7]
- strb r0, [r4]
- ldrb r0, [r7]
- mov r4, r8
- muls r4, r0
- adds r0, r4, 0
- mov r1, r9
- adds r1, 0x2E
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r4, _0801F350 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F354 @ =BattleScript_ItemSteal
- str r0, [r4]
- ldr r0, _0801F358 @ =0xfffe9f10
- adds r5, r0
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _0801F35C @ =0x000160e8
- adds r0, r1
- adds r0, r5
- strb r6, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r2, _0801F360 @ =0x000160e9
- adds r0, r2
- adds r0, r5
- strb r6, [r0]
- b _0801F5FA
- .align 2, 0
-_0801F340: .4byte gBankAttacker
-_0801F344: .4byte 0x020160f0
-_0801F348: .4byte gLastUsedItem
-_0801F34C: .4byte gActiveBank
-_0801F350: .4byte gBattlescriptCurrInstr
-_0801F354: .4byte BattleScript_ItemSteal
-_0801F358: .4byte 0xfffe9f10
-_0801F35C: .4byte 0x000160e8
-_0801F360: .4byte 0x000160e9
-_0801F364:
- ldr r3, _0801F394 @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 19
- orrs r0, r1
- str r0, [r2]
- ldr r2, _0801F398 @ =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _0801F39C @ =gBankAttacker
- ldrb r1, [r1]
- strb r1, [r0, 0x14]
- b _0801F5DC
- .align 2, 0
-_0801F394: .4byte gBankTarget
-_0801F398: .4byte gDisableStructs
-_0801F39C: .4byte gBankAttacker
-_0801F3A0:
- ldr r0, _0801F3B8 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 20
- b _0801F19A
- .align 2, 0
-_0801F3B8: .4byte gBankTarget
-_0801F3BC:
- ldr r4, _0801F3CC @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F3D0 @ =gUnknown_081D9224
- b _0801F5F8
- .align 2, 0
-_0801F3CC: .4byte gBattlescriptCurrInstr
-_0801F3D0: .4byte gUnknown_081D9224
-_0801F3D4:
- ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway
- b _0801F5F8
- .align 2, 0
-_0801F3E4: .4byte gBattlescriptCurrInstr
-_0801F3E8: .4byte BattleScript_RapidSpinAway
-_0801F3EC:
- ldr r6, _0801F43C @ =gBankTarget
- ldrb r0, [r6]
- movs r2, 0x58
- muls r0, r2
- mov r1, r9
- adds r1, 0x4C
- adds r5, r0, r1
- ldr r4, [r5]
- movs r0, 0x40
- ands r0, r4
- cmp r0, 0
- bne _0801F406
- b _0801F5DC
-_0801F406:
- movs r0, 0x41
- negs r0, r0
- ands r4, r0
- str r4, [r5]
- ldr r4, _0801F440 @ =gActiveBank
- ldrb r0, [r6]
- strb r0, [r4]
- ldrb r0, [r4]
- muls r0, r2
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r4, _0801F444 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal
- b _0801F5F8
- .align 2, 0
-_0801F43C: .4byte gBankTarget
-_0801F440: .4byte gActiveBank
-_0801F444: .4byte gBattlescriptCurrInstr
-_0801F448: .4byte BattleScript_TargetPRLZHeal
-_0801F44C:
- ldr r4, _0801F45C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F460 @ =gUnknown_081D93FA
- b _0801F5F8
- .align 2, 0
-_0801F45C: .4byte gBattlescriptCurrInstr
-_0801F460: .4byte gUnknown_081D93FA
-_0801F464:
- ldr r4, _0801F494 @ =gBattleMoveDamage
- ldr r0, _0801F498 @ =gHP_dealt
- ldr r0, [r0]
- movs r1, 0x3
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801F47A
- movs r0, 0x1
- str r0, [r4]
-_0801F47A:
- ldr r4, _0801F49C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs
- ldr r0, _0801F4A4 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- b _0801F5F8
- .align 2, 0
-_0801F494: .4byte gBattleMoveDamage
-_0801F498: .4byte gHP_dealt
-_0801F49C: .4byte gBattlescriptCurrInstr
-_0801F4A0: .4byte gMoveEffectBS_Ptrs
-_0801F4A4: .4byte gBattleCommunication
-_0801F4A8:
- mov r3, r8
- ldrb r0, [r3]
- movs r5, 0x58
- muls r0, r5
- mov r4, r9
- adds r4, 0x50
- adds r2, r0, r4
- ldr r1, [r2]
- movs r0, 0xC0
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _0801F4C4
- b _0801F5DC
-_0801F4C4:
- movs r0, 0x80
- lsls r0, 5
- orrs r1, r0
- str r1, [r2]
- ldr r1, _0801F4F8 @ =gLockedMove
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, _0801F4FC @ =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- bl Random
- mov r2, r8
- ldrb r1, [r2]
- adds r2, r1, 0
- muls r2, r5
- adds r2, r4
- movs r1, 0x1
- ands r1, r0
- adds r1, 0x2
- lsls r1, 10
- ldr r0, [r2]
-_0801F4F2:
- orrs r0, r1
- str r0, [r2]
- b _0801F5FA
- .align 2, 0
-_0801F4F8: .4byte gLockedMove
-_0801F4FC: .4byte gCurrentMove
-_0801F500:
- mov r5, r8
- ldrb r3, [r5]
- movs r4, 0x58
- adds r0, r3, 0
- muls r0, r4
- mov r2, r9
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0x3C
- bne _0801F540
- ldrh r0, [r1, 0x2E]
- cmp r0, 0
- beq _0801F5DC
- ldr r0, _0801F534 @ =gLastUsedAbility
- strb r2, [r0]
- ldr r1, _0801F538 @ =gBattlescriptCurrInstr
- ldr r0, _0801F53C @ =BattleScript_NoItemSteal
- str r0, [r1]
- ldrb r0, [r5]
- movs r1, 0x3C
- bl RecordAbilityBattle
- b _0801F5FA
- .align 2, 0
-_0801F534: .4byte gLastUsedAbility
-_0801F538: .4byte gBattlescriptCurrInstr
-_0801F53C: .4byte BattleScript_NoItemSteal
-_0801F540:
- ldrh r0, [r1, 0x2E]
- cmp r0, 0
- beq _0801F5DC
- adds r0, r3, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _0801F5B8 @ =gLastUsedItem
- mov r3, r8
- ldrb r0, [r3]
- muls r0, r4
- add r0, r9
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
- ldrb r0, [r3]
- muls r0, r4
- add r0, r9
- movs r5, 0
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldr r2, _0801F5BC @ =gWishFutureKnock
- adds r2, 0x29
- adds r2, r6, r2
- ldr r3, _0801F5C0 @ =gBitTable
- ldr r1, _0801F5C4 @ =gBattlePartyID
- mov r4, r8
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F5CC @ =BattleScript_KnockedOff
- str r0, [r4]
- ldr r1, _0801F5D0 @ =0x02000000
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- ldr r3, _0801F5D4 @ =0x000160e8
- adds r0, r3
- adds r0, r1
- strb r5, [r0]
- ldrb r0, [r2]
- lsls r0, 1
- ldr r4, _0801F5D8 @ =0x000160e9
- adds r0, r4
- adds r0, r1
- strb r5, [r0]
- b _0801F5FA
- .align 2, 0
-_0801F5B8: .4byte gLastUsedItem
-_0801F5BC: .4byte gWishFutureKnock
-_0801F5C0: .4byte gBitTable
-_0801F5C4: .4byte gBattlePartyID
-_0801F5C8: .4byte gBattlescriptCurrInstr
-_0801F5CC: .4byte BattleScript_KnockedOff
-_0801F5D0: .4byte 0x02000000
-_0801F5D4: .4byte 0x000160e8
-_0801F5D8: .4byte 0x000160e9
-_0801F5DC:
- ldr r1, _0801F5E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _0801F5FA
- .align 2, 0
-_0801F5E8: .4byte gBattlescriptCurrInstr
-_0801F5EC:
- ldr r4, _0801F60C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F610 @ =gUnknown_081D94B0
-_0801F5F8:
- str r0, [r4]
-_0801F5FA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801F60C: .4byte gBattlescriptCurrInstr
-_0801F610: .4byte gUnknown_081D94B0
- thumb_func_end sub_801E3EC
-
- thumb_func_start atk15_seteffectwithchancetarget
-atk15_seteffectwithchancetarget: @ 801F614
- push {r4,lr}
- ldr r2, _0801F640 @ =gBattleMons
- ldr r0, _0801F644 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x20
- bne _0801F650
- ldr r2, _0801F648 @ =gBattleMoves
- ldr r0, _0801F64C @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 1
- b _0801F660
- .align 2, 0
-_0801F640: .4byte gBattleMons
-_0801F644: .4byte gBankAttacker
-_0801F648: .4byte gBattleMoves
-_0801F64C: .4byte gCurrentMove
-_0801F650:
- ldr r2, _0801F680 @ =gBattleMoves
- ldr r0, _0801F684 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r4, [r0, 0x5]
-_0801F660:
- ldr r3, _0801F688 @ =gBattleCommunication
- ldrb r2, [r3, 0x3]
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _0801F690
- ldr r0, _0801F68C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801F690
- movs r0, 0x7F
- ands r0, r2
- strb r0, [r3, 0x3]
- b _0801F6BE
- .align 2, 0
-_0801F680: .4byte gBattleMoves
-_0801F684: .4byte gCurrentMove
-_0801F688: .4byte gBattleCommunication
-_0801F68C: .4byte gBattleMoveFlags
-_0801F690:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bhi _0801F6DA
- ldr r0, _0801F6C8 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- cmp r0, 0
- beq _0801F6DA
- ldr r0, _0801F6CC @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801F6DA
- cmp r4, 0x63
- bls _0801F6D0
-_0801F6BE:
- movs r0, 0
- movs r1, 0x80
- bl sub_801E3EC
- b _0801F6E2
- .align 2, 0
-_0801F6C8: .4byte gBattleCommunication
-_0801F6CC: .4byte gBattleMoveFlags
-_0801F6D0:
- movs r0, 0
- movs r1, 0
- bl sub_801E3EC
- b _0801F6E2
-_0801F6DA:
- ldr r1, _0801F6F8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801F6E2:
- ldr r0, _0801F6FC @ =gBattleCommunication
- movs r1, 0
- strb r1, [r0, 0x3]
- ldr r0, _0801F700 @ =0x02000000
- ldr r2, _0801F704 @ =0x00016112
- adds r0, r2
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801F6F8: .4byte gBattlescriptCurrInstr
-_0801F6FC: .4byte gBattleCommunication
-_0801F700: .4byte 0x02000000
-_0801F704: .4byte 0x00016112
- thumb_func_end atk15_seteffectwithchancetarget
-
- thumb_func_start atk16_seteffectprimary
-atk16_seteffectprimary: @ 801F708
- push {lr}
- movs r0, 0x1
- movs r1, 0
- bl sub_801E3EC
- pop {r0}
- bx r0
- thumb_func_end atk16_seteffectprimary
-
- thumb_func_start atk17_seteffectsecondary
-atk17_seteffectsecondary: @ 801F718
- push {lr}
- movs r0, 0
- movs r1, 0
- bl sub_801E3EC
- pop {r0}
- bx r0
- thumb_func_end atk17_seteffectsecondary
-
- thumb_func_start atk18_status_effect_clear
-atk18_status_effect_clear: @ 801F728
- push {lr}
- ldr r0, _0801F74C @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r2, _0801F750 @ =gActiveBank
- strb r0, [r2]
- ldr r3, _0801F754 @ =gBattleCommunication
- ldrb r0, [r3, 0x3]
- cmp r0, 0x6
- bhi _0801F75C
- ldr r1, _0801F758 @ =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x4C
- b _0801F766
- .align 2, 0
-_0801F74C: .4byte gBattlescriptCurrInstr
-_0801F750: .4byte gActiveBank
-_0801F754: .4byte gBattleCommunication
-_0801F758: .4byte gBattleMons
-_0801F75C:
- ldr r1, _0801F794 @ =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
-_0801F766:
- adds r2, r1
- ldr r1, _0801F798 @ =gStatusFlagsForMoveEffects
- ldrb r0, [r3, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- ldr r0, _0801F79C @ =gBattleCommunication
- movs r2, 0
- strb r2, [r0, 0x3]
- ldr r1, _0801F7A0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- ldr r0, _0801F7A4 @ =0x02000000
- ldr r1, _0801F7A8 @ =0x00016112
- adds r0, r1
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_0801F794: .4byte gBattleMons
-_0801F798: .4byte gStatusFlagsForMoveEffects
-_0801F79C: .4byte gBattleCommunication
-_0801F7A0: .4byte gBattlescriptCurrInstr
-_0801F7A4: .4byte 0x02000000
-_0801F7A8: .4byte 0x00016112
- thumb_func_end atk18_status_effect_clear
-
- thumb_func_start atk19_faint_pokemon
-atk19_faint_pokemon: @ 801F7AC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _0801F81C @ =gBattlescriptCurrInstr
- ldr r2, [r0]
- ldrb r1, [r2, 0x2]
- adds r6, r0, 0
- cmp r1, 0
- beq _0801F834
- ldrb r0, [r2, 0x1]
- bl sub_8015150
- ldr r5, _0801F820 @ =gActiveBank
- strb r0, [r5]
- ldr r2, _0801F824 @ =gHitMarker
- ldr r1, _0801F828 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- ands r0, r1
- cmp r0, 0
- bne _0801F7E6
- b _0801FB1C
-_0801F7E6:
- ldr r1, [r6]
- ldrb r4, [r1, 0x3]
- ldrb r0, [r1, 0x4]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r1, 0x6]
- lsls r0, 24
- orrs r4, r0
- bl b_movescr_stack_pop_cursor
- str r4, [r6]
- ldrb r0, [r5]
- bl GetBankSide
- ldr r1, _0801F82C @ =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r2, [r0]
- ldr r1, _0801F830 @ =0x0000fdff
- ands r1, r2
- strh r1, [r0]
- b _0801FB22
- .align 2, 0
-_0801F81C: .4byte gBattlescriptCurrInstr
-_0801F820: .4byte gActiveBank
-_0801F824: .4byte gHitMarker
-_0801F828: .4byte gBitTable
-_0801F82C: .4byte gSideAffecting
-_0801F830: .4byte 0x0000fdff
-_0801F834:
- ldrb r0, [r2, 0x1]
- cmp r0, 0x1
- bne _0801F85C
- ldr r1, _0801F84C @ =gActiveBank
- ldr r0, _0801F850 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _0801F854 @ =gBankTarget
- ldrb r7, [r0]
- ldr r4, _0801F858 @ =gUnknown_081D8C58
- b _0801F86A
- .align 2, 0
-_0801F84C: .4byte gActiveBank
-_0801F850: .4byte gBankAttacker
-_0801F854: .4byte gBankTarget
-_0801F858: .4byte gUnknown_081D8C58
-_0801F85C:
- ldr r1, _0801F954 @ =gActiveBank
- ldr r0, _0801F958 @ =gBankTarget
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _0801F95C @ =gBankAttacker
- ldrb r7, [r0]
- ldr r4, _0801F960 @ =gUnknown_081D8C65
-_0801F86A:
- ldr r0, _0801F964 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r0, _0801F968 @ =gBitTable
- mov r12, r0
- ldr r2, _0801F954 @ =gActiveBank
- mov r8, r2
- ldrb r2, [r2]
- lsls r0, r2, 2
- add r0, r12
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0801F886
- b _0801FB1C
-_0801F886:
- ldr r3, _0801F96C @ =gBattleMons
- mov r10, r3
- movs r5, 0x58
- mov r9, r5
- mov r0, r9
- muls r0, r2
- add r0, r10
- ldrh r3, [r0, 0x28]
- cmp r3, 0
- beq _0801F89C
- b _0801FB1C
-_0801F89C:
- ldr r2, _0801F970 @ =0x02000000
- lsls r1, r7, 1
- ldr r5, _0801F974 @ =0x000160ac
- adds r0, r1, r5
- adds r0, r2
- strb r3, [r0]
- ldr r0, _0801F978 @ =0x000160ad
- adds r1, r0
- adds r1, r2
- strb r3, [r1]
- lsls r1, r7, 2
- adds r5, 0x54
- adds r0, r1, r5
- adds r0, r2
- strb r3, [r0]
- adds r5, 0x1
- adds r0, r1, r5
- adds r0, r2
- strb r3, [r0]
- adds r5, 0x1
- adds r0, r1, r5
- adds r0, r2
- strb r3, [r0]
- ldr r0, _0801F97C @ =0x00016103
- adds r1, r0
- adds r1, r2
- strb r3, [r1]
- ldr r5, _0801F980 @ =gHitMarker
- mov r1, r8
- ldrb r0, [r1]
- lsls r0, 2
- add r0, r12
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r5]
- orrs r0, r1
- str r0, [r5]
- ldr r0, [r6]
- adds r0, 0x7
- bl b_movescr_stack_push
- str r4, [r6]
- mov r2, r8
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0801F9B0
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 15
- orrs r0, r1
- str r0, [r5]
- ldr r1, _0801F984 @ =gBattleResults
- ldrb r0, [r1]
- cmp r0, 0xFE
- bhi _0801F914
- adds r0, 0x1
- strb r0, [r1]
-_0801F914:
- mov r0, r9
- muls r0, r7
- add r0, r10
- adds r3, r0, 0
- adds r3, 0x2A
- mov r4, r8
- ldrb r2, [r4]
- mov r0, r9
- muls r0, r2
- add r0, r10
- adds r1, r0, 0
- adds r1, 0x2A
- ldrb r0, [r3]
- ldrb r5, [r1]
- cmp r0, r5
- bls _0801F9CC
- ldrb r1, [r1]
- subs r0, r1
- cmp r0, 0x1D
- ble _0801F990
- ldr r1, _0801F988 @ =gBattlePartyID
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0801F98C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x8
- bl AdjustFriendship
- b _0801F9CC
- .align 2, 0
-_0801F954: .4byte gActiveBank
-_0801F958: .4byte gBankTarget
-_0801F95C: .4byte gBankAttacker
-_0801F960: .4byte gUnknown_081D8C65
-_0801F964: .4byte gAbsentBankFlags
-_0801F968: .4byte gBitTable
-_0801F96C: .4byte gBattleMons
-_0801F970: .4byte 0x02000000
-_0801F974: .4byte 0x000160ac
-_0801F978: .4byte 0x000160ad
-_0801F97C: .4byte 0x00016103
-_0801F980: .4byte gHitMarker
-_0801F984: .4byte gBattleResults
-_0801F988: .4byte gBattlePartyID
-_0801F98C: .4byte gPlayerParty
-_0801F990:
- ldr r1, _0801F9A8 @ =gBattlePartyID
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0801F9AC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x6
- bl AdjustFriendship
- b _0801F9CC
- .align 2, 0
-_0801F9A8: .4byte gBattlePartyID
-_0801F9AC: .4byte gPlayerParty
-_0801F9B0:
- ldr r1, _0801FAE0 @ =gBattleResults
- ldrb r0, [r1, 0x1]
- cmp r0, 0xFE
- bhi _0801F9BC
- adds r0, 0x1
- strb r0, [r1, 0x1]
-_0801F9BC:
- ldr r2, _0801FAE4 @ =gActiveBank
- ldrb r0, [r2]
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- add r0, r10
- ldrh r0, [r0]
- strh r0, [r1, 0x20]
-_0801F9CC:
- ldr r0, _0801FAE8 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801FA02
- ldr r6, _0801FAEC @ =gBattleMons
- ldr r0, _0801FAF0 @ =gBankAttacker
- ldrb r0, [r0]
- movs r5, 0x58
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801FA02
- ldr r4, _0801FAF4 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- bl b_movescr_stack_push
- ldr r1, _0801FAF8 @ =gBattleMoveDamage
- adds r0, r7, 0
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x28]
- str r0, [r1]
- ldr r0, _0801FAFC @ =gUnknown_081D9156
- str r0, [r4]
-_0801FA02:
- ldr r1, _0801FB00 @ =gStatuses3
- ldr r6, _0801FB04 @ =gBankTarget
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 7
- ands r0, r1
- cmp r0, 0
- bne _0801FA1A
- b _0801FB22
-_0801FA1A:
- ldr r0, _0801FAE8 @ =gHitMarker
- ldr r5, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r5, r0
- cmp r5, 0
- bne _0801FB22
- ldr r4, _0801FAF0 @ =gBankAttacker
- mov r8, r4
- ldrb r0, [r4]
- bl GetBankSide
- adds r4, r0, 0
- ldrb r0, [r6]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0801FB22
- ldr r0, _0801FAEC @ =gBattleMons
- mov r9, r0
- mov r1, r8
- ldrb r2, [r1]
- movs r7, 0x58
- adds r3, r2, 0
- muls r3, r7
- adds r0, r3, r0
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801FB22
- ldr r0, _0801FB08 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xA5
- beq _0801FB22
- ldr r1, _0801FB0C @ =0x02000000
- ldr r4, _0801FB10 @ =0x0001608c
- adds r0, r2, r4
- adds r0, r1
- ldrb r4, [r0]
- adds r0, r4, r3
- mov r6, r9
- adds r6, 0x24
- adds r0, r6
- strb r5, [r0]
- ldr r5, _0801FAF4 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- bl b_movescr_stack_push
- ldr r0, _0801FB14 @ =gUnknown_081D9468
- str r0, [r5]
- ldr r5, _0801FAE4 @ =gActiveBank
- mov r1, r8
- ldrb r0, [r1]
- strb r0, [r5]
- adds r1, r4, 0
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r5]
- muls r0, r7
- adds r0, r6
- adds r0, r4
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r1, _0801FB18 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- lsls r4, 1
- mov r2, r8
- ldrb r0, [r2]
- muls r0, r7
- adds r0, r4, r0
- mov r2, r9
- adds r2, 0xC
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- mov r3, r8
- ldrb r0, [r3]
- muls r0, r7
- adds r4, r0
- adds r4, r2
- ldrh r0, [r4]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- b _0801FB22
- .align 2, 0
-_0801FAE0: .4byte gBattleResults
-_0801FAE4: .4byte gActiveBank
-_0801FAE8: .4byte gHitMarker
-_0801FAEC: .4byte gBattleMons
-_0801FAF0: .4byte gBankAttacker
-_0801FAF4: .4byte gBattlescriptCurrInstr
-_0801FAF8: .4byte gBattleMoveDamage
-_0801FAFC: .4byte gUnknown_081D9156
-_0801FB00: .4byte gStatuses3
-_0801FB04: .4byte gBankTarget
-_0801FB08: .4byte gCurrentMove
-_0801FB0C: .4byte 0x02000000
-_0801FB10: .4byte 0x0001608c
-_0801FB14: .4byte gUnknown_081D9468
-_0801FB18: .4byte gBattleTextBuff1
-_0801FB1C:
- ldr r0, [r6]
- adds r0, 0x7
- str r0, [r6]
-_0801FB22:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk19_faint_pokemon
-
- thumb_func_start atk1A_faint_animation
-atk1A_faint_animation: @ 801FB34
- push {r4,r5,lr}
- ldr r0, _0801FB64 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801FB5E
- ldr r5, _0801FB68 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _0801FB6C @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl EmitFaintAnimation
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_0801FB5E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FB64: .4byte gBattleExecBuffer
-_0801FB68: .4byte gBattlescriptCurrInstr
-_0801FB6C: .4byte gActiveBank
- thumb_func_end atk1A_faint_animation
-
- thumb_func_start atk1B_faint_effects_clear
-atk1B_faint_effects_clear: @ 801FB70
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _0801FBC4 @ =gBattleExecBuffer
- ldr r6, [r0]
- cmp r6, 0
- bne _0801FBBC
- ldr r5, _0801FBC8 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _0801FBCC @ =gActiveBank
- strb r0, [r4]
- ldr r1, _0801FBD0 @ =gBattleMons
- ldrb r0, [r4]
- movs r2, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- str r6, [r0]
- ldrb r0, [r4]
- muls r0, r2
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- bl UndoEffectsAfterFainting
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_0801FBBC:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FBC4: .4byte gBattleExecBuffer
-_0801FBC8: .4byte gBattlescriptCurrInstr
-_0801FBCC: .4byte gActiveBank
-_0801FBD0: .4byte gBattleMons
- thumb_func_end atk1B_faint_effects_clear
-
- thumb_func_start atk1C_jumpifstatus
-atk1C_jumpifstatus: @ 801FBD4
- push {r4,r5,lr}
- ldr r5, _0801FC30 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [r5]
- ldrb r4, [r2, 0x2]
- ldrb r1, [r2, 0x3]
- lsls r1, 8
- adds r4, r1
- ldrb r1, [r2, 0x4]
- lsls r1, 16
- adds r4, r1
- ldrb r1, [r2, 0x5]
- lsls r1, 24
- adds r4, r1
- ldrb r3, [r2, 0x6]
- ldrb r1, [r2, 0x7]
- lsls r1, 8
- adds r3, r1
- ldrb r1, [r2, 0x8]
- lsls r1, 16
- adds r3, r1
- ldrb r1, [r2, 0x9]
- lsls r1, 24
- adds r3, r1
- ldr r2, _0801FC34 @ =gBattleMons
- movs r1, 0x58
- muls r1, r0
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _0801FC38
- adds r0, r1, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801FC38
- str r3, [r5]
- b _0801FC40
- .align 2, 0
-_0801FC30: .4byte gBattlescriptCurrInstr
-_0801FC34: .4byte gBattleMons
-_0801FC38:
- ldr r1, _0801FC48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
-_0801FC40:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FC48: .4byte gBattlescriptCurrInstr
- thumb_func_end atk1C_jumpifstatus
-
- thumb_func_start atk1D_jumpifstatus2
-atk1D_jumpifstatus2: @ 801FC4C
- push {r4,r5,lr}
- ldr r5, _0801FCA8 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [r5]
- ldrb r4, [r2, 0x2]
- ldrb r1, [r2, 0x3]
- lsls r1, 8
- adds r4, r1
- ldrb r1, [r2, 0x4]
- lsls r1, 16
- adds r4, r1
- ldrb r1, [r2, 0x5]
- lsls r1, 24
- adds r4, r1
- ldrb r3, [r2, 0x6]
- ldrb r1, [r2, 0x7]
- lsls r1, 8
- adds r3, r1
- ldrb r1, [r2, 0x8]
- lsls r1, 16
- adds r3, r1
- ldrb r1, [r2, 0x9]
- lsls r1, 24
- adds r3, r1
- ldr r2, _0801FCAC @ =gBattleMons
- movs r1, 0x58
- muls r1, r0
- adds r0, r2, 0
- adds r0, 0x50
- adds r0, r1, r0
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _0801FCB0
- adds r0, r1, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801FCB0
- str r3, [r5]
- b _0801FCB8
- .align 2, 0
-_0801FCA8: .4byte gBattlescriptCurrInstr
-_0801FCAC: .4byte gBattleMons
-_0801FCB0:
- ldr r1, _0801FCC0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
-_0801FCB8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FCC0: .4byte gBattlescriptCurrInstr
- thumb_func_end atk1D_jumpifstatus2
-
- thumb_func_start atk1E_jumpifability
-atk1E_jumpifability: @ 801FCC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r6, _0801FD18 @ =gBattlescriptCurrInstr
- ldr r2, [r6]
- ldrb r5, [r2, 0x2]
- mov r8, r5
- ldrb r1, [r2, 0x3]
- ldrb r0, [r2, 0x4]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 24
- adds r7, r1, r0
- ldrb r0, [r2, 0x1]
- cmp r0, 0x8
- bne _0801FD24
- ldr r0, _0801FD1C @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xD
- adds r2, r5, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0801FDA0
- ldr r1, _0801FD20 @ =gLastUsedAbility
- strb r5, [r1]
- str r7, [r6]
- subs r4, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- ldrb r1, [r1]
- b _0801FD80
- .align 2, 0
-_0801FD18: .4byte gBattlescriptCurrInstr
-_0801FD1C: .4byte gBankAttacker
-_0801FD20: .4byte gLastUsedAbility
-_0801FD24:
- cmp r0, 0x9
- bne _0801FD5C
- ldr r0, _0801FD54 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xC
- adds r2, r5, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0801FDA0
- ldr r1, _0801FD58 @ =gLastUsedAbility
- strb r5, [r1]
- str r7, [r6]
- subs r4, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- ldrb r1, [r1]
- b _0801FD80
- .align 2, 0
-_0801FD54: .4byte gBankAttacker
-_0801FD58: .4byte gLastUsedAbility
-_0801FD5C:
- ldrb r0, [r2, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0801FD90 @ =gBattleMons
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, r8
- bne _0801FDA0
- ldr r0, _0801FD94 @ =gLastUsedAbility
- strb r1, [r0]
- str r7, [r6]
- ldrb r1, [r0]
- adds r0, r4, 0
-_0801FD80:
- bl RecordAbilityBattle
- ldr r0, _0801FD98 @ =0x02000000
- ldr r1, _0801FD9C @ =0x000160f8
- adds r0, r1
- strb r4, [r0]
- b _0801FDA6
- .align 2, 0
-_0801FD90: .4byte gBattleMons
-_0801FD94: .4byte gLastUsedAbility
-_0801FD98: .4byte 0x02000000
-_0801FD9C: .4byte 0x000160f8
-_0801FDA0:
- ldr r0, [r6]
- adds r0, 0x7
- str r0, [r6]
-_0801FDA6:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk1E_jumpifability
-
- thumb_func_start atk1F_jumpifsideaffecting
-atk1F_jumpifsideaffecting: @ 801FDB4
- push {r4-r6,lr}
- ldr r0, _0801FDCC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r4, [r0, 0x1]
- cmp r4, 0x1
- bne _0801FDD4
- ldr r0, _0801FDD0 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- b _0801FDDE
- .align 2, 0
-_0801FDCC: .4byte gBattlescriptCurrInstr
-_0801FDD0: .4byte gBankAttacker
-_0801FDD4:
- ldr r0, _0801FE14 @ =gBankTarget
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r4, 0x1
-_0801FDDE:
- ands r4, r0
- ldr r6, _0801FE18 @ =gBattlescriptCurrInstr
- ldr r3, [r6]
- ldrb r2, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r2, r0
- ldrb r1, [r3, 0x4]
- ldrb r0, [r3, 0x5]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x7]
- lsls r0, 24
- adds r5, r1, r0
- ldr r1, _0801FE1C @ =gSideAffecting
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- ands r2, r0
- cmp r2, 0
- beq _0801FE20
- str r5, [r6]
- b _0801FE26
- .align 2, 0
-_0801FE14: .4byte gBankTarget
-_0801FE18: .4byte gBattlescriptCurrInstr
-_0801FE1C: .4byte gSideAffecting
-_0801FE20:
- adds r0, r3, 0
- adds r0, 0x8
- str r0, [r6]
-_0801FE26:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk1F_jumpifsideaffecting
-
- thumb_func_start atk20_jumpifstat
-atk20_jumpifstat: @ 801FE2C
- push {r4,r5,lr}
- movs r5, 0
- ldr r4, _0801FE60 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0801FE64 @ =gBattleMons
- ldr r3, [r4]
- movs r1, 0x58
- muls r0, r1
- ldrb r1, [r3, 0x3]
- adds r0, r1
- adds r2, 0x18
- adds r0, r2
- ldrb r2, [r0]
- ldrb r0, [r3, 0x2]
- cmp r0, 0x5
- bhi _0801FEEA
- lsls r0, 2
- ldr r1, _0801FE68 @ =_0801FE6C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801FE60: .4byte gBattlescriptCurrInstr
-_0801FE64: .4byte gBattleMons
-_0801FE68: .4byte _0801FE6C
- .align 2, 0
-_0801FE6C:
- .4byte _0801FE84
- .4byte _0801FE94
- .4byte _0801FEA4
- .4byte _0801FEB4
- .4byte _0801FEC4
- .4byte _0801FED8
-_0801FE84:
- ldr r0, _0801FE90 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bne _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FE90: .4byte gBattlescriptCurrInstr
-_0801FE94:
- ldr r0, _0801FEA0 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- beq _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FEA0: .4byte gBattlescriptCurrInstr
-_0801FEA4:
- ldr r0, _0801FEB0 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bls _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FEB0: .4byte gBattlescriptCurrInstr
-_0801FEB4:
- ldr r0, _0801FEC0 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bcs _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FEC0: .4byte gBattlescriptCurrInstr
-_0801FEC4:
- ldr r0, _0801FED4 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- ands r2, r0
- cmp r2, 0
- beq _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FED4: .4byte gBattlescriptCurrInstr
-_0801FED8:
- ldr r0, _0801FF0C @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- ands r2, r0
- cmp r2, 0
- bne _0801FEEA
-_0801FEE4:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0801FEEA:
- cmp r5, 0
- beq _0801FF10
- ldr r3, _0801FF0C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
- b _0801FF18
- .align 2, 0
-_0801FF0C: .4byte gBattlescriptCurrInstr
-_0801FF10:
- ldr r1, _0801FF20 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x9
- str r0, [r1]
-_0801FF18:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FF20: .4byte gBattlescriptCurrInstr
- thumb_func_end atk20_jumpifstat
-
- thumb_func_start atk21_jumpifstatus3
-atk21_jumpifstatus3: @ 801FF24
- push {r4-r6,lr}
- ldr r4, _0801FF78 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _0801FF7C @ =gActiveBank
- strb r0, [r5]
- ldr r2, [r4]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- adds r6, r1, r0
- ldrb r1, [r2, 0x7]
- ldrb r0, [r2, 0x8]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x9]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0xA]
- lsls r0, 24
- adds r3, r1, r0
- ldrb r0, [r2, 0x6]
- cmp r0, 0
- beq _0801FF84
- ldr r0, _0801FF80 @ =gStatuses3
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- ands r0, r6
- cmp r0, 0
- bne _0801FF9C
- b _0801FF94
- .align 2, 0
-_0801FF78: .4byte gBattlescriptCurrInstr
-_0801FF7C: .4byte gActiveBank
-_0801FF80: .4byte gStatuses3
-_0801FF84:
- ldr r0, _0801FF98 @ =gStatuses3
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- ands r0, r6
- cmp r0, 0
- beq _0801FF9C
-_0801FF94:
- str r3, [r4]
- b _0801FFA2
- .align 2, 0
-_0801FF98: .4byte gStatuses3
-_0801FF9C:
- adds r0, r2, 0
- adds r0, 0xB
- str r0, [r4]
-_0801FFA2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk21_jumpifstatus3
-
- thumb_func_start atk22_jumpiftype
-atk22_jumpiftype: @ 801FFA8
- push {r4-r6,lr}
- ldr r4, _0801FFF0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [r4]
- ldrb r5, [r3, 0x2]
- ldrb r2, [r3, 0x3]
- ldrb r1, [r3, 0x4]
- lsls r1, 8
- adds r2, r1
- ldrb r1, [r3, 0x5]
- lsls r1, 16
- adds r2, r1
- ldrb r1, [r3, 0x6]
- lsls r1, 24
- adds r6, r2, r1
- ldr r2, _0801FFF4 @ =gBattleMons
- movs r1, 0x58
- muls r0, r1
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r5
- beq _0801FFEC
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r5
- bne _0801FFF8
-_0801FFEC:
- str r6, [r4]
- b _0801FFFC
- .align 2, 0
-_0801FFF0: .4byte gBattlescriptCurrInstr
-_0801FFF4: .4byte gBattleMons
-_0801FFF8:
- adds r0, r3, 0x7
- str r0, [r4]
-_0801FFFC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk22_jumpiftype
-
- thumb_func_start atk23_getexp
-atk23_getexp: @ 8020004
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- ldr r0, _0802004C @ =0x0201605c
- mov r10, r0
- ldr r0, _08020050 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08020054 @ =gBank1
- strb r0, [r1]
- ldr r2, _08020058 @ =gSentPokesToOpponent
- movs r1, 0x2
- ands r1, r0
- lsls r1, 24
- lsrs r1, 25
- adds r1, r2
- ldrb r1, [r1]
- mov r8, r1
- mov r0, r10
- subs r0, 0x4D
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _08020040
- bl _08020996
-_08020040:
- lsls r0, 2
- ldr r1, _0802005C @ =_08020060
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802004C: .4byte 0x0201605c
-_08020050: .4byte gBattlescriptCurrInstr
-_08020054: .4byte gBank1
-_08020058: .4byte gSentPokesToOpponent
-_0802005C: .4byte _08020060
- .align 2, 0
-_08020060:
- .4byte _0802007C
- .4byte _080200FC
- .4byte _08020216
- .4byte _0802055C
- .4byte _08020648
- .4byte _08020910
- .4byte _0802096C
-_0802007C:
- ldr r4, _080200A8 @ =gBank1
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08020098
- ldr r0, _080200AC @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _080200B0 @ =0x00000982
- ands r0, r1
- cmp r0, 0
- beq _080200BC
-_08020098:
- ldr r0, _080200B4 @ =0x02000000
- ldr r1, _080200B8 @ =0x0001600f
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- bl _08020996
- .align 2, 0
-_080200A8: .4byte gBank1
-_080200AC: .4byte gBattleTypeFlags
-_080200B0: .4byte 0x00000982
-_080200B4: .4byte 0x02000000
-_080200B8: .4byte 0x0001600f
-_080200BC:
- ldr r2, _080200E8 @ =0x02000000
- ldr r3, _080200EC @ =0x0001600f
- adds r1, r2, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, _080200F0 @ =0x00016113
- adds r2, r0
- ldr r3, _080200F4 @ =gBitTable
- ldr r1, _080200F8 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- bl _08020996
- .align 2, 0
-_080200E8: .4byte 0x02000000
-_080200EC: .4byte 0x0001600f
-_080200F0: .4byte 0x00016113
-_080200F4: .4byte gBitTable
-_080200F8: .4byte gBattlePartyID
-_080200FC:
- movs r5, 0
- movs r7, 0
- ldr r1, _08020150 @ =gSaveBlock1 + 0x3688
- mov r9, r1
-_08020104:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _08020154 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0802016A
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0802016A
- ldr r0, _08020158 @ =gBitTable
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- mov r2, r8
- ands r0, r2
- cmp r0, 0
- beq _08020138
- adds r5, 0x1
-_08020138:
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _0802015C
- mov r3, r9
- ldrb r4, [r3]
- b _08020164
- .align 2, 0
-_08020150: .4byte gSaveBlock1 + 0x3688
-_08020154: .4byte gPlayerParty
-_08020158: .4byte gBitTable
-_0802015C:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
-_08020164:
- cmp r4, 0x19
- bne _0802016A
- adds r6, 0x1
-_0802016A:
- adds r7, 0x1
- cmp r7, 0x5
- ble _08020104
- ldr r3, _080201D0 @ =gBaseStats
- ldr r2, _080201D4 @ =gBattleMons
- ldr r0, _080201D8 @ =gBank1
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- ldrh r2, [r1]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3
- ldrb r2, [r0, 0x9]
- adds r1, 0x2A
- ldrb r0, [r1]
- muls r0, r2
- movs r1, 0x7
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r6, 0
- beq _080201E0
- lsrs r4, r0, 17
- adds r0, r4, 0
- adds r1, r5, 0
- bl __divsi3
- mov r1, r10
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bne _080201B6
- movs r0, 0x1
- strh r0, [r1]
-_080201B6:
- ldr r5, _080201DC @ =gExpShareExp
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- strh r0, [r5]
- lsls r0, 16
- cmp r0, 0
- bne _080201FA
- movs r0, 0x1
- strh r0, [r5]
- b _080201FA
- .align 2, 0
-_080201D0: .4byte gBaseStats
-_080201D4: .4byte gBattleMons
-_080201D8: .4byte gBank1
-_080201DC: .4byte gExpShareExp
-_080201E0:
- adds r0, r1, 0
- adds r1, r5, 0
- bl __divsi3
- mov r2, r10
- strh r0, [r2]
- lsls r0, 16
- cmp r0, 0
- bne _080201F6
- movs r0, 0x1
- strh r0, [r2]
-_080201F6:
- ldr r0, _08020248 @ =gExpShareExp
- strh r6, [r0]
-_080201FA:
- ldr r1, _0802024C @ =0x02000000
- ldr r3, _08020250 @ =0x0001600f
- adds r2, r1, r3
- ldrb r0, [r2]
- adds r0, 0x1
- movs r3, 0
- strb r0, [r2]
- ldr r2, _08020254 @ =0x00016018
- adds r0, r1, r2
- strb r3, [r0]
- ldr r3, _08020258 @ =0x0001605f
- adds r1, r3
- mov r0, r8
- strb r0, [r1]
-_08020216:
- ldr r0, _0802025C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _08020220
- b _08020996
-_08020220:
- ldr r0, _0802024C @ =0x02000000
- ldr r1, _08020254 @ =0x00016018
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08020260 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _0802026C
- ldr r0, _08020264 @ =gSaveBlock1
- ldr r2, _08020268 @ =0x00003688
- adds r0, r2
- ldrb r4, [r0]
- b _08020274
- .align 2, 0
-_08020248: .4byte gExpShareExp
-_0802024C: .4byte 0x02000000
-_08020250: .4byte 0x0001600f
-_08020254: .4byte 0x00016018
-_08020258: .4byte 0x0001605f
-_0802025C: .4byte gBattleExecBuffer
-_08020260: .4byte gPlayerParty
-_08020264: .4byte gSaveBlock1
-_08020268: .4byte 0x00003688
-_0802026C:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
-_08020274:
- ldr r5, _08020294 @ =0x02000000
- cmp r4, 0x19
- beq _080202A0
- ldr r3, _08020298 @ =0x0001605f
- adds r1, r5, r3
- ldrb r0, [r1]
- movs r2, 0x1
- ands r2, r0
- cmp r2, 0
- bne _080202A0
- lsrs r0, 1
- strb r0, [r1]
- ldr r0, _0802029C @ =0x0001600f
- adds r1, r5, r0
- b _080202C8
- .align 2, 0
-_08020294: .4byte 0x02000000
-_08020298: .4byte 0x0001605f
-_0802029C: .4byte 0x0001600f
-_080202A0:
- ldr r1, _080202D4 @ =0x00016018
- adds r0, r5, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080202D8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- bne _080202E8
- ldr r2, _080202DC @ =0x0001605f
- adds r1, r5, r2
- ldrb r0, [r1]
- lsrs r0, 1
- movs r2, 0
- strb r0, [r1]
- ldr r3, _080202E0 @ =0x0001600f
- adds r1, r5, r3
-_080202C8:
- movs r0, 0x5
- strb r0, [r1]
- ldr r0, _080202E4 @ =gBattleMoveDamage
- str r2, [r0]
- b _08020996
- .align 2, 0
-_080202D4: .4byte 0x00016018
-_080202D8: .4byte gPlayerParty
-_080202DC: .4byte 0x0001605f
-_080202E0: .4byte 0x0001600f
-_080202E4: .4byte gBattleMoveDamage
-_080202E8:
- ldr r0, _0802034C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _08020316
- ldr r0, _08020350 @ =gBattleMons
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08020316
- ldr r0, _08020354 @ =0x0001601b
- adds r5, r0
- ldrb r0, [r5]
- cmp r0, 0
- bne _08020316
- bl sub_80325B8
- ldr r0, _08020358 @ =0x00000161
- bl PlayBGM
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
-_08020316:
- ldr r5, _0802035C @ =0x02000000
- ldr r1, _08020360 @ =0x00016018
- adds r0, r5, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08020364 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _08020332
- b _0802051E
-_08020332:
- ldr r2, _08020368 @ =0x0001605f
- adds r0, r5, r2
- ldrb r0, [r0]
- movs r3, 0x1
- ands r3, r0
- cmp r3, 0
- beq _08020370
- ldr r1, _0802036C @ =gBattleMoveDamage
- mov r3, r10
- ldrh r0, [r3]
- str r0, [r1]
- mov r8, r1
- b _08020376
- .align 2, 0
-_0802034C: .4byte gBattleTypeFlags
-_08020350: .4byte gBattleMons
-_08020354: .4byte 0x0001601b
-_08020358: .4byte 0x00000161
-_0802035C: .4byte 0x02000000
-_08020360: .4byte 0x00016018
-_08020364: .4byte gPlayerParty
-_08020368: .4byte 0x0001605f
-_0802036C: .4byte gBattleMoveDamage
-_08020370:
- ldr r0, _080203EC @ =gBattleMoveDamage
- str r3, [r0]
- mov r8, r0
-_08020376:
- cmp r4, 0x19
- bne _08020386
- ldr r0, _080203F0 @ =gExpShareExp
- ldrh r1, [r0]
- mov r2, r8
- ldr r0, [r2]
- adds r0, r1
- str r0, [r2]
-_08020386:
- cmp r4, 0x28
- bne _0802039C
- mov r3, r8
- ldr r1, [r3]
- movs r0, 0x96
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- mov r1, r8
- str r0, [r1]
-_0802039C:
- ldr r0, _080203F4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080203B8
- ldr r4, _080203EC @ =gBattleMoveDamage
- ldr r1, [r4]
- movs r0, 0x96
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
-_080203B8:
- ldr r0, _080203F8 @ =0x02000000
- ldr r2, _080203FC @ =0x00016018
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08020400 @ =gPlayerParty
- adds r0, r1
- bl IsTradedMon
- lsls r0, 24
- cmp r0, 0
- beq _08020404
- ldr r4, _080203EC @ =gBattleMoveDamage
- ldr r1, [r4]
- movs r0, 0x96
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- movs r7, 0xA5
- lsls r7, 1
- mov r8, r4
- b _0802040A
- .align 2, 0
-_080203EC: .4byte gBattleMoveDamage
-_080203F0: .4byte gExpShareExp
-_080203F4: .4byte gBattleTypeFlags
-_080203F8: .4byte 0x02000000
-_080203FC: .4byte 0x00016018
-_08020400: .4byte gPlayerParty
-_08020404:
- ldr r7, _0802043C @ =0x00000149
- ldr r3, _08020440 @ =gBattleMoveDamage
- mov r8, r3
-_0802040A:
- ldr r0, _08020444 @ =gBattleTypeFlags
- ldrh r0, [r0]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08020488
- ldr r1, _08020448 @ =gBattlePartyID
- ldr r0, _0802044C @ =0x02000000
- ldr r3, _08020450 @ =0x00016018
- adds r2, r0, r3
- ldrh r1, [r1, 0x4]
- adds r5, r0, 0
- ldr r4, _08020454 @ =gBitTable
- ldr r3, _08020458 @ =gAbsentBankFlags
- ldrb r2, [r2]
- cmp r1, r2
- bne _08020460
- ldrb r1, [r3]
- ldr r0, [r4, 0x8]
- ands r1, r0
- cmp r1, 0
- bne _08020460
- ldr r0, _0802045C @ =0x000160a2
- adds r1, r5, r0
- b _0802047C
- .align 2, 0
-_0802043C: .4byte 0x00000149
-_08020440: .4byte gBattleMoveDamage
-_08020444: .4byte gBattleTypeFlags
-_08020448: .4byte gBattlePartyID
-_0802044C: .4byte 0x02000000
-_08020450: .4byte 0x00016018
-_08020454: .4byte gBitTable
-_08020458: .4byte gAbsentBankFlags
-_0802045C: .4byte 0x000160a2
-_08020460:
- ldrb r2, [r3]
- ldr r0, [r4]
- ands r2, r0
- cmp r2, 0
- bne _08020478
- ldr r1, _08020474 @ =0x000160a2
- adds r0, r5, r1
- strb r2, [r0]
- b _08020490
- .align 2, 0
-_08020474: .4byte 0x000160a2
-_08020478:
- ldr r2, _08020484 @ =0x000160a2
- adds r1, r5, r2
-_0802047C:
- movs r0, 0x2
- strb r0, [r1]
- b _08020490
- .align 2, 0
-_08020484: .4byte 0x000160a2
-_08020488:
- ldr r0, _08020530 @ =0x02000000
- ldr r3, _08020534 @ =0x000160a2
- adds r0, r3
- strb r1, [r0]
-_08020490:
- ldr r1, _08020538 @ =gBattleTextBuff1
- movs r3, 0
- movs r2, 0xFD
- strb r2, [r1]
- movs r5, 0x4
- strb r5, [r1, 0x1]
- ldr r4, _08020530 @ =0x02000000
- ldr r0, _08020534 @ =0x000160a2
- adds r6, r4, r0
- ldrb r0, [r6]
- strb r0, [r1, 0x2]
- ldr r0, _0802053C @ =0x00016018
- adds r4, r0
- ldrb r0, [r4]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08020540 @ =gBattleTextBuff2
- strb r2, [r1]
- strb r3, [r1, 0x1]
- strb r7, [r1, 0x2]
- movs r3, 0xFF
- lsls r3, 8
- ands r7, r3
- asrs r0, r7, 8
- strb r0, [r1, 0x3]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x4]
- ldr r1, _08020544 @ =gBattleTextBuff3
- strb r2, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- strb r5, [r1, 0x2]
- movs r0, 0x5
- strb r0, [r1, 0x3]
- mov r0, r8
- ldr r2, [r0]
- strb r2, [r1, 0x4]
- adds r0, r2, 0
- ands r0, r3
- asrs r0, 8
- strb r0, [r1, 0x5]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r2
- asrs r0, 16
- strb r0, [r1, 0x6]
- lsrs r2, 24
- strb r2, [r1, 0x7]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x8]
- ldrb r1, [r6]
- movs r0, 0xD
- bl PrepareStringBattle
- ldrb r1, [r4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08020548 @ =gPlayerParty
- adds r0, r1
- ldr r3, _0802054C @ =gBattleMons
- ldr r1, _08020550 @ =gBank1
- ldrb r2, [r1]
- movs r1, 0x58
- muls r1, r2
- adds r1, r3
- ldrh r1, [r1]
- bl MonGainEVs
-_0802051E:
- ldr r1, _08020530 @ =0x02000000
- ldr r3, _08020554 @ =0x0001605f
- adds r2, r1, r3
- ldrb r0, [r2]
- lsrs r0, 1
- strb r0, [r2]
- ldr r0, _08020558 @ =0x0001600f
- adds r1, r0
- b _08020618
- .align 2, 0
-_08020530: .4byte 0x02000000
-_08020534: .4byte 0x000160a2
-_08020538: .4byte gBattleTextBuff1
-_0802053C: .4byte 0x00016018
-_08020540: .4byte gBattleTextBuff2
-_08020544: .4byte gBattleTextBuff3
-_08020548: .4byte gPlayerParty
-_0802054C: .4byte gBattleMons
-_08020550: .4byte gBank1
-_08020554: .4byte 0x0001605f
-_08020558: .4byte 0x0001600f
-_0802055C:
- ldr r0, _08020620 @ =gBattleExecBuffer
- ldr r2, [r0]
- cmp r2, 0
- beq _08020566
- b _08020996
-_08020566:
- ldr r1, _08020624 @ =gBattleBufferB
- ldr r4, _08020628 @ =0x02000000
- ldr r3, _0802062C @ =0x000160a2
- adds r3, r4
- mov r8, r3
- ldrb r0, [r3]
- lsls r0, 9
- adds r0, r1
- strb r2, [r0]
- ldr r0, _08020630 @ =0x00016018
- adds r7, r4, r0
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08020634 @ =gPlayerParty
- adds r0, r5
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08020612
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- beq _08020612
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3A
- bl GetMonData
- ldr r1, _08020638 @ =0x00017180
- adds r4, r1
- strh r0, [r4]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3B
- bl GetMonData
- strh r0, [r4, 0x2]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3C
- bl GetMonData
- strh r0, [r4, 0x4]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3D
- bl GetMonData
- strh r0, [r4, 0x6]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3E
- bl GetMonData
- strh r0, [r4, 0x8]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3F
- bl GetMonData
- strh r0, [r4, 0xA]
- ldr r4, _0802063C @ =gActiveBank
- mov r2, r8
- ldrb r0, [r2]
- strb r0, [r4]
- ldrb r1, [r7]
- ldr r0, _08020640 @ =gBattleMoveDamage
- ldrh r2, [r0]
- movs r0, 0
- bl EmitExpBarUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08020612:
- ldr r1, _08020628 @ =0x02000000
- ldr r3, _08020644 @ =0x0001600f
- adds r1, r3
-_08020618:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08020996
- .align 2, 0
-_08020620: .4byte gBattleExecBuffer
-_08020624: .4byte gBattleBufferB
-_08020628: .4byte 0x02000000
-_0802062C: .4byte 0x000160a2
-_08020630: .4byte 0x00016018
-_08020634: .4byte gPlayerParty
-_08020638: .4byte 0x00017180
-_0802063C: .4byte gActiveBank
-_08020640: .4byte gBattleMoveDamage
-_08020644: .4byte 0x0001600f
-_08020648:
- ldr r0, _080208AC @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _08020652
- b _08020996
-_08020652:
- ldr r1, _080208B0 @ =gActiveBank
- ldr r4, _080208B4 @ =0x02000000
- ldr r2, _080208B8 @ =0x000160a2
- adds r0, r4, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r2, _080208BC @ =gBattleBufferB
- ldrb r3, [r1]
- lsls r1, r3, 9
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x21
- beq _0802066E
- b _080208F0
-_0802066E:
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0xB
- beq _0802067A
- b _080208F0
-_0802067A:
- ldr r0, _080208C0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080206A8
- ldr r1, _080208C4 @ =gBattlePartyID
- lsls r0, r3, 1
- adds r2, r0, r1
- ldr r0, _080208C8 @ =0x00016018
- adds r1, r4, r0
- ldrh r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bne _080206A8
- adds r1, r0, 0
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080208CC @ =gPlayerParty
- adds r0, r1
- adds r1, r3, 0
- bl sub_80324F8
-_080206A8:
- ldr r1, _080208D0 @ =gBattleTextBuff1
- movs r2, 0xFD
- strb r2, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r5, _080208B0 @ =gActiveBank
- ldrb r0, [r5]
- strb r0, [r1, 0x2]
- ldr r0, _080208B4 @ =0x02000000
- ldr r3, _080208C8 @ =0x00016018
- adds r6, r0, r3
- ldrb r0, [r6]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r4, _080208D4 @ =gBattleTextBuff2
- strb r2, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- strb r0, [r4, 0x2]
- movs r0, 0x3
- strb r0, [r4, 0x3]
- ldrb r0, [r6]
- movs r1, 0x64
- mov r8, r1
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldr r7, _080208CC @ =gPlayerParty
- adds r0, r7
- movs r1, 0x38
- bl GetMonData
- strb r0, [r4, 0x4]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r4, 0x5]
- bl b_movescr_stack_push_cursor
- ldr r2, _080208D8 @ =gLeveledUpInBattle
- ldr r1, _080208DC @ =gBitTable
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080208E0 @ =gBattlescriptCurrInstr
- ldr r0, _080208E4 @ =BattleScript_LevelUp
- str r0, [r1]
- ldr r4, _080208E8 @ =gBattleMoveDamage
- ldr r2, _080208BC @ =gBattleBufferB
- ldrb r1, [r5]
- lsls r1, 9
- adds r0, r2, 0x2
- adds r0, r1, r0
- ldrb r3, [r0]
- adds r2, 0x3
- adds r1, r2
- ldrb r0, [r1]
- lsls r0, 8
- orrs r3, r0
- str r3, [r4]
- ldrb r0, [r6]
- mov r3, r8
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7
- movs r1, 0
- bl AdjustFriendship
- ldr r0, _080208C4 @ =gBattlePartyID
- ldrb r1, [r6]
- ldrh r0, [r0]
- cmp r0, r1
- bne _080207EC
- ldr r4, _080208EC @ =gBattleMons
- ldrh r0, [r4, 0x28]
- cmp r0, 0
- beq _080207EC
- mov r0, r8
- muls r0, r1
- adds r0, r7
- movs r1, 0x38
- bl GetMonData
- adds r1, r4, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0x39
- bl GetMonData
- strh r0, [r4, 0x28]
- ldrb r0, [r6]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3A
- bl GetMonData
- strh r0, [r4, 0x2C]
- ldrb r0, [r6]
- mov r3, r8
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7
- movs r1, 0x3B
- bl GetMonData
- strh r0, [r4, 0x2]
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0x3C
- bl GetMonData
- strh r0, [r4, 0x4]
- ldrb r0, [r6]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3D
- bl GetMonData
- strh r0, [r4, 0x6]
- ldrb r0, [r6]
- mov r3, r8
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7
- movs r1, 0x3D
- bl GetMonData
- strh r0, [r4, 0x6]
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0x3E
- bl GetMonData
- strh r0, [r4, 0x8]
- ldrb r0, [r6]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3F
- bl GetMonData
- strh r0, [r4, 0xA]
-_080207EC:
- ldr r0, _080208C4 @ =gBattlePartyID
- ldr r1, _080208B4 @ =0x02000000
- ldr r3, _080208C8 @ =0x00016018
- adds r7, r1, r3
- ldrb r2, [r7]
- ldrh r0, [r0, 0x4]
- cmp r0, r2
- bne _080208F6
- ldr r6, _080208EC @ =gBattleMons
- movs r0, 0xD8
- adds r0, r6
- mov r8, r0
- ldrh r0, [r0]
- cmp r0, 0
- beq _080208F6
- ldr r0, _080208C0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080208F6
- movs r5, 0x64
- adds r0, r2, 0
- muls r0, r5
- ldr r4, _080208CC @ =gPlayerParty
- adds r0, r4
- movs r1, 0x38
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xDA
- strb r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x39
- bl GetMonData
- mov r1, r8
- strh r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3A
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xDC
- strh r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3B
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xB2
- strh r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3C
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xB4
- strh r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3D
- bl GetMonData
- movs r2, 0xB6
- adds r2, r6
- mov r8, r2
- strh r0, [r2]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3D
- bl GetMonData
- mov r3, r8
- strh r0, [r3]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3E
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xB8
- strh r0, [r1]
- b _080208F6
- .align 2, 0
-_080208AC: .4byte gBattleExecBuffer
-_080208B0: .4byte gActiveBank
-_080208B4: .4byte 0x02000000
-_080208B8: .4byte 0x000160a2
-_080208BC: .4byte gBattleBufferB
-_080208C0: .4byte gBattleTypeFlags
-_080208C4: .4byte gBattlePartyID
-_080208C8: .4byte 0x00016018
-_080208CC: .4byte gPlayerParty
-_080208D0: .4byte gBattleTextBuff1
-_080208D4: .4byte gBattleTextBuff2
-_080208D8: .4byte gLeveledUpInBattle
-_080208DC: .4byte gBitTable
-_080208E0: .4byte gBattlescriptCurrInstr
-_080208E4: .4byte BattleScript_LevelUp
-_080208E8: .4byte gBattleMoveDamage
-_080208EC: .4byte gBattleMons
-_080208F0:
- ldr r1, _08020904 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
-_080208F6:
- ldr r0, _08020908 @ =0x02000000
- ldr r1, _0802090C @ =0x0001600f
- adds r0, r1
- movs r1, 0x5
- strb r1, [r0]
- b _08020996
- .align 2, 0
-_08020904: .4byte gBattleMoveDamage
-_08020908: .4byte 0x02000000
-_0802090C: .4byte 0x0001600f
-_08020910:
- ldr r0, _08020924 @ =gBattleMoveDamage
- ldr r0, [r0]
- cmp r0, 0
- beq _08020930
- ldr r0, _08020928 @ =0x02000000
- ldr r2, _0802092C @ =0x0001600f
- adds r0, r2
- movs r1, 0x3
- strb r1, [r0]
- b _08020996
- .align 2, 0
-_08020924: .4byte gBattleMoveDamage
-_08020928: .4byte 0x02000000
-_0802092C: .4byte 0x0001600f
-_08020930:
- ldr r2, _08020950 @ =0x02000000
- ldr r3, _08020954 @ =0x00016018
- adds r1, r2, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _0802095C
- ldr r0, _08020958 @ =0x0001600f
- adds r1, r2, r0
- movs r0, 0x2
- strb r0, [r1]
- b _08020996
- .align 2, 0
-_08020950: .4byte 0x02000000
-_08020954: .4byte 0x00016018
-_08020958: .4byte 0x0001600f
-_0802095C:
- ldr r3, _08020968 @ =0x0001600f
- adds r1, r2, r3
- movs r0, 0x6
- strb r0, [r1]
- b _08020996
- .align 2, 0
-_08020968: .4byte 0x0001600f
-_0802096C:
- ldr r0, _080209A4 @ =gBattleExecBuffer
- ldr r5, [r0]
- cmp r5, 0
- bne _08020996
- ldr r4, _080209A8 @ =gBattleMons
- ldr r2, _080209AC @ =gBank1
- ldrb r0, [r2]
- movs r1, 0x58
- muls r0, r1
- adds r0, r4
- movs r3, 0
- strh r5, [r0, 0x2E]
- ldrb r0, [r2]
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- strb r3, [r0]
- ldr r1, _080209B0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08020996:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080209A4: .4byte gBattleExecBuffer
-_080209A8: .4byte gBattleMons
-_080209AC: .4byte gBank1
-_080209B0: .4byte gBattlescriptCurrInstr
- thumb_func_end atk23_getexp
-
- thumb_func_start atk24
-atk24: @ 80209B4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r0, _08020AF0 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _080209C6
- b _08020B46
-_080209C6:
- movs r5, 0
-_080209C8:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08020AF4 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080209F8
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080209F8
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r0, r6, r0
- lsls r0, 16
- lsrs r6, r0, 16
-_080209F8:
- adds r5, 0x1
- cmp r5, 0x5
- ble _080209C8
- cmp r6, 0
- bne _08020A0C
- ldr r0, _08020AF8 @ =gBattleOutcome
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
-_08020A0C:
- movs r6, 0
- movs r5, 0
-_08020A10:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08020AFC @ =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08020A40
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _08020A40
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r0, r6, r0
- lsls r0, 16
- lsrs r6, r0, 16
-_08020A40:
- adds r5, 0x1
- cmp r5, 0x5
- ble _08020A10
- ldr r2, _08020AF8 @ =gBattleOutcome
- cmp r6, 0
- bne _08020A54
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_08020A54:
- ldrb r0, [r2]
- cmp r0, 0
- bne _08020B3E
- ldr r2, _08020B00 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x2
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _08020B3E
- movs r2, 0
- movs r5, 0
- ldr r0, _08020B04 @ =gNoOfAllBanks
- ldrb r3, [r0]
- mov r12, r0
- ldr r7, _08020B08 @ =gBattlescriptCurrInstr
- cmp r2, r3
- bge _08020AA0
- ldr r0, _08020B0C @ =gHitMarker
- movs r1, 0x80
- lsls r1, 21
- ldr r6, [r0]
- adds r4, r3, 0
- ldr r3, _08020B10 @ =gSpecialStatuses
-_08020A84:
- adds r0, r1, 0
- lsls r0, r5
- ands r0, r6
- cmp r0, 0
- beq _08020A98
- ldrb r0, [r3]
- lsls r0, 25
- cmp r0, 0
- blt _08020A98
- adds r2, 0x1
-_08020A98:
- adds r3, 0x28
- adds r5, 0x2
- cmp r5, r4
- blt _08020A84
-_08020AA0:
- movs r4, 0
- movs r5, 0x1
- mov r0, r12
- ldrb r3, [r0]
- cmp r5, r3
- bge _08020ADA
- ldr r0, _08020B0C @ =gHitMarker
- movs r1, 0x80
- lsls r1, 21
- mov r12, r1
- ldr r1, [r0]
- ldr r0, _08020B10 @ =gSpecialStatuses
- adds r6, r3, 0
- adds r3, r0, 0
- adds r3, 0x14
-_08020ABE:
- mov r0, r12
- lsls r0, r5
- ands r0, r1
- cmp r0, 0
- beq _08020AD2
- ldrb r0, [r3]
- lsls r0, 25
- cmp r0, 0
- blt _08020AD2
- adds r4, 0x1
-_08020AD2:
- adds r3, 0x28
- adds r5, 0x2
- cmp r5, r6
- blt _08020ABE
-_08020ADA:
- mov r0, r8
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08020B14
- adds r0, r4, r2
- cmp r0, 0x1
- bgt _08020B1C
- b _08020B36
- .align 2, 0
-_08020AF0: .4byte gBattleExecBuffer
-_08020AF4: .4byte gPlayerParty
-_08020AF8: .4byte gBattleOutcome
-_08020AFC: .4byte gEnemyParty
-_08020B00: .4byte gBattleTypeFlags
-_08020B04: .4byte gNoOfAllBanks
-_08020B08: .4byte gBattlescriptCurrInstr
-_08020B0C: .4byte gHitMarker
-_08020B10: .4byte gSpecialStatuses
-_08020B14:
- cmp r4, 0
- beq _08020B36
- cmp r2, 0
- beq _08020B36
-_08020B1C:
- ldr r2, [r7]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- str r1, [r7]
- b _08020B46
-_08020B36:
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- b _08020B46
-_08020B3E:
- ldr r1, _08020B50 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08020B46:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08020B50: .4byte gBattlescriptCurrInstr
- thumb_func_end atk24
-
- thumb_func_start sub_8020B54
-sub_8020B54: @ 8020B54
- ldr r1, _08020B80 @ =gBattleMoveFlags
- movs r0, 0
- strb r0, [r1]
- ldr r0, _08020B84 @ =0x02000000
- ldr r1, _08020B88 @ =0x0001601f
- adds r0, r1
- movs r2, 0
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _08020B8C @ =gCritMultiplier
- strb r1, [r0]
- ldr r0, _08020B90 @ =gBattleCommunication
- strb r2, [r0, 0x3]
- strb r2, [r0, 0x6]
- ldr r2, _08020B94 @ =gHitMarker
- ldr r0, [r2]
- subs r1, 0x42
- ands r0, r1
- ldr r1, _08020B98 @ =0xffffbfff
- ands r0, r1
- str r0, [r2]
- bx lr
- .align 2, 0
-_08020B80: .4byte gBattleMoveFlags
-_08020B84: .4byte 0x02000000
-_08020B88: .4byte 0x0001601f
-_08020B8C: .4byte gCritMultiplier
-_08020B90: .4byte gBattleCommunication
-_08020B94: .4byte gHitMarker
-_08020B98: .4byte 0xffffbfff
- thumb_func_end sub_8020B54
-
- thumb_func_start atk25_move_values_cleanup
-atk25_move_values_cleanup: @ 8020B9C
- push {lr}
- bl sub_8020B54
- ldr r1, _08020BB0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08020BB0: .4byte gBattlescriptCurrInstr
- thumb_func_end atk25_move_values_cleanup
-
- thumb_func_start atk26_set_multihit
-atk26_set_multihit: @ 8020BB4
- ldr r3, _08020BC4 @ =gMultiHitCounter
- ldr r2, _08020BC8 @ =gBattlescriptCurrInstr
- ldr r0, [r2]
- ldrb r1, [r0, 0x1]
- strb r1, [r3]
- adds r0, 0x2
- str r0, [r2]
- bx lr
- .align 2, 0
-_08020BC4: .4byte gMultiHitCounter
-_08020BC8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk26_set_multihit
-
- thumb_func_start atk27_decrement_multihit
-atk27_decrement_multihit: @ 8020BCC
- push {lr}
- ldr r1, _08020BE8 @ =gMultiHitCounter
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _08020BF0
- ldr r1, _08020BEC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08020C0A
- .align 2, 0
-_08020BE8: .4byte gMultiHitCounter
-_08020BEC: .4byte gBattlescriptCurrInstr
-_08020BF0:
- ldr r3, _08020C10 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
-_08020C0A:
- pop {r0}
- bx r0
- .align 2, 0
-_08020C10: .4byte gBattlescriptCurrInstr
- thumb_func_end atk27_decrement_multihit
-
- thumb_func_start atk28_goto
-atk28_goto: @ 8020C14
- ldr r3, _08020C30 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
- bx lr
- .align 2, 0
-_08020C30: .4byte gBattlescriptCurrInstr
- thumb_func_end atk28_goto
-
- thumb_func_start atk29_jumpifbyte
-atk29_jumpifbyte: @ 8020C34
- push {r4-r6,lr}
- ldr r3, _08020C78 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r6, [r1, 0x1]
- ldrb r2, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0x6]
- ldrb r2, [r1, 0x7]
- ldrb r0, [r1, 0x8]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x9]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 24
- adds r2, r0
- adds r1, 0xB
- str r1, [r3]
- cmp r6, 0x5
- bhi _08020CCC
- lsls r0, r6, 2
- ldr r1, _08020C7C @ =_08020C80
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08020C78: .4byte gBattlescriptCurrInstr
-_08020C7C: .4byte _08020C80
- .align 2, 0
-_08020C80:
- .4byte _08020C98
- .4byte _08020CA0
- .4byte _08020CA8
- .4byte _08020CB0
- .4byte _08020CB8
- .4byte _08020CC2
-_08020C98:
- ldrb r0, [r5]
- cmp r0, r4
- bne _08020CCC
- b _08020CCA
-_08020CA0:
- ldrb r0, [r5]
- cmp r0, r4
- beq _08020CCC
- b _08020CCA
-_08020CA8:
- ldrb r0, [r5]
- cmp r0, r4
- bls _08020CCC
- b _08020CCA
-_08020CB0:
- ldrb r0, [r5]
- cmp r0, r4
- bcs _08020CCC
- b _08020CCA
-_08020CB8:
- ldrb r0, [r5]
- ands r4, r0
- cmp r4, 0
- beq _08020CCC
- b _08020CCA
-_08020CC2:
- ldrb r0, [r5]
- ands r4, r0
- cmp r4, 0
- bne _08020CCC
-_08020CCA:
- str r2, [r3]
-_08020CCC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk29_jumpifbyte
-
- thumb_func_start atk2A_jumpifhalfword
-atk2A_jumpifhalfword: @ 8020CD4
- push {r4-r6,lr}
- ldr r3, _08020D20 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r6, [r1, 0x1]
- ldrb r2, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0x6]
- ldrb r0, [r1, 0x7]
- lsls r0, 8
- orrs r4, r0
- ldrb r2, [r1, 0x8]
- ldrb r0, [r1, 0x9]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xB]
- lsls r0, 24
- adds r2, r0
- adds r1, 0xC
- str r1, [r3]
- cmp r6, 0x5
- bhi _08020D74
- lsls r0, r6, 2
- ldr r1, _08020D24 @ =_08020D28
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08020D20: .4byte gBattlescriptCurrInstr
-_08020D24: .4byte _08020D28
- .align 2, 0
-_08020D28:
- .4byte _08020D40
- .4byte _08020D48
- .4byte _08020D50
- .4byte _08020D58
- .4byte _08020D60
- .4byte _08020D6A
-_08020D40:
- ldrh r0, [r5]
- cmp r0, r4
- bne _08020D74
- b _08020D72
-_08020D48:
- ldrh r0, [r5]
- cmp r0, r4
- beq _08020D74
- b _08020D72
-_08020D50:
- ldrh r0, [r5]
- cmp r0, r4
- bls _08020D74
- b _08020D72
-_08020D58:
- ldrh r0, [r5]
- cmp r0, r4
- bcs _08020D74
- b _08020D72
-_08020D60:
- ldrh r0, [r5]
- ands r4, r0
- cmp r4, 0
- beq _08020D74
- b _08020D72
-_08020D6A:
- ldrh r0, [r5]
- ands r4, r0
- cmp r4, 0
- bne _08020D74
-_08020D72:
- str r2, [r3]
-_08020D74:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk2A_jumpifhalfword
-
- thumb_func_start atk2B_jumpifword
-atk2B_jumpifword: @ 8020D7C
- push {r4-r6,lr}
- ldr r3, _08020DD4 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r6, [r1, 0x1]
- ldrb r2, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0x6]
- ldrb r0, [r1, 0x7]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r1, 0x8]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r1, 0x9]
- lsls r0, 24
- orrs r4, r0
- ldrb r2, [r1, 0xA]
- ldrb r0, [r1, 0xB]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0xC]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xD]
- lsls r0, 24
- adds r2, r0
- adds r1, 0xE
- str r1, [r3]
- cmp r6, 0x5
- bhi _08020E28
- lsls r0, r6, 2
- ldr r1, _08020DD8 @ =_08020DDC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08020DD4: .4byte gBattlescriptCurrInstr
-_08020DD8: .4byte _08020DDC
- .align 2, 0
-_08020DDC:
- .4byte _08020DF4
- .4byte _08020DFC
- .4byte _08020E04
- .4byte _08020E0C
- .4byte _08020E14
- .4byte _08020E1E
-_08020DF4:
- ldr r0, [r5]
- cmp r0, r4
- bne _08020E28
- b _08020E26
-_08020DFC:
- ldr r0, [r5]
- cmp r0, r4
- beq _08020E28
- b _08020E26
-_08020E04:
- ldr r0, [r5]
- cmp r0, r4
- bls _08020E28
- b _08020E26
-_08020E0C:
- ldr r0, [r5]
- cmp r0, r4
- bcs _08020E28
- b _08020E26
-_08020E14:
- ldr r0, [r5]
- ands r0, r4
- cmp r0, 0
- beq _08020E28
- b _08020E26
-_08020E1E:
- ldr r0, [r5]
- ands r0, r4
- cmp r0, 0
- bne _08020E28
-_08020E26:
- str r2, [r3]
-_08020E28:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk2B_jumpifword
-
- thumb_func_start atk2C_jumpifarrayequal
-atk2C_jumpifarrayequal: @ 8020E30
- push {r4-r7,lr}
- ldr r2, _08020E88 @ =gBattlescriptCurrInstr
- ldr r3, [r2]
- ldrb r1, [r3, 0x1]
- ldrb r0, [r3, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 24
- adds r5, r1, r0
- ldrb r1, [r3, 0x5]
- ldrb r0, [r3, 0x6]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x7]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x8]
- lsls r0, 24
- adds r4, r1, r0
- ldrb r6, [r3, 0x9]
- ldrb r1, [r3, 0xA]
- ldrb r0, [r3, 0xB]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0xC]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0xD]
- lsls r0, 24
- adds r1, r0
- mov r12, r1
- movs r1, 0
- cmp r1, r6
- bcs _08020EA8
- ldrb r0, [r5]
- ldrb r7, [r4]
- cmp r0, r7
- beq _08020E8C
- adds r0, r3, 0
- b _08020EA4
- .align 2, 0
-_08020E88: .4byte gBattlescriptCurrInstr
-_08020E8C:
- adds r5, 0x1
- adds r4, 0x1
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r6
- bcs _08020EA8
- ldrb r0, [r5]
- ldrb r3, [r4]
- cmp r0, r3
- beq _08020E8C
- ldr r0, [r2]
-_08020EA4:
- adds r0, 0xE
- str r0, [r2]
-_08020EA8:
- cmp r1, r6
- bne _08020EB0
- mov r7, r12
- str r7, [r2]
-_08020EB0:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk2C_jumpifarrayequal
-
- thumb_func_start atk2D_jumpifarraynotequal
-atk2D_jumpifarraynotequal: @ 8020EB8
- push {r4-r7,lr}
- movs r7, 0
- ldr r3, _08020F2C @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r2, [r1, 0x5]
- ldrb r0, [r1, 0x6]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x7]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x8]
- lsls r0, 24
- adds r4, r2, r0
- ldrb r6, [r1, 0x9]
- ldrb r2, [r1, 0xA]
- ldrb r0, [r1, 0xB]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0xC]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xD]
- lsls r0, 24
- adds r2, r0
- mov r12, r2
- movs r1, 0
- cmp r7, r6
- bcs _08020F22
-_08020F06:
- ldrb r0, [r5]
- ldrb r2, [r4]
- cmp r0, r2
- bne _08020F14
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_08020F14:
- adds r5, 0x1
- adds r4, 0x1
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r6
- bcc _08020F06
-_08020F22:
- cmp r7, r6
- beq _08020F30
- mov r0, r12
- b _08020F34
- .align 2, 0
-_08020F2C: .4byte gBattlescriptCurrInstr
-_08020F30:
- ldr r0, [r3]
- adds r0, 0xE
-_08020F34:
- str r0, [r3]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk2D_jumpifarraynotequal
-
- thumb_func_start atk2E_setbyte
-atk2E_setbyte: @ 8020F3C
- ldr r3, _08020F60 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r0, [r2, 0x5]
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_08020F60: .4byte gBattlescriptCurrInstr
- thumb_func_end atk2E_setbyte
-
- thumb_func_start atk2F_addbyte
-atk2F_addbyte: @ 8020F64
- ldr r3, _08020F8C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r0, [r2, 0x5]
- ldrb r2, [r1]
- adds r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_08020F8C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk2F_addbyte
-
- thumb_func_start atk30_subbyte
-atk30_subbyte: @ 8020F90
- ldr r3, _08020FB8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r0, [r1]
- ldrb r2, [r2, 0x5]
- subs r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_08020FB8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk30_subbyte
-
- thumb_func_start atk31_copyarray
-atk31_copyarray: @ 8020FBC
- push {r4-r6,lr}
- ldr r3, _0802100C @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- adds r6, r2, r0
- ldrb r2, [r1, 0x5]
- ldrb r0, [r1, 0x6]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x7]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x8]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0x9]
- movs r2, 0
- cmp r2, r4
- bge _08021000
-_08020FF2:
- adds r0, r6, r2
- adds r1, r5, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, r4
- blt _08020FF2
-_08021000:
- ldr r0, [r3]
- adds r0, 0xA
- str r0, [r3]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802100C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk31_copyarray
-
- thumb_func_start atk32_copyarray_withindex
-atk32_copyarray_withindex: @ 8021010
- push {r4-r7,lr}
- ldr r3, _08021078 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- adds r7, r2, r0
- ldrb r2, [r1, 0x5]
- ldrb r0, [r1, 0x6]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x7]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x8]
- lsls r0, 24
- adds r6, r2, r0
- ldrb r2, [r1, 0x9]
- ldrb r0, [r1, 0xA]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0xB]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xC]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0xD]
- movs r2, 0
- cmp r2, r4
- bge _0802106C
-_0802105A:
- adds r0, r7, r2
- ldrb r1, [r5]
- adds r1, r2, r1
- adds r1, r6, r1
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, r4
- blt _0802105A
-_0802106C:
- ldr r0, [r3]
- adds r0, 0xE
- str r0, [r3]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08021078: .4byte gBattlescriptCurrInstr
- thumb_func_end atk32_copyarray_withindex
-
- thumb_func_start atk33_orbyte
-atk33_orbyte: @ 802107C
- ldr r3, _080210A4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r0, [r1]
- ldrb r2, [r2, 0x5]
- orrs r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_080210A4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk33_orbyte
-
- thumb_func_start atk34_orhalfword
-atk34_orhalfword: @ 80210A8
- push {r4,lr}
- ldr r4, _080210DC @ =gBattlescriptCurrInstr
- ldr r3, [r4]
- ldrb r2, [r3, 0x1]
- ldrb r0, [r3, 0x2]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 24
- adds r2, r0
- ldrb r1, [r3, 0x5]
- ldrb r0, [r3, 0x6]
- lsls r0, 8
- orrs r1, r0
- ldrh r0, [r2]
- orrs r1, r0
- strh r1, [r2]
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080210DC: .4byte gBattlescriptCurrInstr
- thumb_func_end atk34_orhalfword
-
- thumb_func_start atk35_orword
-atk35_orword: @ 80210E0
- push {r4,lr}
- ldr r4, _08021120 @ =gBattlescriptCurrInstr
- ldr r2, [r4]
- ldrb r3, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r3, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r3, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r3, r0
- ldrb r1, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 24
- adds r1, r0
- ldr r0, [r3]
- orrs r0, r1
- str r0, [r3]
- ldr r0, [r4]
- adds r0, 0x9
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08021120: .4byte gBattlescriptCurrInstr
- thumb_func_end atk35_orword
-
- thumb_func_start atk36_bicbyte
-atk36_bicbyte: @ 8021124
- ldr r3, _0802114C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r2, [r2, 0x5]
- ldrb r0, [r1]
- bics r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_0802114C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk36_bicbyte
-
- thumb_func_start atk37_bichalfword
-atk37_bichalfword: @ 8021150
- push {r4,lr}
- ldr r4, _08021184 @ =gBattlescriptCurrInstr
- ldr r3, [r4]
- ldrb r1, [r3, 0x1]
- ldrb r0, [r3, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r2, [r3, 0x5]
- ldrb r0, [r3, 0x6]
- lsls r0, 8
- orrs r2, r0
- ldrh r0, [r1]
- bics r0, r2
- strh r0, [r1]
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08021184: .4byte gBattlescriptCurrInstr
- thumb_func_end atk37_bichalfword
-
- thumb_func_start atk38_bicword
-atk38_bicword: @ 8021188
- push {r4,lr}
- ldr r4, _080211C8 @ =gBattlescriptCurrInstr
- ldr r2, [r4]
- ldrb r3, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r3, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r3, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r3, r0
- ldrb r1, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 24
- adds r1, r0
- ldr r0, [r3]
- bics r0, r1
- str r0, [r3]
- ldr r0, [r4]
- adds r0, 0x9
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080211C8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk38_bicword
-
- thumb_func_start atk39_pause
-atk39_pause: @ 80211CC
- push {r4,r5,lr}
- ldr r0, _08021200 @ =gBattleExecBuffer
- ldr r4, [r0]
- cmp r4, 0
- bne _080211F8
- ldr r5, _08021204 @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r3, _08021208 @ =gPauseCounterBattle
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bcc _080211F8
- strh r4, [r3]
- adds r0, r2, 0x3
- str r0, [r5]
-_080211F8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08021200: .4byte gBattleExecBuffer
-_08021204: .4byte gBattlescriptCurrInstr
-_08021208: .4byte gPauseCounterBattle
- thumb_func_end atk39_pause
-
- thumb_func_start atk3A_waitstate
-atk3A_waitstate: @ 802120C
- push {lr}
- ldr r0, _08021224 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0802121E
- ldr r1, _08021228 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0802121E:
- pop {r0}
- bx r0
- .align 2, 0
-_08021224: .4byte gBattleExecBuffer
-_08021228: .4byte gBattlescriptCurrInstr
- thumb_func_end atk3A_waitstate
-
- thumb_func_start atk3B_healthbar_update
-atk3B_healthbar_update: @ 802122C
- push {lr}
- ldr r0, _08021240 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0802124C
- ldr r0, _08021244 @ =gActiveBank
- ldr r1, _08021248 @ =gBankTarget
- b _08021250
- .align 2, 0
-_08021240: .4byte gBattlescriptCurrInstr
-_08021244: .4byte gActiveBank
-_08021248: .4byte gBankTarget
-_0802124C:
- ldr r0, _08021274 @ =gActiveBank
- ldr r1, _08021278 @ =gBankAttacker
-_08021250:
- ldrb r1, [r1]
- strb r1, [r0]
- ldr r0, _0802127C @ =gBattleMoveDamage
- ldrh r1, [r0]
- movs r0, 0
- bl EmitHealthBarUpdate
- ldr r0, _08021274 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _08021280 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08021274: .4byte gActiveBank
-_08021278: .4byte gBankAttacker
-_0802127C: .4byte gBattleMoveDamage
-_08021280: .4byte gBattlescriptCurrInstr
- thumb_func_end atk3B_healthbar_update
-
- thumb_func_start atk3C_return
-atk3C_return: @ 8021284
- push {lr}
- bl b_movescr_stack_pop_cursor
- pop {r0}
- bx r0
- thumb_func_end atk3C_return
-
- thumb_func_start atk3D_end
-atk3D_end: @ 8021290
- ldr r0, _080212A4 @ =gBattleMoveFlags
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080212A8 @ =gActiveBank
- strb r1, [r0]
- ldr r1, _080212AC @ =gFightStateTracker
- movs r0, 0xB
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080212A4: .4byte gBattleMoveFlags
-_080212A8: .4byte gActiveBank
-_080212AC: .4byte gFightStateTracker
- thumb_func_end atk3D_end
-
- thumb_func_start atk3E_end2
-atk3E_end2: @ 80212B0
- ldr r1, _080212C0 @ =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r1, _080212C4 @ =gFightStateTracker
- movs r0, 0xB
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080212C0: .4byte gActiveBank
-_080212C4: .4byte gFightStateTracker
- thumb_func_end atk3E_end2
-
- thumb_func_start atk3F_end3
-atk3F_end3: @ 80212C8
- push {lr}
- bl b_movescr_stack_pop_cursor
- ldr r2, _080212F0 @ =0x02017140
- adds r1, r2, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0
- beq _080212DE
- subs r0, 0x1
- strb r0, [r1]
-_080212DE:
- ldr r0, _080212F4 @ =gBattleMainFunc
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- str r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080212F0: .4byte 0x02017140
-_080212F4: .4byte gBattleMainFunc
- thumb_func_end atk3F_end3
-
- thumb_func_start atk41_call
-atk41_call: @ 80212F8
- push {r4,lr}
- ldr r4, _08021324 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x5
- bl b_movescr_stack_push
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08021324: .4byte gBattlescriptCurrInstr
- thumb_func_end atk41_call
-
- thumb_func_start atk42_jumpiftype2
-atk42_jumpiftype2: @ 8021328
- push {r4,lr}
- ldr r4, _08021370 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [r4]
- ldr r2, _08021374 @ =gBattleMons
- movs r1, 0x58
- muls r0, r1
- adds r0, r2
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r2, [r3, 0x2]
- ldrb r1, [r1]
- cmp r2, r1
- beq _08021356
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r2, r0
- bne _08021378
-_08021356:
- ldrb r1, [r3, 0x3]
- ldrb r0, [r3, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0802137C
- .align 2, 0
-_08021370: .4byte gBattlescriptCurrInstr
-_08021374: .4byte gBattleMons
-_08021378:
- adds r0, r3, 0x7
- str r0, [r4]
-_0802137C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk42_jumpiftype2
-
- thumb_func_start atk43_jumpifabilitypresent
-atk43_jumpifabilitypresent: @ 8021384
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _080213BC @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r2, [r0, 0x1]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080213C0
- ldr r2, [r4]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _080213C6
- .align 2, 0
-_080213BC: .4byte gBattlescriptCurrInstr
-_080213C0:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_080213C6:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk43_jumpifabilitypresent
-
- thumb_func_start atk44
-atk44: @ 80213D0
- ldr r1, _080213E4 @ =0x02000000
- ldr r0, _080213E8 @ =gBankAttacker
- ldrb r0, [r0]
- ldr r2, _080213EC @ =0x00016060
- adds r0, r2
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080213E4: .4byte 0x02000000
-_080213E8: .4byte gBankAttacker
-_080213EC: .4byte 0x00016060
- thumb_func_end atk44
-
- thumb_func_start atk45_playanimation
-atk45_playanimation: @ 80213F0
- push {r4-r6,lr}
- ldr r5, _08021444 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r6, _08021448 @ =gActiveBank
- strb r0, [r6]
- ldr r2, [r5]
- ldrb r1, [r2, 0x3]
- ldrb r0, [r2, 0x4]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 24
- adds r3, r1, r0
- ldrb r4, [r2, 0x2]
- adds r0, r4, 0
- cmp r0, 0x1
- beq _08021426
- cmp r0, 0x11
- beq _08021426
- cmp r0, 0x2
- bne _0802144C
-_08021426:
- ldr r4, _08021444 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x2]
- ldrh r2, [r3]
- movs r0, 0
- bl EmitBattleAnimation
- ldr r0, _08021448 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- b _080214AE
- .align 2, 0
-_08021444: .4byte gBattlescriptCurrInstr
-_08021448: .4byte gActiveBank
-_0802144C:
- ldr r0, _08021464 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802146C
- adds r0, r2, 0x7
- bl b_movescr_stack_push
- ldr r0, _08021468 @ =BattleScript_Pausex20
- b _080214AC
- .align 2, 0
-_08021464: .4byte gHitMarker
-_08021468: .4byte BattleScript_Pausex20
-_0802146C:
- adds r0, r4, 0
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _08021498
- ldr r1, _08021490 @ =gStatuses3
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08021494 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _08021498
- adds r0, r2, 0x7
- b _080214AC
- .align 2, 0
-_08021490: .4byte gStatuses3
-_08021494: .4byte 0x000400c0
-_08021498:
- ldrb r1, [r2, 0x2]
- ldrh r2, [r3]
- movs r0, 0
- bl EmitBattleAnimation
- ldrb r0, [r6]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x7
-_080214AC:
- str r0, [r5]
-_080214AE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk45_playanimation
-
- thumb_func_start atk46_playanimation2
-atk46_playanimation2: @ 80214B4
- push {r4-r7,lr}
- ldr r6, _0802151C @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r7, _08021520 @ =gActiveBank
- strb r0, [r7]
- ldr r2, [r6]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- adds r3, r1, r0
- ldrb r1, [r2, 0x6]
- ldrb r0, [r2, 0x7]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x9]
- lsls r0, 24
- adds r4, r1, r0
- ldrb r5, [r3]
- adds r0, r5, 0
- cmp r0, 0x1
- beq _080214FE
- cmp r0, 0x11
- beq _080214FE
- cmp r0, 0x2
- bne _08021524
-_080214FE:
- ldrb r1, [r3]
- ldrh r2, [r4]
- movs r0, 0
- bl EmitBattleAnimation
- ldr r0, _08021520 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _0802151C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
- b _0802157A
- .align 2, 0
-_0802151C: .4byte gBattlescriptCurrInstr
-_08021520: .4byte gActiveBank
-_08021524:
- ldr r0, _08021534 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08021538
- adds r0, r2, 0
- b _08021576
- .align 2, 0
-_08021534: .4byte gHitMarker
-_08021538:
- adds r0, r5, 0
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _08021564
- ldr r1, _0802155C @ =gStatuses3
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08021560 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _08021564
- adds r0, r2, 0
- b _08021576
- .align 2, 0
-_0802155C: .4byte gStatuses3
-_08021560: .4byte 0x000400c0
-_08021564:
- ldrb r1, [r3]
- ldrh r2, [r4]
- movs r0, 0
- bl EmitBattleAnimation
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r0, [r6]
-_08021576:
- adds r0, 0xA
- str r0, [r6]
-_0802157A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk46_playanimation2
-
- thumb_func_start atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues
-atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues: @ 8021580
- push {r4,lr}
- movs r3, 0
- ldr r0, _080215A0 @ =0x02000000
- ldr r2, _080215A4 @ =0x0001601e
- adds r1, r0, r2
- ldrb r1, [r1]
- movs r2, 0xF0
- ands r2, r1
- adds r4, r0, 0
- cmp r2, 0x20
- beq _080215B6
- cmp r2, 0x20
- bgt _080215A8
- cmp r2, 0x10
- beq _080215B2
- b _080215C0
- .align 2, 0
-_080215A0: .4byte 0x02000000
-_080215A4: .4byte 0x0001601e
-_080215A8:
- cmp r2, 0x90
- beq _080215BA
- cmp r2, 0xA0
- beq _080215BE
- b _080215C0
-_080215B2:
- movs r3, 0xF
- b _080215C0
-_080215B6:
- movs r3, 0x27
- b _080215C0
-_080215BA:
- movs r3, 0x16
- b _080215C0
-_080215BE:
- movs r3, 0x2E
-_080215C0:
- ldr r1, _080215EC @ =0x0001601e
- adds r0, r4, r1
- ldrb r1, [r0]
- movs r0, 0xF
- ands r0, r1
- adds r0, r3, r0
- subs r0, 0x1
- ldr r2, _080215F0 @ =0x000160a4
- adds r1, r4, r2
- movs r2, 0
- strb r0, [r1]
- ldr r1, _080215F4 @ =0x000160a5
- adds r0, r4, r1
- strb r2, [r0]
- ldr r1, _080215F8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080215EC: .4byte 0x0001601e
-_080215F0: .4byte 0x000160a4
-_080215F4: .4byte 0x000160a5
-_080215F8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues
-
- thumb_func_start atk48_playstatchangeanimation
-atk48_playstatchangeanimation: @ 80215FC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r7, 0
- movs r0, 0
- mov r8, r0
- movs r3, 0
- ldr r5, _08021670 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- str r3, [sp]
- bl sub_8015150
- ldr r2, _08021674 @ =gActiveBank
- strb r0, [r2]
- ldr r0, [r5]
- ldrb r4, [r0, 0x2]
- ldrb r1, [r0, 0x3]
- movs r0, 0x1
- ands r0, r1
- ldr r3, [sp]
- cmp r0, 0
- beq _08021710
- movs r0, 0x2
- ands r0, r1
- movs r1, 0x15
- cmp r0, 0
- beq _0802163C
- movs r1, 0x2D
-_0802163C:
- cmp r4, 0
- beq _080216E4
- movs r0, 0x1
- mov r10, r0
- ldr r0, _08021678 @ =gUnknown_02024A98
- mov r9, r0
- lsls r5, r1, 16
-_0802164A:
- adds r0, r4, 0
- mov r1, r10
- ands r0, r1
- cmp r0, 0
- beq _080216D6
- ldr r0, _08021670 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x3]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0802167C
- ldr r0, _08021674 @ =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7, r0
- b _080216C4
- .align 2, 0
-_08021670: .4byte gBattlescriptCurrInstr
-_08021674: .4byte gActiveBank
-_08021678: .4byte gUnknown_02024A98
-_0802167C:
- ldr r6, _08021700 @ =gActiveBank
- ldrb r0, [r6]
- str r3, [sp]
- bl GetBankIdentity
- mov r1, r10
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08021704 @ =gSideTimer
- adds r0, r1
- ldrb r0, [r0, 0x2]
- ldr r3, [sp]
- cmp r0, 0
- bne _080216D6
- ldr r0, _08021708 @ =gBattleMons
- ldrb r2, [r6]
- movs r1, 0x58
- muls r2, r1
- adds r0, r2, r0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1D
- beq _080216D6
- cmp r0, 0x49
- beq _080216D6
- cmp r0, 0x33
- bne _080216BA
- cmp r7, 0x6
- beq _080216D6
-_080216BA:
- cmp r0, 0x34
- bne _080216C2
- cmp r7, 0x1
- beq _080216D6
-_080216C2:
- adds r0, r7, r2
-_080216C4:
- add r0, r9
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _080216D6
- lsrs r0, r5, 16
- mov r8, r0
- adds r3, 0x1
-_080216D6:
- lsrs r4, 1
- movs r1, 0x80
- lsls r1, 9
- adds r5, r1
- adds r7, 0x1
- cmp r4, 0
- bne _0802164A
-_080216E4:
- ldr r0, _0802170C @ =gBattlescriptCurrInstr
- mov r9, r0
- cmp r3, 0x1
- ble _08021772
- ldr r0, [r0]
- ldrb r1, [r0, 0x3]
- movs r0, 0x2
- ands r0, r1
- movs r1, 0x39
- mov r8, r1
- cmp r0, 0
- beq _08021772
- movs r0, 0x3A
- b _08021770
- .align 2, 0
-_08021700: .4byte gActiveBank
-_08021704: .4byte gSideTimer
-_08021708: .4byte gBattleMons
-_0802170C: .4byte gBattlescriptCurrInstr
-_08021710:
- movs r0, 0x2
- ands r0, r1
- movs r1, 0xE
- cmp r0, 0
- beq _0802171C
- movs r1, 0x26
-_0802171C:
- mov r9, r5
- cmp r4, 0
- beq _08021758
- ldr r6, _0802178C @ =gUnknown_02024A98
- adds r5, r2, 0
- lsls r2, r1, 16
-_08021728:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _0802174A
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7, r0
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0xB
- bgt _0802174A
- lsrs r1, r2, 16
- mov r8, r1
- adds r3, 0x1
-_0802174A:
- lsrs r4, 1
- movs r0, 0x80
- lsls r0, 9
- adds r2, r0
- adds r7, 0x1
- cmp r4, 0
- bne _08021728
-_08021758:
- cmp r3, 0x1
- ble _08021772
- mov r1, r9
- ldr r0, [r1]
- ldrb r1, [r0, 0x3]
- movs r0, 0x2
- ands r0, r1
- movs r1, 0x37
- mov r8, r1
- cmp r0, 0
- beq _08021772
- movs r0, 0x38
-_08021770:
- mov r8, r0
-_08021772:
- mov r1, r9
- ldr r2, [r1]
- ldrb r1, [r2, 0x3]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08021790
- cmp r3, 0x1
- bgt _08021790
- adds r0, r2, 0x4
- mov r1, r9
- b _080217E6
- .align 2, 0
-_0802178C: .4byte gUnknown_02024A98
-_08021790:
- cmp r3, 0
- beq _080217E0
- ldr r0, _080217D0 @ =0x02000000
- ldr r1, _080217D4 @ =0x000160dc
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- bne _080217E0
- movs r0, 0
- movs r1, 0x1
- mov r2, r8
- str r3, [sp]
- bl EmitBattleAnimation
- ldr r0, _080217D8 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r0, _080217DC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x3]
- movs r0, 0x4
- ands r0, r1
- ldr r3, [sp]
- cmp r0, 0
- beq _080217CC
- cmp r3, 0x1
- ble _080217CC
- movs r0, 0x1
- strb r0, [r4]
-_080217CC:
- ldr r1, _080217DC @ =gBattlescriptCurrInstr
- b _080217E2
- .align 2, 0
-_080217D0: .4byte 0x02000000
-_080217D4: .4byte 0x000160dc
-_080217D8: .4byte gActiveBank
-_080217DC: .4byte gBattlescriptCurrInstr
-_080217E0:
- mov r1, r9
-_080217E2:
- ldr r0, [r1]
- adds r0, 0x4
-_080217E6:
- str r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk48_playstatchangeanimation
-
- thumb_func_start sub_80217F8
-sub_80217F8: @ 80217F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- movs r0, 0
- mov r10, r0
- ldr r0, _08021834 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- str r1, [sp, 0x10]
- ldrb r0, [r0, 0x2]
- str r0, [sp, 0x14]
- ldr r1, _08021838 @ =gBattleMons
- ldr r0, _0802183C @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _08021844
- ldr r1, _08021840 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x7]
- b _0802184E
- .align 2, 0
-_08021834: .4byte gBattlescriptCurrInstr
-_08021838: .4byte gBattleMons
-_0802183C: .4byte gBankAttacker
-_08021840: .4byte gEnigmaBerries
-_08021844:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r0, 24
-_0802184E:
- str r0, [sp, 0x8]
- ldr r0, _0802186C @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 1
- ldr r0, _08021870 @ =0x020160e8
- adds r1, r0
- str r1, [sp, 0xC]
- subs r0, 0xCC
- ldrb r0, [r0]
- cmp r0, 0
- beq _080218C0
- movs r2, 0x3F
- ands r2, r0
- str r2, [sp, 0x4]
- b _080218D2
- .align 2, 0
-_0802186C: .4byte gBankAttacker
-_08021870: .4byte 0x020160e8
-_08021874:
- strb r2, [r7]
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- ldr r0, _080218AC @ =0x02000000
- ldr r3, _080218B0 @ =0x0001600c
- adds r0, r3
- strb r4, [r0]
- bl sub_8020B54
- ldr r2, _080218B4 @ =gUnknown_081D6BBC
- mov r4, r8
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- bl b_movescr_stack_push
- ldr r1, _080218B8 @ =gBattlescriptCurrInstr
- ldr r0, _080218BC @ =gUnknown_081D9B2D
- bl _0802229C
- .align 2, 0
-_080218AC: .4byte 0x02000000
-_080218B0: .4byte 0x0001600c
-_080218B4: .4byte gUnknown_081D6BBC
-_080218B8: .4byte gBattlescriptCurrInstr
-_080218BC: .4byte gUnknown_081D9B2D
-_080218C0:
- ldr r2, _080218D8 @ =gBattleMoves
- ldr r0, _080218DC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- str r0, [sp, 0x4]
-_080218D2:
- ldr r5, _080218E0 @ =0x02000000
- mov r12, r5
- b _080218EE
- .align 2, 0
-_080218D8: .4byte gBattleMoves
-_080218DC: .4byte gCurrentMove
-_080218E0: .4byte 0x02000000
-_080218E4:
- mov r0, r10
- cmp r0, 0
- beq _080218EE
- bl _08022286
-_080218EE:
- ldr r0, _08021908 @ =0x0001600c
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0x11
- bls _080218FC
- bl _0802224E
-_080218FC:
- lsls r0, 2
- ldr r1, _0802190C @ =_08021910
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08021908: .4byte 0x0001600c
-_0802190C: .4byte _08021910
- .align 2, 0
-_08021910:
- .4byte _08021958
- .4byte _08021A34
- .4byte _08021AF0
- .4byte _08021B20
- .4byte _08021B44
- .4byte _08021B78
- .4byte _08021B9C
- .4byte _08021C40
- .4byte _08021C78
- .4byte _08021CA8
- .4byte _08021CCC
- .4byte _08021D18
- .4byte _08021DAC
- .4byte _08021E30
- .4byte _08021E70
- .4byte _08022068
- .4byte _080221C0
- .4byte _0802224E
-_08021958:
- ldr r5, _08021A08 @ =gBattleMons
- ldr r2, _08021A0C @ =gBankTarget
- ldrb r4, [r2]
- movs r6, 0x58
- adds r3, r4, 0
- muls r3, r6
- adds r0, r5, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 16
- ands r1, r0
- cmp r1, 0
- beq _080219FE
- adds r0, r3, r5
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _080219FE
- ldr r0, _08021A10 @ =gBankAttacker
- ldrb r1, [r0]
- cmp r1, r4
- beq _080219FE
- adds r0, r1, 0
- bl GetBankSide
- adds r4, r0, 0
- ldr r1, _08021A0C @ =gBankTarget
- ldrb r0, [r1]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _080219FE
- ldr r0, _08021A14 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _080219FE
- ldr r2, _08021A18 @ =gProtectStructs
- ldr r4, _08021A0C @ =gBankTarget
- ldrb r3, [r4]
- lsls r1, r3, 4
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _080219C8
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080219FE
-_080219C8:
- ldr r2, _08021A1C @ =gBattleMoves
- ldr r0, _08021A20 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080219FE
- adds r0, r3, 0
- muls r0, r6
- adds r1, r0, r5
- ldrb r2, [r1, 0x19]
- movs r0, 0x19
- ldrsb r0, [r1, r0]
- cmp r0, 0xB
- bgt _080219FE
- adds r0, r2, 0x1
- strb r0, [r1, 0x19]
- bl b_movescr_stack_push_cursor
- ldr r1, _08021A24 @ =gBattlescriptCurrInstr
- ldr r0, _08021A28 @ =gUnknown_081D9132
- str r0, [r1]
- movs r5, 0x1
- mov r10, r5
-_080219FE:
- ldr r2, _08021A2C @ =0x02000000
- ldr r0, _08021A30 @ =0x0001600c
- adds r1, r2, r0
- b _08021E00
- .align 2, 0
-_08021A08: .4byte gBattleMons
-_08021A0C: .4byte gBankTarget
-_08021A10: .4byte gBankAttacker
-_08021A14: .4byte gBattleMoveFlags
-_08021A18: .4byte gProtectStructs
-_08021A1C: .4byte gBattleMoves
-_08021A20: .4byte gCurrentMove
-_08021A24: .4byte gBattlescriptCurrInstr
-_08021A28: .4byte gUnknown_081D9132
-_08021A2C: .4byte 0x02000000
-_08021A30: .4byte 0x0001600c
-_08021A34:
- ldr r2, _08021AD0 @ =gBattleMons
- ldr r1, _08021AD4 @ =gBankTarget
- ldrb r4, [r1]
- movs r3, 0x58
- mov r12, r3
- mov r3, r12
- muls r3, r4
- adds r7, r2, 0
- adds r7, 0x4C
- adds r6, r3, r7
- ldr r5, [r6]
- movs r0, 0x20
- ands r0, r5
- cmp r0, 0
- bne _08021A54
- b _08021DFA
-_08021A54:
- adds r0, r3, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08021A5E
- b _08021DFA
-_08021A5E:
- ldr r0, _08021AD8 @ =gBankAttacker
- ldrb r0, [r0]
- cmp r0, r4
- bne _08021A68
- b _08021DFA
-_08021A68:
- ldr r0, _08021ADC @ =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r0, 0xC
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _08021A7C
- b _08021DFA
-_08021A7C:
- ldr r0, _08021AE0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08021A8A
- b _08021DFA
-_08021A8A:
- ldr r4, [sp, 0x4]
- cmp r4, 0xA
- beq _08021A92
- b _08021DFA
-_08021A92:
- movs r0, 0x21
- negs r0, r0
- ands r5, r0
- str r5, [r6]
- ldr r4, _08021AE4 @ =gActiveBank
- ldr r5, _08021AD4 @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r4]
- ldrb r0, [r5]
- mov r1, r12
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- bl b_movescr_stack_push_cursor
- ldr r1, _08021AE8 @ =gBattlescriptCurrInstr
- ldr r0, _08021AEC @ =gUnknown_081D955D
- str r0, [r1]
- movs r2, 0x1
- mov r10, r2
- b _08021DFA
- .align 2, 0
-_08021AD0: .4byte gBattleMons
-_08021AD4: .4byte gBankTarget
-_08021AD8: .4byte gBankAttacker
-_08021ADC: .4byte gSpecialStatuses
-_08021AE0: .4byte gBattleMoveFlags
-_08021AE4: .4byte gActiveBank
-_08021AE8: .4byte gBattlescriptCurrInstr
-_08021AEC: .4byte gUnknown_081D955D
-_08021AF0:
- ldr r0, _08021B14 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x7
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08021B0C
- movs r4, 0x1
- mov r10, r4
-_08021B0C:
- ldr r2, _08021B18 @ =0x02000000
- ldr r5, _08021B1C @ =0x0001600c
- adds r1, r2, r5
- b _08021E00
- .align 2, 0
-_08021B14: .4byte gBankTarget
-_08021B18: .4byte 0x02000000
-_08021B1C: .4byte 0x0001600c
-_08021B20:
- ldr r0, _08021B40 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x4
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _08021B3A
- b _08021DFA
-_08021B3A:
- movs r0, 0x1
- mov r10, r0
- b _08021DFA
- .align 2, 0
-_08021B40: .4byte gBankTarget
-_08021B44:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x5
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08021B68
- movs r4, 0x1
- mov r10, r4
- ldr r5, _08021B64 @ =0x02000000
- mov r12, r5
- b _0802224E
- .align 2, 0
-_08021B64: .4byte 0x02000000
-_08021B68:
- ldr r2, _08021B70 @ =0x02000000
- ldr r0, _08021B74 @ =0x0001600c
- adds r1, r2, r0
- b _08021E00
- .align 2, 0
-_08021B70: .4byte 0x02000000
-_08021B74: .4byte 0x0001600c
-_08021B78:
- ldr r0, _08021B98 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x8
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _08021B92
- b _08021DFA
-_08021B92:
- movs r1, 0x1
- mov r10, r1
- b _08021DFA
- .align 2, 0
-_08021B98: .4byte gBankAttacker
-_08021B9C:
- ldr r0, _08021C28 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _08021BE0
- ldr r4, [sp, 0x8]
- cmp r4, 0x1D
- bne _08021BE0
- ldr r0, _08021C2C @ =gUnknown_02024BE8
- ldrh r2, [r0]
- adds r7, r0, 0
- cmp r2, 0xA5
- beq _08021BE0
- ldr r5, [sp, 0xC]
- ldrh r1, [r5]
- cmp r1, 0
- beq _08021BC8
- ldr r0, _08021C30 @ =0x0000ffff
- cmp r1, r0
- bne _08021BE0
-_08021BC8:
- cmp r2, 0xE2
- bne _08021BDA
- ldr r0, _08021C34 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08021BDA
- b _08022244
-_08021BDA:
- ldrh r0, [r7]
- ldr r1, [sp, 0xC]
- strh r0, [r1]
-_08021BE0:
- movs r4, 0
- ldr r2, _08021C38 @ =gBattleMons
- ldr r3, _08021C3C @ =gBankAttacker
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r2, 0xC
- adds r0, r2
- ldrh r0, [r0]
- ldr r5, [sp, 0xC]
- ldrh r1, [r5]
- mov r9, r3
- cmp r0, r1
- beq _08021C18
- mov r6, r9
- movs r3, 0x58
- adds r5, r1, 0
-_08021C02:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _08021C18
- lsls r0, r4, 1
- ldrb r1, [r6]
- muls r1, r3
- adds r0, r1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r5
- bne _08021C02
-_08021C18:
- cmp r4, 0x4
- beq _08021C1E
- b _08022244
-_08021C1E:
- movs r0, 0
- ldr r1, [sp, 0xC]
-_08021C22:
- strh r0, [r1]
- b _08022244
- .align 2, 0
-_08021C28: .4byte gHitMarker
-_08021C2C: .4byte gUnknown_02024BE8
-_08021C30: .4byte 0x0000ffff
-_08021C34: .4byte gBattleMoveFlags
-_08021C38: .4byte gBattleMons
-_08021C3C: .4byte gBankAttacker
-_08021C40:
- movs r4, 0
- ldr r0, _08021C6C @ =gNoOfAllBanks
- ldrb r2, [r0]
- cmp r4, r2
- blt _08021C4C
- b _08022244
-_08021C4C:
- movs r5, 0
- ldr r2, _08021C70 @ =0x020160f0
- ldr r3, _08021C74 @ =gBattleMons
-_08021C52:
- ldrh r1, [r2]
- cmp r1, 0
- beq _08021C5C
- strh r1, [r3, 0x2E]
- strh r5, [r2]
-_08021C5C:
- adds r2, 0x2
- adds r3, 0x58
- adds r4, 0x1
- ldrb r1, [r0]
- cmp r4, r1
- blt _08021C52
- b _08022244
- .align 2, 0
-_08021C6C: .4byte gNoOfAllBanks
-_08021C70: .4byte 0x020160f0
-_08021C74: .4byte gBattleMons
-_08021C78:
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl sub_801A02C
- lsls r0, 24
- cmp r0, 0
- beq _08021C98
- movs r2, 0x1
- mov r10, r2
- ldr r3, _08021C94 @ =0x02000000
- mov r12, r3
- b _0802224E
- .align 2, 0
-_08021C94: .4byte 0x02000000
-_08021C98:
- ldr r2, _08021CA0 @ =0x02000000
- ldr r4, _08021CA4 @ =0x0001600c
- adds r1, r2, r4
- b _08021E00
- .align 2, 0
-_08021CA0: .4byte 0x02000000
-_08021CA4: .4byte 0x0001600c
-_08021CA8:
- movs r0, 0x4
- movs r1, 0
- movs r2, 0
- bl sub_801A02C
- lsls r0, 24
- cmp r0, 0
- beq _08021CBC
- movs r5, 0x1
- mov r10, r5
-_08021CBC:
- ldr r2, _08021CC4 @ =0x02000000
- ldr r0, _08021CC8 @ =0x0001600c
- adds r1, r2, r0
- b _08021E00
- .align 2, 0
-_08021CC4: .4byte 0x02000000
-_08021CC8: .4byte 0x0001600c
-_08021CCC:
- ldr r1, _08021D04 @ =gStatuses3
- ldr r0, _08021D08 @ =gBankAttacker
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08021D0C @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _08021CE2
- b _08021DFA
-_08021CE2:
- ldr r0, _08021D10 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08021CF0
- b _08021DFA
-_08021CF0:
- ldr r4, _08021D14 @ =gActiveBank
- strb r2, [r4]
- movs r0, 0
- movs r1, 0x1
- bl EmitSpriteInvisibility
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08021DFA
- .align 2, 0
-_08021D04: .4byte gStatuses3
-_08021D08: .4byte gBankAttacker
-_08021D0C: .4byte 0x000400c0
-_08021D10: .4byte gHitMarker
-_08021D14: .4byte gActiveBank
-_08021D18:
- ldr r0, _08021D88 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08021D44
- ldr r1, _08021D8C @ =gStatuses3
- ldr r0, _08021D90 @ =gBankAttacker
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08021D94 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _08021D44
- adds r0, r2, 0
- bl sub_8015660
- lsls r0, 24
- cmp r0, 0
- beq _08021D7E
-_08021D44:
- ldr r4, _08021D98 @ =gActiveBank
- ldr r5, _08021D90 @ =gBankAttacker
- ldrb r0, [r5]
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- bl EmitSpriteInvisibility
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, _08021D8C @ =gStatuses3
- ldrb r2, [r5]
- lsls r2, 2
- adds r2, r0
- ldr r0, [r2]
- ldr r1, _08021D9C @ =0xfffbff3f
- ands r0, r1
- str r0, [r2]
- ldr r2, _08021DA0 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_08021D7E:
- ldr r2, _08021DA4 @ =0x02000000
- ldr r4, _08021DA8 @ =0x0001600c
- adds r1, r2, r4
- b _08021E00
- .align 2, 0
-_08021D88: .4byte gBattleMoveFlags
-_08021D8C: .4byte gStatuses3
-_08021D90: .4byte gBankAttacker
-_08021D94: .4byte 0x000400c0
-_08021D98: .4byte gActiveBank
-_08021D9C: .4byte 0xfffbff3f
-_08021DA0: .4byte gSpecialStatuses
-_08021DA4: .4byte 0x02000000
-_08021DA8: .4byte 0x0001600c
-_08021DAC:
- ldr r2, _08021E0C @ =gSpecialStatuses
- ldr r1, _08021E10 @ =gBankTarget
- ldrb r3, [r1]
- lsls r4, r3, 2
- adds r0, r4, r3
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _08021DFA
- ldr r0, _08021E14 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r3, r0
- bcs _08021DFA
- ldr r5, _08021E18 @ =gStatuses3
- adds r0, r4, r5
- ldr r0, [r0]
- ldr r1, _08021E1C @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _08021DFA
- ldr r4, _08021E20 @ =gActiveBank
- strb r3, [r4]
- movs r0, 0
- movs r1, 0
- bl EmitSpriteInvisibility
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, _08021E10 @ =gBankTarget
- ldrb r2, [r0]
- lsls r2, 2
- adds r2, r5
- ldr r0, [r2]
- ldr r1, _08021E24 @ =0xfffbff3f
- ands r0, r1
- str r0, [r2]
-_08021DFA:
- ldr r2, _08021E28 @ =0x02000000
- ldr r3, _08021E2C @ =0x0001600c
- adds r1, r2, r3
-_08021E00:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r12, r2
- b _0802224E
- .align 2, 0
-_08021E0C: .4byte gSpecialStatuses
-_08021E10: .4byte gBankTarget
-_08021E14: .4byte gNoOfAllBanks
-_08021E18: .4byte gStatuses3
-_08021E1C: .4byte 0x000400c0
-_08021E20: .4byte gActiveBank
-_08021E24: .4byte 0xfffbff3f
-_08021E28: .4byte 0x02000000
-_08021E2C: .4byte 0x0001600c
-_08021E30:
- movs r4, 0
- ldr r0, _08021E60 @ =gNoOfAllBanks
- ldrb r5, [r0]
- cmp r4, r5
- blt _08021E3C
- b _08022244
-_08021E3C:
- ldr r2, _08021E64 @ =gDisableStructs
- ldr r5, _08021E68 @ =0xfeffffff
- adds r3, r0, 0
- ldr r1, _08021E6C @ =gUnknown_02024AD0
-_08021E44:
- ldrb r0, [r2, 0xA]
- cmp r0, 0
- bne _08021E50
- ldr r0, [r1]
- ands r0, r5
- str r0, [r1]
-_08021E50:
- adds r2, 0x1C
- adds r1, 0x58
- adds r4, 0x1
- ldrb r0, [r3]
- cmp r4, r0
- blt _08021E44
- b _08022244
- .align 2, 0
-_08021E60: .4byte gNoOfAllBanks
-_08021E64: .4byte gDisableStructs
-_08021E68: .4byte 0xfeffffff
-_08021E6C: .4byte gUnknown_02024AD0
-_08021E70:
- ldr r1, _08021F2C @ =gHitMarker
- ldr r3, [r1]
- movs r0, 0x80
- lsls r0, 5
- ands r0, r3
- ldr r2, _08021F30 @ =gBankAttacker
- mov r9, r2
- adds r5, r1, 0
- cmp r0, 0
- beq _08021E9A
- ldr r0, _08021F34 @ =gActiveBank
- ldrb r2, [r2]
- strb r2, [r0]
- ldr r1, _08021F38 @ =gBankTarget
- ldrb r0, [r1]
- mov r4, r9
- strb r0, [r4]
- strb r2, [r1]
- ldr r0, _08021F3C @ =0xffffefff
- ands r3, r0
- str r3, [r5]
-_08021E9A:
- ldr r1, _08021F40 @ =gBattleMoves
- ldr r2, _08021F44 @ =gUnknown_02024BE8
- ldrh r3, [r2]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- mov r8, r1
- adds r7, r2, 0
- cmp r0, 0x7F
- bne _08021EBE
- ldr r0, _08021F48 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08021ECA
-_08021EBE:
- ldr r1, _08021F4C @ =gUnknown_02024C2C
- mov r2, r9
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- strh r3, [r0]
-_08021ECA:
- ldr r0, _08021F50 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _08021F54 @ =gBitTable
- mov r3, r9
- ldrb r4, [r3]
- lsls r0, r4, 2
- adds r0, r2
- ldr r3, [r0]
- ands r1, r3
- adds r6, r2, 0
- cmp r1, 0
- beq _08021EE4
- b _08022244
-_08021EE4:
- ldr r0, _08021F58 @ =0x000160a6
- add r0, r12
- ldrb r0, [r0]
- ands r0, r3
- cmp r0, 0
- beq _08021EF2
- b _08022244
-_08021EF2:
- ldrh r2, [r7]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0]
- cmp r0, 0x7F
- bne _08021F04
- b _08022244
-_08021F04:
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _08021F68
- ldr r1, _08021F5C @ =gLastUsedMove
- lsls r0, r4, 1
- adds r0, r1
- strh r2, [r0]
- ldr r0, _08021F60 @ =gUnknown_02024C4C
- mov r4, r9
- ldrb r1, [r4]
- lsls r1, 1
- adds r1, r0
- ldr r0, _08021F64 @ =gCurrentMove
- ldrh r0, [r0]
- strh r0, [r1]
- b _08021F82
- .align 2, 0
-_08021F2C: .4byte gHitMarker
-_08021F30: .4byte gBankAttacker
-_08021F34: .4byte gActiveBank
-_08021F38: .4byte gBankTarget
-_08021F3C: .4byte 0xffffefff
-_08021F40: .4byte gBattleMoves
-_08021F44: .4byte gUnknown_02024BE8
-_08021F48: .4byte gBattleMoveFlags
-_08021F4C: .4byte gUnknown_02024C2C
-_08021F50: .4byte gAbsentBankFlags
-_08021F54: .4byte gBitTable
-_08021F58: .4byte 0x000160a6
-_08021F5C: .4byte gLastUsedMove
-_08021F60: .4byte gUnknown_02024C4C
-_08021F64: .4byte gCurrentMove
-_08021F68:
- ldr r1, _08021FD0 @ =gLastUsedMove
- lsls r0, r4, 1
- adds r0, r1
- ldr r1, _08021FD4 @ =0x0000ffff
- strh r1, [r0]
- ldr r1, _08021FD8 @ =gUnknown_02024C4C
- mov r2, r9
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0x1
- negs r1, r1
- strh r1, [r0]
-_08021F82:
- ldr r2, _08021FDC @ =gBankTarget
- ldrb r3, [r2]
- lsls r0, r3, 2
- adds r0, r6
- ldr r0, [r0]
- lsls r0, 28
- ldr r1, [r5]
- ands r1, r0
- cmp r1, 0
- bne _08021FA0
- ldr r0, _08021FE0 @ =gUnknown_02024C5C
- adds r0, r3, r0
- mov r3, r9
- ldrb r1, [r3]
- strb r1, [r0]
-_08021FA0:
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _0802204C
- ldr r0, _08021FE4 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0802204C
- ldrh r2, [r7]
- ldr r0, _08021FD4 @ =0x0000ffff
- cmp r2, r0
- bne _08021FEC
- ldr r1, _08021FE8 @ =gMoveHitWith
- ldr r4, _08021FDC @ =gBankTarget
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- b _08022244
- .align 2, 0
-_08021FD0: .4byte gLastUsedMove
-_08021FD4: .4byte 0x0000ffff
-_08021FD8: .4byte gUnknown_02024C4C
-_08021FDC: .4byte gBankTarget
-_08021FE0: .4byte gUnknown_02024C5C
-_08021FE4: .4byte gBattleMoveFlags
-_08021FE8: .4byte gMoveHitWith
-_08021FEC:
- ldr r0, _08022014 @ =gMoveHitWith
- ldr r5, _08022018 @ =gBankTarget
- ldrb r1, [r5]
- lsls r1, 1
- adds r1, r0
- ldr r4, _0802201C @ =gCurrentMove
- ldrh r0, [r4]
- strh r0, [r1]
- ldr r0, _08022020 @ =0x0001601c
- add r0, r12
- ldrb r3, [r0]
- cmp r3, 0
- beq _08022028
- ldr r0, _08022024 @ =gUnknown_02024C44
- ldrb r1, [r5]
- lsls r1, 1
- adds r1, r0
- movs r0, 0x3F
- ands r0, r3
- b _08021C22
- .align 2, 0
-_08022014: .4byte gMoveHitWith
-_08022018: .4byte gBankTarget
-_0802201C: .4byte gCurrentMove
-_08022020: .4byte 0x0001601c
-_08022024: .4byte gUnknown_02024C44
-_08022028:
- ldr r0, _08022044 @ =gUnknown_02024C44
- ldr r1, _08022048 @ =gBankTarget
- ldrb r2, [r1]
- lsls r2, 1
- adds r2, r0
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x2]
- strh r0, [r2]
- b _08022244
- .align 2, 0
-_08022044: .4byte gUnknown_02024C44
-_08022048: .4byte gBankTarget
-_0802204C:
- ldr r0, _0802205C @ =gMoveHitWith
- ldr r2, _08022060 @ =gBankTarget
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- ldr r0, _08022064 @ =0x0000ffff
- b _08021C22
- .align 2, 0
-_0802205C: .4byte gMoveHitWith
-_08022060: .4byte gBankTarget
-_08022064: .4byte 0x0000ffff
-_08022068:
- ldr r0, _0802212C @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r6, _08022130 @ =gBitTable
- ldr r2, _08022134 @ =gBankAttacker
- ldrb r5, [r2]
- lsls r0, r5, 2
- adds r0, r6
- ldr r4, [r0]
- ands r1, r4
- mov r9, r2
- cmp r1, 0
- beq _08022082
- b _08022244
-_08022082:
- ldr r0, _08022138 @ =0x000160a6
- add r0, r12
- ldrb r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _08022090
- b _08022244
-_08022090:
- ldr r1, _0802213C @ =gBattleMoves
- ldr r4, _08022140 @ =gUnknown_02024BE8
- ldrh r3, [r4]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802215C
- ldr r0, _08022144 @ =gHitMarker
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 18
- ands r0, r1
- cmp r0, 0
- beq _0802215C
- ldr r2, _08022148 @ =gBankTarget
- ldrb r0, [r2]
- cmp r5, r0
- bne _080220C0
- b _08022244
-_080220C0:
- adds r2, r0, 0
- lsls r0, r2, 2
- adds r0, r6
- ldr r0, [r0]
- lsls r0, 28
- ands r1, r0
- cmp r1, 0
- bne _0802215C
- ldr r0, _0802214C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0802215C
- lsls r0, r2, 1
- ldr r5, _08022150 @ =0x000160ac
- adds r0, r5
- add r0, r12
- strb r3, [r0]
- ldr r0, _08022148 @ =gBankTarget
- ldrb r1, [r0]
- lsls r1, 1
- ldr r2, _08022154 @ =0x000160ad
- adds r1, r2
- add r1, r12
- ldrh r0, [r4]
- lsrs r0, 8
- strb r0, [r1]
- ldr r3, _08022148 @ =gBankTarget
- ldrb r2, [r3]
- lsls r2, 2
- mov r5, r9
- ldrb r0, [r5]
- lsrs r0, 1
- lsls r0, 1
- ldr r1, _08022158 @ =0x00016100
- adds r0, r1
- adds r2, r0
- add r2, r12
- ldrh r0, [r4]
- strb r0, [r2]
- ldrb r2, [r3]
- lsls r2, 2
- ldrb r0, [r5]
- lsrs r0, 1
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- adds r2, r0
- add r2, r12
- ldrh r0, [r4]
- lsrs r0, 8
- strb r0, [r2]
- b _08022244
- .align 2, 0
-_0802212C: .4byte gAbsentBankFlags
-_08022130: .4byte gBitTable
-_08022134: .4byte gBankAttacker
-_08022138: .4byte 0x000160a6
-_0802213C: .4byte gBattleMoves
-_08022140: .4byte gUnknown_02024BE8
-_08022144: .4byte gHitMarker
-_08022148: .4byte gBankTarget
-_0802214C: .4byte gBattleMoveFlags
-_08022150: .4byte 0x000160ac
-_08022154: .4byte 0x000160ad
-_08022158: .4byte 0x00016100
-_0802215C:
- mov r1, r9
- ldrb r0, [r1]
- ldr r2, _080221B4 @ =gBankTarget
- ldrb r2, [r2]
- cmp r0, r2
- beq _08022244
- ldr r3, _080221B4 @ =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- ldr r4, _080221B8 @ =0x000160ac
- adds r0, r4
- add r0, r12
- movs r3, 0
- strb r3, [r0]
- ldr r5, _080221B4 @ =gBankTarget
- ldrb r0, [r5]
- lsls r0, 1
- ldr r1, _080221BC @ =0x000160ad
- adds r0, r1
- add r0, r12
- strb r3, [r0]
- ldrb r2, [r5]
- lsls r2, 2
- mov r4, r9
- ldrb r0, [r4]
- lsrs r0, 1
- lsls r0, 1
- adds r1, 0x53
- adds r0, r1
- adds r2, r0
- add r2, r12
- strb r3, [r2]
- ldrb r2, [r5]
- lsls r2, 2
- ldrb r0, [r4]
- lsrs r0, 1
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- adds r2, r0
- add r2, r12
- strb r3, [r2]
- b _08022244
- .align 2, 0
-_080221B4: .4byte gBankTarget
-_080221B8: .4byte 0x000160ac
-_080221BC: .4byte 0x000160ad
-_080221C0:
- ldr r5, _080222B0 @ =gHitMarker
- ldr r2, [r5]
- movs r0, 0x80
- lsls r0, 12
- ands r0, r2
- cmp r0, 0
- bne _08022244
- ldr r0, _080222B4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08022244
- ldr r1, _080222B8 @ =gProtectStructs
- ldr r0, _080222BC @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- cmp r0, 0
- blt _08022244
- ldr r0, _080222C0 @ =gBattleMoves
- mov r9, r0
- ldr r1, _080222C4 @ =gCurrentMove
- mov r8, r1
- ldrh r0, [r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- add r1, r9
- ldrb r0, [r1, 0x6]
- cmp r0, 0x8
- bne _08022244
- movs r6, 0x80
- lsls r6, 2
- adds r4, r6, 0
- ands r4, r2
- cmp r4, 0
- bne _08022244
- ldr r7, _080222C8 @ =gBankTarget
- ldrb r0, [r7]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080222CC @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0802223A
- bl _08021874
-_0802223A:
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- ldr r2, _080222D0 @ =0x02000000
- mov r12, r2
-_08022244:
- ldr r1, _080222D4 @ =0x0001600c
- add r1, r12
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0802224E:
- ldr r3, [sp, 0x10]
- cmp r3, 0x1
- bne _08022262
- mov r4, r10
- cmp r4, 0
- bne _08022262
- ldr r1, _080222D4 @ =0x0001600c
- add r1, r12
- movs r0, 0x11
- strb r0, [r1]
-_08022262:
- ldr r5, [sp, 0x10]
- cmp r5, 0x2
- bne _08022278
- ldr r1, _080222D4 @ =0x0001600c
- add r1, r12
- ldr r0, [sp, 0x14]
- ldrb r2, [r1]
- cmp r0, r2
- bne _08022278
- movs r0, 0x11
- strb r0, [r1]
-_08022278:
- ldr r0, _080222D4 @ =0x0001600c
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _08022286
- bl _080218E4
-_08022286:
- ldr r0, _080222D4 @ =0x0001600c
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0x11
- bne _0802229E
- mov r3, r10
- cmp r3, 0
- bne _0802229E
- ldr r1, _080222D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
-_0802229C:
- str r0, [r1]
-_0802229E:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080222B0: .4byte gHitMarker
-_080222B4: .4byte gBattleTypeFlags
-_080222B8: .4byte gProtectStructs
-_080222BC: .4byte gBankAttacker
-_080222C0: .4byte gBattleMoves
-_080222C4: .4byte gCurrentMove
-_080222C8: .4byte gBankTarget
-_080222CC: .4byte gBattleMons
-_080222D0: .4byte 0x02000000
-_080222D4: .4byte 0x0001600c
-_080222D8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80217F8
-
- thumb_func_start atk4A_damageflags
-atk4A_damageflags: @ 80222DC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r4, 0
- movs r5, 0
- ldr r2, _08022340 @ =gBattleMoves
- ldr r0, _08022344 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r8, r0
- ldr r2, _08022348 @ =gBattleMons
- ldr r3, _0802234C @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- mov r12, r2
- adds r7, r3, 0
- cmp r0, 0x1A
- bne _08022370
- mov r1, r8
- cmp r1, 0x4
- bne _08022370
- ldr r3, _08022350 @ =gLastUsedAbility
- strb r0, [r3]
- ldr r2, _08022354 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x9
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08022358 @ =gMoveHitWith
- ldrb r0, [r7]
- lsls r0, 1
- adds r0, r1
- strh r4, [r0]
- ldr r0, _0802235C @ =gBattleCommunication
- mov r2, r8
- strb r2, [r0, 0x6]
- ldrb r0, [r7]
- ldrb r1, [r3]
- bl RecordAbilityBattle
- b _08022452
- .align 2, 0
-_08022340: .4byte gBattleMoves
-_08022344: .4byte gCurrentMove
-_08022348: .4byte gBattleMons
-_0802234C: .4byte gBankTarget
-_08022350: .4byte gLastUsedAbility
-_08022354: .4byte gBattleMoveFlags
-_08022358: .4byte gMoveHitWith
-_0802235C: .4byte gBattleCommunication
-_08022360:
- ldr r0, _0802236C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
- b _08022452
- .align 2, 0
-_0802236C: .4byte gBattleMoveFlags
-_08022370:
- ldr r1, _0802237C @ =gTypeEffectiveness
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r6, r1, 0
- b _08022432
- .align 2, 0
-_0802237C: .4byte gTypeEffectiveness
-_08022380:
- adds r0, r5, r6
- ldrb r0, [r0]
- cmp r0, r8
- bne _0802242C
- adds r2, r5, 0x1
- adds r3, r2, r6
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- add r0, r12
- adds r0, 0x21
- ldrb r1, [r3]
- adds r3, r2, 0
- ldrb r0, [r0]
- cmp r1, r0
- bne _080223BE
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r1, [r0]
- cmp r1, 0
- beq _08022360
- cmp r1, 0x5
- bne _080223B2
- movs r0, 0x4
- orrs r4, r0
-_080223B2:
- cmp r1, 0x14
- bne _080223BE
- movs r0, 0x2
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080223BE:
- adds r2, r3, r6
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- add r0, r12
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0802242C
- adds r0, 0x21
- ldrb r1, [r0]
- cmp r1, r2
- beq _080223E6
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0
- beq _08022360
-_080223E6:
- cmp r1, r2
- beq _080223FC
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _080223FC
- movs r0, 0x4
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080223FC:
- adds r2, r3, r6
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- add r0, r12
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0802242C
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0802242C
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0802242C
- movs r0, 0x2
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_0802242C:
- adds r5, 0x3
- adds r0, r5, r6
- ldrb r0, [r0]
-_08022432:
- cmp r0, 0xFF
- beq _08022452
- cmp r0, 0xFE
- bne _08022380
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- mov r1, r12
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0802242C
-_08022452:
- ldr r2, _08022500 @ =gBattleMons
- ldr r0, _08022504 @ =gBankTarget
- mov r8, r0
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r6, [r0]
- cmp r6, 0x19
- bne _080224CE
- movs r5, 0x29
- ands r5, r4
- cmp r5, 0
- bne _080224CE
- ldr r0, _08022508 @ =gBankAttacker
- ldrb r0, [r0]
- ldr r7, _0802250C @ =gCurrentMove
- ldrh r1, [r7]
- bl move_weather_interaction
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _080224CE
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08022494
- movs r0, 0x6
- ands r4, r0
- cmp r4, 0x6
- bne _080224CE
-_08022494:
- ldr r2, _08022510 @ =gBattleMoves
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080224CE
- ldr r3, _08022514 @ =gLastUsedAbility
- strb r6, [r3]
- ldr r2, _08022518 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0802251C @ =gMoveHitWith
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- strh r5, [r0]
- ldr r1, _08022520 @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- ldrb r0, [r2]
- ldrb r1, [r3]
- bl RecordAbilityBattle
-_080224CE:
- ldr r0, _08022518 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080224EC
- ldr r2, _08022524 @ =gProtectStructs
- ldr r0, _08022508 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r2
- ldrb r0, [r1, 0x1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1, 0x1]
-_080224EC:
- ldr r1, _08022528 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08022500: .4byte gBattleMons
-_08022504: .4byte gBankTarget
-_08022508: .4byte gBankAttacker
-_0802250C: .4byte gCurrentMove
-_08022510: .4byte gBattleMoves
-_08022514: .4byte gLastUsedAbility
-_08022518: .4byte gBattleMoveFlags
-_0802251C: .4byte gMoveHitWith
-_08022520: .4byte gBattleCommunication
-_08022524: .4byte gProtectStructs
-_08022528: .4byte gBattlescriptCurrInstr
- thumb_func_end atk4A_damageflags
-
- thumb_func_start atk4B_cmd4b
-atk4B_cmd4b: @ 802252C
- push {r4,lr}
- ldr r4, _08022568 @ =gActiveBank
- ldr r0, _0802256C @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r2, _08022570 @ =gHitMarker
- ldr r1, _08022574 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- ands r0, r1
- cmp r0, 0
- bne _0802255A
- movs r0, 0
- movs r1, 0
- bl dp01_build_cmdbuf_x06_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0802255A:
- ldr r1, _08022578 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08022568: .4byte gActiveBank
-_0802256C: .4byte gBankAttacker
-_08022570: .4byte gHitMarker
-_08022574: .4byte gBitTable
-_08022578: .4byte gBattlescriptCurrInstr
- thumb_func_end atk4B_cmd4b
-
- thumb_func_start atk4C_switch1
-atk4C_switch1: @ 802257C
- push {r4-r6,lr}
- ldr r0, _080225D4 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _080225CC
- ldr r5, _080225D8 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _080225DC @ =gActiveBank
- strb r0, [r4]
- ldr r3, _080225E0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r1, r0, 1
- adds r1, r3
- ldr r2, _080225E4 @ =0x02000000
- ldr r6, _080225E8 @ =0x00016068
- adds r0, r6
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r1]
- ldr r1, _080225EC @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0]
- movs r0, 0
- movs r1, 0
- bl EmitGetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_080225CC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080225D4: .4byte gBattleExecBuffer
-_080225D8: .4byte gBattlescriptCurrInstr
-_080225DC: .4byte gActiveBank
-_080225E0: .4byte gBattlePartyID
-_080225E4: .4byte 0x02000000
-_080225E8: .4byte 0x00016068
-_080225EC: .4byte gBitTable
- thumb_func_end atk4C_switch1
-
- thumb_func_start sub_80225F0
-sub_80225F0: @ 80225F0
- push {r4-r7,lr}
- sub sp, 0x58
- ldr r0, _0802274C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _080225FE
- b _08022744
-_080225FE:
- ldr r0, _08022750 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _08022754 @ =gActiveBank
- strb r0, [r4]
- ldr r6, _08022758 @ =gBattleMons
- ldrb r0, [r4]
- movs r5, 0x58
- adds r1, r0, 0
- muls r1, r5
- adds r1, r6
- mov r0, sp
- movs r2, 0x58
- bl memcpy
- ldrb r0, [r4]
- muls r0, r5
- adds r3, r0, r6
- movs r2, 0
- ldr r5, _0802275C @ =gBattleBufferB
- adds r7, r4, 0
-_0802262C:
- adds r0, r3, r2
- ldrb r1, [r4]
- lsls r1, 9
- adds r1, 0x4
- adds r1, r2, r1
- adds r1, r5
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x57
- bls _0802262C
- ldr r4, _08022758 @ =gBattleMons
- ldrb r0, [r7]
- movs r6, 0x58
- adds r2, r0, 0
- muls r2, r6
- adds r2, r4
- ldr r3, _08022760 @ =gBaseStats
- ldrh r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x6]
- adds r2, 0x21
- strb r0, [r2]
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r4
- ldrh r2, [r1]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x7]
- adds r1, 0x22
- strb r0, [r1]
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r4
- ldrh r0, [r1]
- ldrb r1, [r1, 0x17]
- lsrs r1, 7
- bl GetAbilityBySpecies
- ldrb r1, [r7]
- muls r1, r6
- adds r1, r4
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r7]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08022764 @ =gWishFutureKnock
- adds r0, 0x29
- adds r0, r2, r0
- ldrb r1, [r0]
- ldr r3, _08022768 @ =gBitTable
- ldr r2, _0802276C @ =gBattlePartyID
- ldrb r5, [r7]
- lsls r0, r5, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ands r1, r0
- mov r12, r4
- cmp r1, 0
- beq _080226CA
- adds r0, r5, 0
- muls r0, r6
- add r0, r12
- movs r1, 0
- strh r1, [r0, 0x2E]
-_080226CA:
- ldr r2, _08022770 @ =gBattleMoves
- ldr r0, _08022774 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x7F
- bne _08022710
- movs r2, 0
- adds r4, r7, 0
- movs r6, 0x58
- mov r5, r12
- adds r5, 0x18
- add r3, sp, 0x18
-_080226EA:
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r2, r1
- adds r1, r5
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0x7
- ble _080226EA
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- mov r1, r12
- adds r1, 0x50
- adds r0, r1
- ldr r1, [sp, 0x50]
- str r1, [r0]
-_08022710:
- bl SwitchInClearStructs
- ldr r0, _08022778 @ =0x02000000
- ldr r3, _08022754 @ =gActiveBank
- ldrb r2, [r3]
- ldr r1, _0802277C @ =0x00016003
- adds r0, r1
- strb r2, [r0]
- ldr r1, _08022780 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- strb r2, [r1, 0x2]
- ldr r2, _0802276C @ =gBattlePartyID
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08022750 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08022744:
- add sp, 0x58
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802274C: .4byte gBattleExecBuffer
-_08022750: .4byte gBattlescriptCurrInstr
-_08022754: .4byte gActiveBank
-_08022758: .4byte gBattleMons
-_0802275C: .4byte gBattleBufferB
-_08022760: .4byte gBaseStats
-_08022764: .4byte gWishFutureKnock
-_08022768: .4byte gBitTable
-_0802276C: .4byte gBattlePartyID
-_08022770: .4byte gBattleMoves
-_08022774: .4byte gCurrentMove
-_08022778: .4byte 0x02000000
-_0802277C: .4byte 0x00016003
-_08022780: .4byte gBattleTextBuff1
- thumb_func_end sub_80225F0
-
- thumb_func_start sub_8022784
-sub_8022784: @ 8022784
- push {r4,r5,lr}
- ldr r0, _0802280C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08022806
- ldr r0, _08022810 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _08022814 @ =gActiveBank
- strb r0, [r4]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080227D0
- ldr r0, _08022818 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0802281C @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _080227D0
- ldr r2, _08022820 @ =gBattleMons
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl GetNationalPokedexFlag
-_080227D0:
- ldr r2, _08022824 @ =gAbsentBankFlags
- ldr r1, _08022828 @ =gBitTable
- ldr r5, _08022814 @ =gActiveBank
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldrb r0, [r2]
- bics r0, r1
- strb r0, [r2]
- ldr r1, _0802282C @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrb r1, [r0]
- ldr r4, _08022810 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r2, [r0, 0x2]
- movs r0, 0
- bl sub_800C704
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
-_08022806:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802280C: .4byte gBattleExecBuffer
-_08022810: .4byte gBattlescriptCurrInstr
-_08022814: .4byte gActiveBank
-_08022818: .4byte gBattleTypeFlags
-_0802281C: .4byte 0x00000902
-_08022820: .4byte gBattleMons
-_08022824: .4byte gAbsentBankFlags
-_08022828: .4byte gBitTable
-_0802282C: .4byte gBattlePartyID
- thumb_func_end sub_8022784
-
- thumb_func_start sub_8022830
-sub_8022830: @ 8022830
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, _08022894 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- movs r0, 0x7F
- ands r0, r1
- bl sub_8015150
- ldr r3, _08022898 @ =gActiveBank
- strb r0, [r3]
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080228A8
- ldr r1, _0802289C @ =gBattleMons
- ldrb r3, [r3]
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080228A0 @ =0x0400e000
- ands r0, r1
- cmp r0, 0
- bne _0802287C
- ldr r1, _080228A4 @ =gStatuses3
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- beq _080228A8
-_0802287C:
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08022A2C
- .align 2, 0
-_08022894: .4byte gBattlescriptCurrInstr
-_08022898: .4byte gActiveBank
-_0802289C: .4byte gBattleMons
-_080228A0: .4byte 0x0400e000
-_080228A4: .4byte gStatuses3
-_080228A8:
- ldr r5, _08022934 @ =gBattleTypeFlags
- ldrh r1, [r5]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08022948
- ldr r4, _08022938 @ =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0802293C @ =gPlayerParty
- mov r8, r1
- cmp r0, 0x1
- bne _080228CC
- ldr r0, _08022940 @ =gEnemyParty
- mov r8, r0
-_080228CC:
- movs r5, 0
- ldrb r0, [r4]
- bl sub_803FC34
- lsls r0, 24
- lsrs r0, 24
- bl sub_803FBFC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _080228E6
- movs r5, 0x3
-_080228E6:
- adds r6, r5, 0x3
- cmp r5, r6
- bge _0802292E
- ldr r7, _08022944 @ =gBattlePartyID
-_080228EE:
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08022928
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _08022928
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08022928
- ldr r0, _08022938 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, r5
- bne _0802292E
-_08022928:
- adds r5, 0x1
- cmp r5, r6
- blt _080228EE
-_0802292E:
- cmp r5, r6
- beq _080229FC
- b _08022A24
- .align 2, 0
-_08022934: .4byte gBattleTypeFlags
-_08022938: .4byte gActiveBank
-_0802293C: .4byte gPlayerParty
-_08022940: .4byte gEnemyParty
-_08022944: .4byte gBattlePartyID
-_08022948:
- ldr r0, _08022978 @ =gActiveBank
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bne _08022988
- movs r0, 0x1
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r1, [r5]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0802297C
- movs r0, 0x3
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- b _0802297E
- .align 2, 0
-_08022978: .4byte gActiveBank
-_0802297C:
- adds r6, r7, 0
-_0802297E:
- ldr r0, _08022984 @ =gEnemyParty
- mov r8, r0
- b _080229AE
- .align 2, 0
-_08022984: .4byte gEnemyParty
-_08022988:
- movs r0, 0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r1, [r5]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080229A8
- movs r0, 0x2
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- b _080229AA
-_080229A8:
- adds r6, r7, 0
-_080229AA:
- ldr r1, _08022A18 @ =gPlayerParty
- mov r8, r1
-_080229AE:
- movs r5, 0
-_080229B0:
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080229F2
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080229F2
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080229F2
- ldr r1, _08022A1C @ =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080229F2
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- bne _080229F8
-_080229F2:
- adds r5, 0x1
- cmp r5, 0x5
- ble _080229B0
-_080229F8:
- cmp r5, 0x6
- bne _08022A24
-_080229FC:
- ldr r3, _08022A20 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08022A2C
- .align 2, 0
-_08022A18: .4byte gPlayerParty
-_08022A1C: .4byte gBattlePartyID
-_08022A20: .4byte gBattlescriptCurrInstr
-_08022A24:
- ldr r1, _08022A38 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
-_08022A2C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08022A38: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8022830
-
- thumb_func_start sub_8022A3C
-sub_8022A3C: @ 8022A3C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r4, _08022A84 @ =0x02000000
- ldr r5, _08022A88 @ =gActiveBank
- ldrb r0, [r5]
- ldr r3, _08022A8C @ =0x00016064
- adds r1, r0, r3
- adds r1, r4
- ldr r3, _08022A90 @ =gBattlePartyID
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- ldr r1, _08022A94 @ =0x0001606c
- adds r4, r1
- adds r0, r4
- str r0, [sp]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08022A84: .4byte 0x02000000
-_08022A88: .4byte gActiveBank
-_08022A8C: .4byte 0x00016064
-_08022A90: .4byte gBattlePartyID
-_08022A94: .4byte 0x0001606c
- thumb_func_end sub_8022A3C
-
- thumb_func_start atk50_openpartyscreen
-atk50_openpartyscreen: @ 8022A98
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- movs r7, 0
- movs r0, 0
- mov r9, r0
- ldr r6, _08022B44 @ =gBattlescriptCurrInstr
- ldr r1, [r6]
- ldrb r2, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- orrs r2, r0
- mov r8, r2
- ldrb r2, [r1, 0x1]
- adds r0, r2, 0
- mov r12, r6
- cmp r0, 0x5
- beq _08022ACE
- b _08022F74
-_08022ACE:
- ldr r0, _08022B48 @ =gBattleTypeFlags
- ldrh r0, [r0]
- movs r1, 0x41
- ands r1, r0
- cmp r1, 0x1
- beq _08022BBC
- ldr r1, _08022B4C @ =gActiveBank
- strb r7, [r1]
- ldr r0, _08022B50 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r7, r0
- bcc _08022AE8
- b _08022F62
-_08022AE8:
- ldr r7, _08022B54 @ =gHitMarker
- ldr r6, _08022B58 @ =gBitTable
- adds r4, r1, 0
- ldr r0, _08022B5C @ =gAbsentBankFlags
- mov r8, r0
-_08022AF2:
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r7]
- ands r0, r1
- cmp r0, 0
- beq _08022B94
- adds r0, r2, 0
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022B60
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- mov r2, r8
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r7]
- bics r0, r1
- str r0, [r7]
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022BA2
- .align 2, 0
-_08022B44: .4byte gBattlescriptCurrInstr
-_08022B48: .4byte gBattleTypeFlags
-_08022B4C: .4byte gActiveBank
-_08022B50: .4byte gNoOfAllBanks
-_08022B54: .4byte gHitMarker
-_08022B58: .4byte gBitTable
-_08022B5C: .4byte gAbsentBankFlags
-_08022B60:
- ldr r5, _08022B90 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022BA2
- movs r0, 0x6
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022BA2
- .align 2, 0
-_08022B90: .4byte gSpecialStatuses
-_08022B94:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08022BA2:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _08022BB8 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08022AF2
- b _08022F62
- .align 2, 0
-_08022BB8: .4byte gNoOfAllBanks
-_08022BBC:
- ands r1, r0
- cmp r1, 0
- bne _08022BC4
- b _08022F62
-_08022BC4:
- ldr r0, _08022C1C @ =gHitMarker
- mov r8, r0
- ldr r0, [r0]
- lsrs r5, r0, 28
- ldr r6, _08022C20 @ =gBitTable
- ldr r0, [r6]
- ands r0, r5
- cmp r0, 0
- beq _08022C7E
- ldr r4, _08022C24 @ =gActiveBank
- strb r7, [r4]
- movs r0, 0
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022C2C
- ldr r2, _08022C28 @ =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- mov r2, r8
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022C7E
- .align 2, 0
-_08022C1C: .4byte gHitMarker
-_08022C20: .4byte gBitTable
-_08022C24: .4byte gActiveBank
-_08022C28: .4byte gAbsentBankFlags
-_08022C2C:
- ldr r6, _08022C60 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022C6C
- ldr r0, _08022C64 @ =0x02000000
- ldr r1, _08022C68 @ =0x0001606a
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022C7E
- .align 2, 0
-_08022C60: .4byte gSpecialStatuses
-_08022C64: .4byte 0x02000000
-_08022C68: .4byte 0x0001606a
-_08022C6C:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- movs r2, 0x1
- mov r9, r2
-_08022C7E:
- ldr r6, _08022CD8 @ =gBitTable
- ldr r0, [r6, 0x8]
- ands r0, r5
- cmp r0, 0
- beq _08022D40
- ldr r0, [r6]
- ands r0, r5
- cmp r0, 0
- bne _08022D40
- ldr r4, _08022CDC @ =gActiveBank
- movs r0, 0x2
- strb r0, [r4]
- movs r0, 0x2
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022CE8
- ldr r2, _08022CE0 @ =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _08022CE4 @ =gHitMarker
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022D40
- .align 2, 0
-_08022CD8: .4byte gBitTable
-_08022CDC: .4byte gActiveBank
-_08022CE0: .4byte gAbsentBankFlags
-_08022CE4: .4byte gHitMarker
-_08022CE8:
- ldr r6, _08022D1C @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022D28
- ldr r0, _08022D20 @ =0x02000000
- ldr r1, _08022D24 @ =0x00016068
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022D40
- .align 2, 0
-_08022D1C: .4byte gSpecialStatuses
-_08022D20: .4byte 0x02000000
-_08022D24: .4byte 0x00016068
-_08022D28:
- movs r0, 0x1
- mov r2, r9
- ands r0, r2
- cmp r0, 0
- bne _08022D40
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08022D40:
- ldr r6, _08022D90 @ =gBitTable
- ldr r0, [r6, 0x4]
- ands r0, r5
- cmp r0, 0
- beq _08022DF6
- ldr r4, _08022D94 @ =gActiveBank
- movs r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022DA0
- ldr r2, _08022D98 @ =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _08022D9C @ =gHitMarker
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022DF6
- .align 2, 0
-_08022D90: .4byte gBitTable
-_08022D94: .4byte gActiveBank
-_08022D98: .4byte gAbsentBankFlags
-_08022D9C: .4byte gHitMarker
-_08022DA0:
- ldr r6, _08022DD4 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022DE0
- ldr r0, _08022DD8 @ =0x02000000
- ldr r1, _08022DDC @ =0x0001606b
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022DF6
- .align 2, 0
-_08022DD4: .4byte gSpecialStatuses
-_08022DD8: .4byte 0x02000000
-_08022DDC: .4byte 0x0001606b
-_08022DE0:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- movs r0, 0x2
- mov r2, r9
- orrs r2, r0
- mov r9, r2
-_08022DF6:
- ldr r6, _08022E50 @ =gBitTable
- ldr r0, [r6, 0xC]
- ands r0, r5
- cmp r0, 0
- beq _08022EB8
- ldr r0, [r6, 0x4]
- ands r0, r5
- cmp r0, 0
- bne _08022EB8
- ldr r4, _08022E54 @ =gActiveBank
- movs r0, 0x3
- strb r0, [r4]
- movs r0, 0x3
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022E60
- ldr r2, _08022E58 @ =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _08022E5C @ =gHitMarker
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022EB8
- .align 2, 0
-_08022E50: .4byte gBitTable
-_08022E54: .4byte gActiveBank
-_08022E58: .4byte gAbsentBankFlags
-_08022E5C: .4byte gHitMarker
-_08022E60:
- ldr r6, _08022E94 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022EA0
- ldr r0, _08022E98 @ =0x02000000
- ldr r1, _08022E9C @ =0x00016069
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022EB8
- .align 2, 0
-_08022E94: .4byte gSpecialStatuses
-_08022E98: .4byte 0x02000000
-_08022E9C: .4byte 0x00016069
-_08022EA0:
- movs r0, 0x2
- mov r2, r9
- ands r2, r0
- cmp r2, 0
- bne _08022EB8
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08022EB8:
- ldr r1, _08022EE8 @ =gSpecialStatuses
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022F0C
- adds r0, r1, 0
- adds r0, 0x28
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _08022F0C
- cmp r5, 0
- beq _08022F0C
- ldr r0, _08022EEC @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r0, _08022EF0 @ =gBitTable
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08022EF8
- ldr r1, _08022EF4 @ =gActiveBank
- movs r0, 0x2
- strb r0, [r1]
- b _08022EFC
- .align 2, 0
-_08022EE8: .4byte gSpecialStatuses
-_08022EEC: .4byte gAbsentBankFlags
-_08022EF0: .4byte gBitTable
-_08022EF4: .4byte gActiveBank
-_08022EF8:
- ldr r0, _08022F3C @ =gActiveBank
- strb r1, [r0]
-_08022EFC:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldr r0, _08022F3C @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_08022F0C:
- ldr r1, _08022F40 @ =gSpecialStatuses
- ldrb r0, [r1, 0x14]
- lsls r0, 25
- cmp r0, 0
- blt _08022F62
- adds r0, r1, 0
- adds r0, 0x3C
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _08022F62
- cmp r5, 0
- beq _08022F62
- ldr r0, _08022F44 @ =gAbsentBankFlags
- ldrb r0, [r0]
- ldr r1, _08022F48 @ =gBitTable
- ldr r1, [r1, 0x4]
- ands r0, r1
- cmp r0, 0
- beq _08022F4C
- ldr r1, _08022F3C @ =gActiveBank
- movs r0, 0x3
- b _08022F50
- .align 2, 0
-_08022F3C: .4byte gActiveBank
-_08022F40: .4byte gSpecialStatuses
-_08022F44: .4byte gAbsentBankFlags
-_08022F48: .4byte gBitTable
-_08022F4C:
- ldr r1, _08022F6C @ =gActiveBank
- movs r0, 0x1
-_08022F50:
- strb r0, [r1]
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldr r0, _08022F6C @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_08022F62:
- ldr r1, _08022F70 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- b _08023302
- .align 2, 0
-_08022F6C: .4byte gActiveBank
-_08022F70: .4byte gBattlescriptCurrInstr
-_08022F74:
- cmp r0, 0x6
- beq _08022F7A
- b _08023170
-_08022F7A:
- ldr r0, _08022FF0 @ =gBattleTypeFlags
- ldrh r2, [r0]
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _08022F88
- b _0802310C
-_08022F88:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _08022F92
- b _0802310C
-_08022F92:
- ldr r7, _08022FF4 @ =gHitMarker
- ldr r0, [r7]
- lsrs r5, r0, 28
- ldr r4, _08022FF8 @ =gBitTable
- ldr r0, [r4, 0x8]
- ands r0, r5
- cmp r0, 0
- beq _0802303A
- ldr r0, [r4]
- ands r0, r5
- cmp r0, 0
- beq _0802303A
- ldr r6, _08022FFC @ =gActiveBank
- movs r0, 0x2
- strb r0, [r6]
- ldr r0, _08023000 @ =gBattleBufferB
- ldrb r1, [r0, 0x1]
- movs r0, 0x2
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08023008
- ldr r2, _08023004 @ =gAbsentBankFlags
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r7]
- bics r0, r1
- str r0, [r7]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r6]
- bl MarkBufferBankForExecution
- b _0802303A
- .align 2, 0
-_08022FF0: .4byte gBattleTypeFlags
-_08022FF4: .4byte gHitMarker
-_08022FF8: .4byte gBitTable
-_08022FFC: .4byte gActiveBank
-_08023000: .4byte gBattleBufferB
-_08023004: .4byte gAbsentBankFlags
-_08023008:
- ldr r4, _08023098 @ =gSpecialStatuses
- ldrb r0, [r6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _0802303A
- ldr r0, _0802309C @ =0x02000000
- ldr r1, _080230A0 @ =0x00016068
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
-_0802303A:
- ldr r4, _080230A4 @ =gBitTable
- ldr r0, [r4, 0xC]
- ands r0, r5
- cmp r0, 0
- beq _080230EE
- ldr r0, [r4, 0x4]
- ands r5, r0
- cmp r5, 0
- beq _080230EE
- ldr r5, _080230A8 @ =gActiveBank
- movs r0, 0x3
- strb r0, [r5]
- ldr r0, _080230AC @ =gBattleBufferB
- ldr r2, _080230B0 @ =0x00000201
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x3
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _080230BC
- ldr r2, _080230B4 @ =gAbsentBankFlags
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _080230B8 @ =gHitMarker
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- b _080230EE
- .align 2, 0
-_08023098: .4byte gSpecialStatuses
-_0802309C: .4byte 0x02000000
-_080230A0: .4byte 0x00016068
-_080230A4: .4byte gBitTable
-_080230A8: .4byte gActiveBank
-_080230AC: .4byte gBattleBufferB
-_080230B0: .4byte 0x00000201
-_080230B4: .4byte gAbsentBankFlags
-_080230B8: .4byte gHitMarker
-_080230BC:
- ldr r4, _080230FC @ =gSpecialStatuses
- ldrb r0, [r5]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _080230EE
- ldr r0, _08023100 @ =0x02000000
- ldr r1, _08023104 @ =0x00016069
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
-_080230EE:
- ldr r1, _08023108 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- mov r12, r1
- b _08023110
- .align 2, 0
-_080230FC: .4byte gSpecialStatuses
-_08023100: .4byte 0x02000000
-_08023104: .4byte 0x00016069
-_08023108: .4byte gBattlescriptCurrInstr
-_0802310C:
- adds r0, r1, 0x6
- str r0, [r6]
-_08023110:
- ldr r0, _08023160 @ =gHitMarker
- ldr r0, [r0]
- lsrs r5, r0, 28
- ldr r1, _08023164 @ =gBank1
- movs r0, 0
- strb r0, [r1]
- ldr r4, _08023168 @ =gBitTable
- ldr r2, [r4]
- ands r2, r5
- ldr r6, _0802316C @ =gNoOfAllBanks
- cmp r2, 0
- bne _0802314C
- adds r7, r6, 0
- ldrb r0, [r6]
- cmp r2, r0
- bcs _0802314C
- adds r3, r1, 0
-_08023132:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- ldrb r2, [r3]
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- ands r0, r5
- cmp r0, 0
- bne _0802314C
- ldrb r0, [r7]
- cmp r2, r0
- bcc _08023132
-_0802314C:
- ldrb r0, [r1]
- ldrb r6, [r6]
- cmp r0, r6
- beq _08023156
- b _08023302
-_08023156:
- mov r1, r8
- mov r2, r12
- str r1, [r2]
- b _08023302
- .align 2, 0
-_08023160: .4byte gHitMarker
-_08023164: .4byte gBank1
-_08023168: .4byte gBitTable
-_0802316C: .4byte gNoOfAllBanks
-_08023170:
- movs r0, 0x80
- ands r0, r2
- movs r5, 0x1
- cmp r0, 0
- beq _0802317C
- movs r5, 0
-_0802317C:
- movs r0, 0x7F
- ands r0, r2
- bl sub_8015150
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080231A4 @ =gSpecialStatuses
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- bge _080231A8
- ldr r0, [r6]
- adds r0, 0x6
- str r0, [r6]
- b _08023302
- .align 2, 0
-_080231A4: .4byte gSpecialStatuses
-_080231A8:
- adds r0, r7, 0
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _080231F8
- ldr r2, _080231E8 @ =gActiveBank
- strb r7, [r2]
- ldr r3, _080231EC @ =gAbsentBankFlags
- ldr r4, _080231F0 @ =gBitTable
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r3]
- orrs r0, r1
- strb r0, [r3]
- ldr r3, _080231F4 @ =gHitMarker
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r3]
- bics r0, r1
- str r0, [r3]
- mov r0, r8
- str r0, [r6]
- b _08023302
- .align 2, 0
-_080231E8: .4byte gActiveBank
-_080231EC: .4byte gAbsentBankFlags
-_080231F0: .4byte gBitTable
-_080231F4: .4byte gHitMarker
-_080231F8:
- ldr r4, _080232A0 @ =gActiveBank
- strb r7, [r4]
- ldr r3, _080232A4 @ =0x02000000
- ldrb r0, [r4]
- ldr r2, _080232A8 @ =0x00016064
- adds r1, r0, r2
- adds r1, r3
- ldr r2, _080232AC @ =gBattlePartyID
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- ldr r1, _080232B0 @ =0x00016068
- adds r0, r1
- adds r0, r3
- ldrb r2, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- ldr r1, _080232B4 @ =0x0001606c
- adds r3, r1
- adds r0, r3
- str r0, [sp]
- movs r0, 0
- adds r1, r5, 0
- movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r6]
- adds r0, 0x6
- str r0, [r6]
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- cmp r0, 0
- bne _0802325A
- ldr r1, _080232B8 @ =gBattleResults
- ldrb r0, [r1, 0x2]
- cmp r0, 0xFE
- bhi _0802325A
- adds r0, 0x1
- strb r0, [r1, 0x2]
-_0802325A:
- ldr r0, _080232BC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080232C4
- ldr r1, _080232A0 @ =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080232C0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r0, 0
- beq _08023302
- adds r4, r1, 0
-_08023276:
- ldrb r0, [r4]
- cmp r0, r7
- beq _0802328A
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0802328A:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _080232C0 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08023276
- b _08023302
- .align 2, 0
-_080232A0: .4byte gActiveBank
-_080232A4: .4byte 0x02000000
-_080232A8: .4byte 0x00016064
-_080232AC: .4byte gBattlePartyID
-_080232B0: .4byte 0x00016068
-_080232B4: .4byte 0x0001606c
-_080232B8: .4byte gBattleResults
-_080232BC: .4byte gBattleTypeFlags
-_080232C0: .4byte gNoOfAllBanks
-_080232C4:
- adds r0, r7, 0
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r4, _08023310 @ =gActiveBank
- strb r0, [r4]
- ldr r0, _08023314 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _08023318 @ =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _080232F4
- movs r0, 0x2
- eors r3, r0
- strb r3, [r4]
-_080232F4:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08023302:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08023310: .4byte gActiveBank
-_08023314: .4byte gAbsentBankFlags
-_08023318: .4byte gBitTable
- thumb_func_end atk50_openpartyscreen
-
- thumb_func_start sub_802331C
-sub_802331C: @ 802331C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _0802334C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0802332C
- b _080234FE
-_0802332C:
- ldr r4, _08023350 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r7, _08023354 @ =gActiveBank
- strb r0, [r7]
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x1
- beq _080233A0
- cmp r0, 0x1
- bgt _08023358
- cmp r0, 0
- beq _0802335E
- b _080234F6
- .align 2, 0
-_0802334C: .4byte gBattleExecBuffer
-_08023350: .4byte gBattlescriptCurrInstr
-_08023354: .4byte gActiveBank
-_08023358:
- cmp r0, 0x2
- beq _080233BC
- b _080234F6
-_0802335E:
- movs r3, 0
- ldr r2, _08023390 @ =gNoOfAllBanks
- ldrb r0, [r2]
- cmp r3, r0
- blt _0802336A
- b _080234F6
-_0802336A:
- ldr r0, _08023394 @ =0x02000000
- ldr r1, _08023398 @ =gBattleBufferB
- movs r5, 0x80
- lsls r5, 2
- adds r4, r2, 0
- ldr r6, _0802339C @ =0x00016068
- adds r2, r0, r6
-_08023378:
- ldrb r0, [r1]
- cmp r0, 0x22
- bne _08023382
- ldrb r0, [r1, 0x1]
- strb r0, [r2]
-_08023382:
- adds r1, r5
- adds r2, 0x1
- adds r3, 0x1
- ldrb r0, [r4]
- cmp r3, r0
- blt _08023378
- b _080234F6
- .align 2, 0
-_08023390: .4byte gNoOfAllBanks
-_08023394: .4byte 0x02000000
-_08023398: .4byte gBattleBufferB
-_0802339C: .4byte 0x00016068
-_080233A0:
- ldr r0, _080233B8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080233AE
- b _080234F6
-_080233AE:
- ldrb r0, [r7]
- bl sub_8012258
- b _080234F6
- .align 2, 0
-_080233B8: .4byte gBattleTypeFlags
-_080233BC:
- ldr r1, _08023484 @ =gBattleCommunication
- ldr r4, _08023488 @ =gBattleBufferB
- ldrb r0, [r7]
- lsls r0, 9
- adds r2, r4, 0x1
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r6, _0802348C @ =0x02000000
- ldrb r0, [r7]
- ldr r3, _08023490 @ =0x00016068
- adds r1, r0, r3
- adds r1, r6
- lsls r0, 9
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _08023494 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080234A4
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- ldr r5, _08023498 @ =0x0001606c
- adds r1, r5
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r5
- adds r1, r6
- lsls r0, 9
- adds r2, r4, 0x2
- mov r12, r2
- add r0, r12
- ldrb r2, [r0]
- movs r3, 0xF0
- adds r0, r3, 0
- ands r0, r2
- ldrb r2, [r1]
- orrs r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- ldr r2, _0802349C @ =0x0001606d
- adds r1, r2
- adds r1, r6
- lsls r0, 9
- adds r4, 0x3
- mov r8, r4
- add r0, r8
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- movs r4, 0x2
- eors r0, r4
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r5
- adds r1, r6
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- eors r0, r4
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r5
- adds r1, r6
- ldrb r0, [r7]
- lsls r0, 9
- add r0, r12
- ldrb r0, [r0]
- ands r3, r0
- lsrs r3, 4
- ldrb r0, [r1]
- orrs r3, r0
- strb r3, [r1]
- ldrb r0, [r7]
- eors r4, r0
- lsls r1, r4, 1
- adds r1, r4
- ldr r3, _080234A0 @ =0x0001606e
- adds r1, r3
- adds r1, r6
- ldrb r0, [r7]
- lsls r0, 9
- add r0, r8
- ldrb r0, [r0]
- strb r0, [r1]
- b _080234AA
- .align 2, 0
-_08023484: .4byte gBattleCommunication
-_08023488: .4byte gBattleBufferB
-_0802348C: .4byte 0x02000000
-_08023490: .4byte 0x00016068
-_08023494: .4byte gBattleTypeFlags
-_08023498: .4byte 0x0001606c
-_0802349C: .4byte 0x0001606d
-_080234A0: .4byte 0x0001606e
-_080234A4:
- ldrb r0, [r7]
- bl sub_8012258
-_080234AA:
- ldr r1, _08023508 @ =gBattleTextBuff1
- movs r5, 0xFD
- strb r5, [r1]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- ldr r4, _0802350C @ =gBattleMons
- ldr r3, _08023510 @ =gBankAttacker
- ldrb r0, [r3]
- movs r2, 0x58
- muls r0, r2
- adds r0, r4
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r3]
- muls r0, r2
- adds r0, r4
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r2, _08023514 @ =gBattleTextBuff2
- strb r5, [r2]
- movs r0, 0x7
- strb r0, [r2, 0x1]
- ldr r3, _08023518 @ =gActiveBank
- ldrb r0, [r3]
- strb r0, [r2, 0x2]
- ldr r1, _0802351C @ =gBattleBufferB
- ldrb r0, [r3]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2, 0x3]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r2, 0x4]
-_080234F6:
- ldr r1, _08023520 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
-_080234FE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08023508: .4byte gBattleTextBuff1
-_0802350C: .4byte gBattleMons
-_08023510: .4byte gBankAttacker
-_08023514: .4byte gBattleTextBuff2
-_08023518: .4byte gActiveBank
-_0802351C: .4byte gBattleBufferB
-_08023520: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802331C
-
- thumb_func_start sub_8023524
-sub_8023524: @ 8023524
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r6, _08023630 @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _08023634 @ =gActiveBank
- strb r0, [r4]
- ldrb r0, [r4]
- bl sub_80157C4
- ldr r2, _08023638 @ =gHitMarker
- ldr r1, _0802363C @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- ldr r2, _08023640 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1]
- movs r0, 0x41
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r4]
- bl GetBankSide
- ldr r5, _08023644 @ =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 2
- mov r8, r0
- ands r0, r1
- cmp r0, 0
- bne _0802367C
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802367C
- ldr r1, _08023648 @ =gBattleMons
- mov r9, r1
- ldrb r2, [r4]
- movs r7, 0x58
- adds r0, r2, 0
- muls r0, r7
- adds r1, r0, r1
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0802367C
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0802367C
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- beq _0802367C
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r2, [r0]
- mov r1, r8
- orrs r1, r2
- strh r1, [r0]
- ldrb r0, [r4]
- bl GetBankSide
- ldr r2, _0802364C @ =gSideTimer
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x6]
- movs r1, 0x5
- subs r1, r0
- lsls r1, 25
- lsrs r1, 24
- ldr r5, _08023650 @ =gBattleMoveDamage
- ldrb r0, [r4]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0, 0x2C]
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _08023614
- movs r0, 0x1
- str r0, [r5]
-_08023614:
- ldr r0, _08023654 @ =0x02000000
- ldrb r1, [r4]
- ldr r2, _08023658 @ =0x00016003
- adds r0, r2
- strb r1, [r0]
- bl b_movescr_stack_push_cursor
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08023660
- ldr r0, _0802365C @ =gUnknown_081D919F
- str r0, [r6]
- b _080237B6
- .align 2, 0
-_08023630: .4byte gBattlescriptCurrInstr
-_08023634: .4byte gActiveBank
-_08023638: .4byte gHitMarker
-_0802363C: .4byte gBitTable
-_08023640: .4byte gSpecialStatuses
-_08023644: .4byte gSideAffecting
-_08023648: .4byte gBattleMons
-_0802364C: .4byte gSideTimer
-_08023650: .4byte gBattleMoveDamage
-_08023654: .4byte 0x02000000
-_08023658: .4byte 0x00016003
-_0802365C: .4byte gUnknown_081D919F
-_08023660:
- cmp r0, 0x1
- bne _08023670
- ldr r0, _0802366C @ =gUnknown_081D9171
- str r0, [r6]
- b _080237B6
- .align 2, 0
-_0802366C: .4byte gUnknown_081D9171
-_08023670:
- ldr r0, _08023678 @ =gUnknown_081D91CD
- str r0, [r6]
- b _080237B6
- .align 2, 0
-_08023678: .4byte gUnknown_081D91CD
-_0802367C:
- ldr r1, _08023754 @ =gBattleMons
- ldr r5, _08023758 @ =gActiveBank
- ldrb r2, [r5]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x36
- bne _080236A2
- ldr r1, _0802375C @ =gDisableStructs
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x18]
-_080236A2:
- ldrb r1, [r5]
- movs r0, 0
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080236B8
- b _080237B6
-_080236B8:
- ldrb r1, [r5]
- movs r0, 0
- movs r2, 0
- bl sub_801A02C
- lsls r0, 24
- cmp r0, 0
- bne _080237B6
- ldrb r0, [r5]
- bl GetBankSide
- ldr r1, _08023760 @ =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r2, [r0]
- ldr r1, _08023764 @ =0x0000fdff
- ands r1, r2
- strh r1, [r0]
- movs r4, 0
- ldr r0, _08023768 @ =gNoOfAllBanks
- ldrb r3, [r0]
- cmp r4, r3
- bge _08023706
- ldr r6, _0802376C @ =gTurnOrder
- ldr r3, _08023770 @ =gUnknown_02024A76
- movs r2, 0xC
- adds r1, r0, 0
-_080236F0:
- adds r0, r4, r6
- ldrb r0, [r0]
- ldrb r7, [r5]
- cmp r0, r7
- bne _080236FE
- adds r0, r4, r3
- strb r2, [r0]
-_080236FE:
- adds r4, 0x1
- ldrb r0, [r1]
- cmp r4, r0
- blt _080236F0
-_08023706:
- movs r4, 0
- ldr r0, _08023768 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- bge _08023736
- ldr r5, _08023754 @ =gBattleMons
-_08023712:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- ldr r1, _08023774 @ =0x020160bc
- adds r0, r1
- movs r1, 0x58
- muls r1, r4
- adds r1, r5
- ldrh r1, [r1, 0x28]
- strh r1, [r0]
- adds r4, 0x1
- ldr r0, _08023768 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08023712
-_08023736:
- ldr r0, _08023778 @ =gBattlescriptCurrInstr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r5, r0, 0
- cmp r1, 0x5
- bne _080237B0
- ldr r0, _0802377C @ =gHitMarker
- ldr r0, [r0]
- lsrs r4, r0, 28
- ldr r1, _08023780 @ =gBank1
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r2, _08023784 @ =gBitTable
- b _08023796
- .align 2, 0
-_08023754: .4byte gBattleMons
-_08023758: .4byte gActiveBank
-_0802375C: .4byte gDisableStructs
-_08023760: .4byte gSideAffecting
-_08023764: .4byte 0x0000fdff
-_08023768: .4byte gNoOfAllBanks
-_0802376C: .4byte gTurnOrder
-_08023770: .4byte gUnknown_02024A76
-_08023774: .4byte 0x020160bc
-_08023778: .4byte gBattlescriptCurrInstr
-_0802377C: .4byte gHitMarker
-_08023780: .4byte gBank1
-_08023784: .4byte gBitTable
-_08023788:
- ldr r0, _080237C4 @ =gNoOfAllBanks
- ldrb r3, [r1]
- ldrb r0, [r0]
- cmp r3, r0
- bcs _080237B0
- adds r0, r3, 0x1
- strb r0, [r1]
-_08023796:
- ldrb r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r3, [r0]
- adds r0, r4, 0
- ands r0, r3
- cmp r0, 0
- beq _08023788
- ldr r0, _080237C8 @ =gAbsentBankFlags
- ldrb r0, [r0]
- ands r0, r3
- cmp r0, 0
- bne _08023788
-_080237B0:
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_080237B6:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080237C4: .4byte gNoOfAllBanks
-_080237C8: .4byte gAbsentBankFlags
- thumb_func_end sub_8023524
-
- thumb_func_start sub_80237CC
-sub_80237CC: @ 80237CC
- push {lr}
- ldr r0, _080237DC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _080237E0
- movs r0, 0
- b _080237E2
- .align 2, 0
-_080237DC: .4byte gBattlescriptCurrInstr
-_080237E0:
- movs r0, 0x1
-_080237E2:
- bl GetBankByPlayerAI
- ldr r1, _08023804 @ =gActiveBank
- strb r0, [r1]
- movs r0, 0
- bl dp01_build_cmdbuf_x08_8_8_8
- ldr r0, _08023804 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _08023808 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08023804: .4byte gActiveBank
-_08023808: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80237CC
-
- thumb_func_start atk54_802511C
-atk54_802511C: @ 802380C
- push {r4,r5,lr}
- ldr r5, _0802383C @ =gActiveBank
- ldr r0, _08023840 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, _08023844 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl EmitEffectivenessSound
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802383C: .4byte gActiveBank
-_08023840: .4byte gBankAttacker
-_08023844: .4byte gBattlescriptCurrInstr
- thumb_func_end atk54_802511C
-
- thumb_func_start sub_8023848
-sub_8023848: @ 8023848
- push {r4,r5,lr}
- ldr r5, _08023878 @ =gActiveBank
- ldr r0, _0802387C @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, _08023880 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl sub_800D074
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08023878: .4byte gActiveBank
-_0802387C: .4byte gBankAttacker
-_08023880: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8023848
-
- thumb_func_start atk56_8025194
-atk56_8025194: @ 8023884
- push {r4,r5,lr}
- ldr r5, _080238AC @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _080238B0 @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl EmitFaintingCry
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080238AC: .4byte gBattlescriptCurrInstr
-_080238B0: .4byte gActiveBank
- thumb_func_end atk56_8025194
-
- thumb_func_start atk57_80251C4_flee
-atk57_80251C4_flee: @ 80238B4
- push {r4,lr}
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r4, _080238E0 @ =gActiveBank
- strb r0, [r4]
- ldr r0, _080238E4 @ =gBattleOutcome
- ldrb r1, [r0]
- movs r0, 0
- bl dp01_build_cmdbuf_x37_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _080238E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080238E0: .4byte gActiveBank
-_080238E4: .4byte gBattleOutcome
-_080238E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk57_80251C4_flee
-
- thumb_func_start atk58_cmd58
-atk58_cmd58: @ 80238EC
- push {r4,r5,lr}
- ldr r5, _08023918 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _0802391C @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- movs r1, 0x1
- bl dp01_build_cmdbuf_x06_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08023918: .4byte gBattlescriptCurrInstr
-_0802391C: .4byte gActiveBank
- thumb_func_end atk58_cmd58
-
- thumb_func_start atk59_8025230
-atk59_8025230: @ 8023920
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _0802399C @ =gBattlescriptCurrInstr
- ldr r2, [r0]
- ldrb r6, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r6, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r6, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r6, r0
- ldrb r4, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 24
- orrs r4, r0
- ldr r0, _080239A0 @ =0x02000000
- ldr r1, _080239A4 @ =0x00016018
- adds r7, r0, r1
- ldrb r1, [r7]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080239A8 @ =gPlayerParty
- adds r0, r1
- ldrb r1, [r2, 0x9]
- bl sub_803B7C8
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _080239AC @ =0x0000fffe
- cmp r5, r0
- bne _08023992
- mov r9, r7
- mov r8, r5
- movs r7, 0x64
-_0802397A:
- mov r3, r9
- ldrb r0, [r3]
- muls r0, r7
- ldr r1, _080239A8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0
- bl sub_803B7C8
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r8
- beq _0802397A
-_08023992:
- cmp r5, 0
- bne _080239B0
- ldr r0, _0802399C @ =gBattlescriptCurrInstr
- str r4, [r0]
- b _08023A58
- .align 2, 0
-_0802399C: .4byte gBattlescriptCurrInstr
-_080239A0: .4byte 0x02000000
-_080239A4: .4byte 0x00016018
-_080239A8: .4byte gPlayerParty
-_080239AC: .4byte 0x0000fffe
-_080239B0:
- ldr r0, _080239C0 @ =0x0000ffff
- cmp r5, r0
- bne _080239C8
- ldr r1, _080239C4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
- b _08023A58
- .align 2, 0
-_080239C0: .4byte 0x0000ffff
-_080239C4: .4byte gBattlescriptCurrInstr
-_080239C8:
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _08023A64 @ =gActiveBank
- strb r0, [r1]
- ldr r0, _08023A68 @ =gBattlePartyID
- ldrb r2, [r1]
- lsls r1, r2, 1
- adds r1, r0
- ldr r0, _08023A6C @ =0x02000000
- ldr r3, _08023A70 @ =0x00016018
- adds r0, r3
- ldrh r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bne _08023A08
- ldr r3, _08023A74 @ =gBattleMons
- movs r0, 0x58
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08023A08
- adds r0, r2, r3
- adds r1, r5, 0
- bl GiveMoveToBattleMon
-_08023A08:
- ldr r0, _08023A78 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08023A54
- movs r0, 0x2
- bl GetBankByPlayerAI
- ldr r1, _08023A64 @ =gActiveBank
- strb r0, [r1]
- ldr r0, _08023A68 @ =gBattlePartyID
- ldrb r2, [r1]
- lsls r1, r2, 1
- adds r1, r0
- ldr r0, _08023A6C @ =0x02000000
- ldr r3, _08023A70 @ =0x00016018
- adds r0, r3
- ldrh r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bne _08023A54
- ldr r3, _08023A74 @ =gBattleMons
- movs r0, 0x58
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08023A54
- adds r0, r2, r3
- adds r1, r5, 0
- bl GiveMoveToBattleMon
-_08023A54:
- ldr r0, _08023A7C @ =gBattlescriptCurrInstr
- str r6, [r0]
-_08023A58:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08023A64: .4byte gActiveBank
-_08023A68: .4byte gBattlePartyID
-_08023A6C: .4byte 0x02000000
-_08023A70: .4byte 0x00016018
-_08023A74: .4byte gBattleMons
-_08023A78: .4byte gBattleTypeFlags
-_08023A7C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk59_8025230
-
- thumb_func_start sub_8023A80
-sub_8023A80: @ 8023A80
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_802BBD4
- ldr r4, _08023AC8 @ =gUnknown_03004210
- ldr r1, _08023ACC @ =gUnknown_08400D7A
- movs r2, 0x80
- lsls r2, 1
- movs r0, 0x9
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x19
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- ldr r1, _08023AD0 @ =0x0000ffff
- ldr r3, _08023AD4 @ =0x00002d9f
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0
- movs r2, 0xC
- bl sub_814A5C0
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08023AC8: .4byte gUnknown_03004210
-_08023ACC: .4byte gUnknown_08400D7A
-_08023AD0: .4byte 0x0000ffff
-_08023AD4: .4byte 0x00002d9f
- thumb_func_end sub_8023A80
-
- thumb_func_start sub_8023AD8
-sub_8023AD8: @ 8023AD8
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_802BBD4
- bl DestroyMenuCursor
- add sp, 0x4
- pop {r0}
- bx r0
- thumb_func_end sub_8023AD8
-
- thumb_func_start sub_8023AF8
-sub_8023AF8: @ 8023AF8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r1, _08023B24 @ =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r1, _08023B28 @ =0x02000000
- ldr r2, _08023B2C @ =0x0001601a
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0x5
- bls _08023B18
- b _08023E5C
-_08023B18:
- lsls r0, 2
- ldr r1, _08023B30 @ =_08023B34
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08023B24: .4byte gActiveBank
-_08023B28: .4byte 0x02000000
-_08023B2C: .4byte 0x0001601a
-_08023B30: .4byte _08023B34
- .align 2, 0
-_08023B34:
- .4byte _08023B4C
- .4byte _08023B74
- .4byte _08023C30
- .4byte _08023C84
- .4byte _08023E38
- .4byte _08023E4C
-_08023B4C:
- bl sub_8023A80
- ldr r1, _08023B68 @ =0x02000000
- ldr r0, _08023B6C @ =0x0001601a
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _08023B70 @ =gBattleCommunication
- strb r2, [r0, 0x1]
- bl sub_802BC6C
- b _08023E5C
- .align 2, 0
-_08023B68: .4byte 0x02000000
-_08023B6C: .4byte 0x0001601a
-_08023B70: .4byte gBattleCommunication
-_08023B74:
- ldr r0, _08023BFC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08023B9A
- ldr r4, _08023C00 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08023B9A
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08023B9A:
- ldr r0, _08023BFC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08023BC0
- ldr r4, _08023C00 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08023BC0
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08023BC0:
- ldr r0, _08023BFC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08023C0C
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08023C00 @ =gBattleCommunication
- ldrb r4, [r0, 0x1]
- cmp r4, 0
- bne _08023C1C
- bl sub_8023AD8
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08023C04 @ =0x02000000
- ldr r2, _08023C08 @ =0x0001601a
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- b _08023E5A
- .align 2, 0
-_08023BFC: .4byte gMain
-_08023C00: .4byte gBattleCommunication
-_08023C04: .4byte 0x02000000
-_08023C08: .4byte 0x0001601a
-_08023C0C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08023C16
- b _08023E5C
-_08023C16:
- movs r0, 0x5
- bl PlaySE
-_08023C1C:
- ldr r0, _08023C28 @ =0x02000000
- ldr r1, _08023C2C @ =0x0001601a
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- b _08023E5C
- .align 2, 0
-_08023C28: .4byte 0x02000000
-_08023C2C: .4byte 0x0001601a
-_08023C30:
- ldr r0, _08023C68 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08023C3E
- b _08023E5C
-_08023C3E:
- ldr r0, _08023C6C @ =gPlayerParty
- ldr r2, _08023C70 @ =0x00016018
- adds r1, r5, r2
- ldrb r1, [r1]
- ldr r2, _08023C74 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08023C78 @ =ReshowBattleScreenAfterMenu
- ldr r4, _08023C7C @ =word_2024E82
- ldrh r4, [r4]
- str r4, [sp]
- bl sub_809D9F0
- ldr r0, _08023C80 @ =0x0001601a
- adds r1, r5, r0
- ldrb r0, [r1]
- adds r0, 0x1
- b _08023E5A
- .align 2, 0
-_08023C68: .4byte gPaletteFade
-_08023C6C: .4byte gPlayerParty
-_08023C70: .4byte 0x00016018
-_08023C74: .4byte gPlayerPartyCount
-_08023C78: .4byte ReshowBattleScreenAfterMenu
-_08023C7C: .4byte word_2024E82
-_08023C80: .4byte 0x0001601a
-_08023C84:
- ldr r0, _08023CB4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08023C92
- b _08023E5C
-_08023C92:
- ldr r0, _08023CB8 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _08023CBC @ =sub_800F808
- cmp r1, r0
- beq _08023C9E
- b _08023E5C
-_08023C9E:
- bl sub_809FA30
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bne _08023CC8
- ldr r0, _08023CC0 @ =0x02000000
- ldr r1, _08023CC4 @ =0x0001601a
- adds r0, r1
- strb r5, [r0]
- b _08023E5C
- .align 2, 0
-_08023CB4: .4byte gPaletteFade
-_08023CB8: .4byte gMain
-_08023CBC: .4byte sub_800F808
-_08023CC0: .4byte 0x02000000
-_08023CC4: .4byte 0x0001601a
-_08023CC8:
- ldr r2, _08023D08 @ =0x02000000
- mov r9, r2
- ldr r6, _08023D0C @ =0x00016018
- add r6, r9
- ldrb r0, [r6]
- movs r1, 0x64
- mov r8, r1
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldr r7, _08023D10 @ =gPlayerParty
- adds r0, r7
- adds r1, r5, 0
- adds r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl IsHMMove2
- cmp r0, 0
- beq _08023D20
- ldr r0, _08023D14 @ =0x0000013f
- ldr r1, _08023D18 @ =gActiveBank
- ldrb r1, [r1]
- bl PrepareStringBattle
- ldr r1, _08023D1C @ =0x0001601a
- add r1, r9
- movs r0, 0x5
- b _08023E5A
- .align 2, 0
-_08023D08: .4byte 0x02000000
-_08023D0C: .4byte 0x00016018
-_08023D10: .4byte gPlayerParty
-_08023D14: .4byte 0x0000013f
-_08023D18: .4byte gActiveBank
-_08023D1C: .4byte 0x0001601a
-_08023D20:
- ldr r3, _08023E10 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- ldr r1, _08023E14 @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- lsrs r0, r4, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- adds r1, r5, 0
- bl RemoveMonPPBonus
- ldrb r0, [r6]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- ldr r7, _08023E18 @ =word_2024E82
- ldrh r1, [r7]
- adds r2, r5, 0
- bl SetMonMoveSlot
- ldr r0, _08023E1C @ =gBattlePartyID
- ldrh r0, [r0]
- ldrb r6, [r6]
- cmp r0, r6
- bne _08023DB0
- ldr r4, _08023E20 @ =gBattleMons
- ldr r0, [r4, 0x50]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08023DB0
- ldr r0, _08023E24 @ =gDisableStructs
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, _08023E28 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08023DB0
- adds r0, r4, 0
- adds r1, r5, 0
- bl RemoveBattleMonPPBonus
- ldrh r1, [r7]
- adds r0, r4, 0
- adds r2, r5, 0
- bl SetBattleMonMoveSlot
-_08023DB0:
- ldr r0, _08023E2C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08023E5C
- ldr r0, _08023E1C @ =gBattlePartyID
- ldr r1, _08023E30 @ =0x02000000
- ldr r2, _08023E34 @ =0x00016018
- adds r1, r2
- ldrh r0, [r0, 0x4]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08023E5C
- ldr r4, _08023E20 @ =gBattleMons
- movs r1, 0x80
- lsls r1, 1
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08023E5C
- ldr r0, _08023E24 @ =gDisableStructs
- adds r0, 0x50
- ldrb r1, [r0]
- lsrs r1, 4
- ldr r2, _08023E28 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08023E5C
- adds r4, 0xB0
- adds r0, r4, 0
- adds r1, r5, 0
- bl RemoveBattleMonPPBonus
- ldr r0, _08023E18 @ =word_2024E82
- ldrh r1, [r0]
- adds r0, r4, 0
- adds r2, r5, 0
- bl SetBattleMonMoveSlot
- b _08023E5C
- .align 2, 0
-_08023E10: .4byte gBattlescriptCurrInstr
-_08023E14: .4byte gBattleTextBuff2
-_08023E18: .4byte word_2024E82
-_08023E1C: .4byte gBattlePartyID
-_08023E20: .4byte gBattleMons
-_08023E24: .4byte gDisableStructs
-_08023E28: .4byte gBitTable
-_08023E2C: .4byte gBattleTypeFlags
-_08023E30: .4byte 0x02000000
-_08023E34: .4byte 0x00016018
-_08023E38:
- bl sub_8023AD8
- ldr r1, _08023E48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08023E5C
- .align 2, 0
-_08023E48: .4byte gBattlescriptCurrInstr
-_08023E4C:
- ldr r0, _08023E6C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08023E5C
- ldr r2, _08023E70 @ =0x0001601a
- adds r1, r5, r2
- movs r0, 0x2
-_08023E5A:
- strb r0, [r1]
-_08023E5C:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08023E6C: .4byte gBattleExecBuffer
-_08023E70: .4byte 0x0001601a
- thumb_func_end sub_8023AF8
-
- thumb_func_start atk5B_80256E0
-atk5B_80256E0: @ 8023E74
- push {r4,r5,lr}
- ldr r0, _08023E88 @ =0x02000000
- ldr r1, _08023E8C @ =0x0001601a
- adds r5, r0, r1
- ldrb r4, [r5]
- cmp r4, 0
- beq _08023E90
- cmp r4, 0x1
- beq _08023EA8
- b _08023F78
- .align 2, 0
-_08023E88: .4byte 0x02000000
-_08023E8C: .4byte 0x0001601a
-_08023E90:
- bl sub_8023A80
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r0, _08023EA4 @ =gBattleCommunication
- strb r4, [r0, 0x1]
- bl sub_802BC6C
- b _08023F78
- .align 2, 0
-_08023EA4: .4byte gBattleCommunication
-_08023EA8:
- ldr r0, _08023F2C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08023ECE
- ldr r4, _08023F30 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08023ECE
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08023ECE:
- ldr r0, _08023F2C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08023EF4
- ldr r4, _08023F30 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08023EF4
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08023EF4:
- ldr r0, _08023F2C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08023F4C
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08023F30 @ =gBattleCommunication
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _08023F38
- ldr r3, _08023F34 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08023F40
- .align 2, 0
-_08023F2C: .4byte gMain
-_08023F30: .4byte gBattleCommunication
-_08023F34: .4byte gBattlescriptCurrInstr
-_08023F38:
- ldr r1, _08023F48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08023F40:
- bl sub_8023AD8
- b _08023F78
- .align 2, 0
-_08023F48: .4byte gBattlescriptCurrInstr
-_08023F4C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08023F78
- movs r0, 0x5
- bl PlaySE
- ldr r3, _08023F80 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- bl sub_8023AD8
-_08023F78:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08023F80: .4byte gBattlescriptCurrInstr
- thumb_func_end atk5B_80256E0
-
- thumb_func_start atk5C_cmd5c
-atk5C_cmd5c: @ 8023F84
- push {r4,lr}
- ldr r4, _08023FF0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r2, _08023FF4 @ =gActiveBank
- strb r0, [r2]
- ldr r0, _08023FF8 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08024008
- ldr r0, _08023FFC @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- cmp r0, 0
- beq _08023FD6
- ldr r1, _08024000 @ =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _08023FD6
- ldr r0, _08024004 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _08024008
-_08023FD6:
- movs r0, 0
- bl EmitHitAnimation
- ldr r0, _08023FF4 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _08023FF0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- b _0802400E
- .align 2, 0
-_08023FF0: .4byte gBattlescriptCurrInstr
-_08023FF4: .4byte gActiveBank
-_08023FF8: .4byte gBattleMoveFlags
-_08023FFC: .4byte gHitMarker
-_08024000: .4byte gBattleMons
-_08024004: .4byte gDisableStructs
-_08024008:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
-_0802400E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk5C_cmd5c
-
- thumb_func_start sub_8024014
-sub_8024014: @ 8024014
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- movs r5, 0
- ldr r0, _08024048 @ =gTrainerBattleOpponent
- ldrh r2, [r0]
- movs r1, 0x80
- lsls r1, 3
- cmp r2, r1
- bne _08024058
- ldr r0, _0802404C @ =0x02017000
- adds r1, r0, 0
- adds r1, 0x94
- ldrb r2, [r1]
- ldr r1, _08024050 @ =0xfffff056
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r4, r2, 0
- muls r4, r0
- ldr r0, _08024054 @ =gSaveBlock1 + 0x490
- mov r8, r0
- b _08024140
- .align 2, 0
-_08024048: .4byte gTrainerBattleOpponent
-_0802404C: .4byte 0x02017000
-_08024050: .4byte 0xfffff056
-_08024054: .4byte gSaveBlock1 + 0x490
-_08024058:
- ldr r2, _08024074 @ =gTrainers
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r3, r0, 3
- adds r4, r3, r2
- ldrb r1, [r4]
- cmp r1, 0x1
- beq _080240AE
- cmp r1, 0x1
- bgt _08024078
- cmp r1, 0
- beq _08024082
- b _080240C4
- .align 2, 0
-_08024074: .4byte gTrainers
-_08024078:
- cmp r1, 0x2
- beq _08024098
- cmp r1, 0x3
- beq _080240AE
- b _080240C4
-_08024082:
- adds r0, r2, 0
- adds r0, 0x24
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r1
- subs r0, 0x8
- b _080240C2
-_08024098:
- adds r0, r2, 0
- adds r0, 0x24
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r1
- subs r0, 0x8
- b _080240C2
-_080240AE:
- adds r0, r2, 0
- adds r0, 0x24
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- subs r0, 0x10
-_080240C2:
- ldrb r5, [r0, 0x2]
-_080240C4:
- ldr r0, _08024120 @ =gTrainerMoney
- lsls r1, r6, 2
- adds r3, r1, r0
- ldrb r1, [r3]
- mov r12, r0
- lsls r4, r5, 2
- ldr r5, _08024124 @ =0x02000000
- ldr r7, _08024128 @ =gBattleTypeFlags
- ldr r0, _0802412C @ =gSaveBlock1 + 0x490
- mov r8, r0
- cmp r1, 0xFF
- beq _080240FE
- ldr r2, _08024130 @ =gTrainers
- ldr r0, _08024134 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r2, [r0, 0x1]
- adds r1, r3, 0
-_080240EE:
- ldrb r0, [r1]
- cmp r0, r2
- beq _080240FE
- adds r1, 0x4
- adds r6, 0x1
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _080240EE
-_080240FE:
- ldr r1, _08024138 @ =0x00016056
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r3, r4, 0
- muls r3, r0
- lsls r0, r6, 2
- add r0, r12
- ldrb r2, [r0, 0x1]
- ldrh r1, [r7]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802413C
- lsls r0, r2, 1
- adds r4, r3, 0
- muls r4, r0
- b _08024140
- .align 2, 0
-_08024120: .4byte gTrainerMoney
-_08024124: .4byte 0x02000000
-_08024128: .4byte gBattleTypeFlags
-_0802412C: .4byte gSaveBlock1 + 0x490
-_08024130: .4byte gTrainers
-_08024134: .4byte gTrainerBattleOpponent
-_08024138: .4byte 0x00016056
-_0802413C:
- adds r4, r3, 0
- muls r4, r2
-_08024140:
- mov r0, r8
- adds r1, r4, 0
- bl sub_80B79B8
- ldr r1, _0802418C @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x4
- strb r0, [r1, 0x2]
- movs r0, 0x5
- strb r0, [r1, 0x3]
- strb r4, [r1, 0x4]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r4
- lsrs r0, 8
- strb r0, [r1, 0x5]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r4
- lsrs r0, 16
- strb r0, [r1, 0x6]
- lsrs r0, r4, 24
- strb r0, [r1, 0x7]
- movs r0, 0xFF
- strb r0, [r1, 0x8]
- ldr r1, _08024190 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802418C: .4byte gBattleTextBuff1
-_08024190: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8024014
-
- thumb_func_start atk5E_8025A70
-atk5E_8025A70: @ 8024194
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, _080241B8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r6, _080241BC @ =gActiveBank
- strb r0, [r6]
- ldr r5, _080241C0 @ =gBattleCommunication
- ldrb r0, [r5]
- mov r8, r4
- cmp r0, 0
- beq _080241C4
- cmp r0, 0x1
- beq _080241DC
- b _08024230
- .align 2, 0
-_080241B8: .4byte gBattlescriptCurrInstr
-_080241BC: .4byte gActiveBank
-_080241C0: .4byte gBattleCommunication
-_080241C4:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl EmitGetAttributes
- ldrb r0, [r6]
- bl MarkBufferBankForExecution
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _08024230
-_080241DC:
- ldr r0, _0802423C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08024230
- ldrb r0, [r6]
- lsls r0, 9
- ldr r1, _08024240 @ =gUnknown_02024264
- adds r0, r1
- mov r12, r0
- movs r2, 0
- adds r4, r6, 0
- movs r5, 0x58
- ldr r6, _08024244 @ =gUnknown_02024AA4
- adds r7, r6, 0
- subs r7, 0x18
- mov r3, r12
- adds r3, 0xC
-_080241FE:
- lsls r1, r2, 1
- ldrb r0, [r4]
- muls r0, r5
- adds r1, r0
- adds r1, r7
- ldrh r0, [r3]
- strh r0, [r1]
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r2, r1
- adds r1, r6
- mov r0, r12
- adds r0, 0x24
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- ble _080241FE
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08024230:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802423C: .4byte gBattleExecBuffer
-_08024240: .4byte gUnknown_02024264
-_08024244: .4byte gUnknown_02024AA4
- thumb_func_end atk5E_8025A70
-
- thumb_func_start atk5F_8025B24
-atk5F_8025B24: @ 8024248
- push {lr}
- ldr r0, _08024270 @ =gActiveBank
- ldr r2, _08024274 @ =gBankAttacker
- ldrb r3, [r2]
- strb r3, [r0]
- ldr r1, _08024278 @ =gBankTarget
- ldrb r0, [r1]
- strb r0, [r2]
- strb r3, [r1]
- ldr r2, _0802427C @ =gHitMarker
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 5
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _08024284
- ldr r0, _08024280 @ =0xffffefff
- ands r1, r0
- b _08024286
- .align 2, 0
-_08024270: .4byte gActiveBank
-_08024274: .4byte gBankAttacker
-_08024278: .4byte gBankTarget
-_0802427C: .4byte gHitMarker
-_08024280: .4byte 0xffffefff
-_08024284:
- orrs r1, r3
-_08024286:
- str r1, [r2]
- ldr r1, _08024294 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08024294: .4byte gBattlescriptCurrInstr
- thumb_func_end atk5F_8025B24
-
- thumb_func_start atk60_cmd60
-atk60_cmd60: @ 8024298
- push {lr}
- ldr r0, _080242C0 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080242B2
- ldr r0, _080242C4 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl IncrementGameStat
-_080242B2:
- ldr r1, _080242C4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080242C0: .4byte gBankAttacker
-_080242C4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk60_cmd60
-
- thumb_func_start atk61_8025BA4
-atk61_8025BA4: @ 80242C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x30
- ldr r0, _0802432C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0802437C
- ldr r0, _08024330 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08024334 @ =gActiveBank
- strb r0, [r1]
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- ldr r1, _08024338 @ =gEnemyParty
- mov r8, r1
- cmp r0, 0
- bne _080242FA
- ldr r0, _0802433C @ =gPlayerParty
- mov r8, r0
-_080242FA:
- movs r7, 0
- add r6, sp, 0x4
- mov r5, sp
-_08024300:
- movs r0, 0x64
- muls r0, r7
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08024324
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08024344
-_08024324:
- ldr r0, _08024340 @ =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _08024356
- .align 2, 0
-_0802432C: .4byte gBattleExecBuffer
-_08024330: .4byte gBattlescriptCurrInstr
-_08024334: .4byte gActiveBank
-_08024338: .4byte gEnemyParty
-_0802433C: .4byte gPlayerParty
-_08024340: .4byte 0x0000ffff
-_08024344:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_08024356:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _08024300
- movs r0, 0
- mov r1, sp
- movs r2, 0x1
- bl dp01_build_cmdbuf_x30_TODO
- ldr r0, _08024388 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _0802438C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0802437C:
- add sp, 0x30
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024388: .4byte gActiveBank
-_0802438C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk61_8025BA4
-
- thumb_func_start atk62_08025C6C
-atk62_08025C6C: @ 8024390
- push {r4,r5,lr}
- ldr r5, _080243B8 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _080243BC @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl dp01_build_cmdbuf_x31_31_31_31
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080243B8: .4byte gBattlescriptCurrInstr
-_080243BC: .4byte gActiveBank
- thumb_func_end atk62_08025C6C
-
- thumb_func_start atk63_jumptoattack
-atk63_jumptoattack: @ 80243C0
- push {r4,lr}
- ldr r0, _080243D8 @ =gBattlescriptCurrInstr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0
- beq _080243E4
- ldr r0, _080243DC @ =gCurrentMove
- ldr r1, _080243E0 @ =gUnknown_02024BEA
- ldrh r1, [r1]
- strh r1, [r0]
- b _080243F2
- .align 2, 0
-_080243D8: .4byte gBattlescriptCurrInstr
-_080243DC: .4byte gCurrentMove
-_080243E0: .4byte gUnknown_02024BEA
-_080243E4:
- ldr r2, _08024410 @ =gUnknown_02024BE8
- ldr r1, _08024414 @ =gCurrentMove
- ldr r0, _08024418 @ =gUnknown_02024BEA
- ldrh r0, [r0]
- strh r0, [r1]
- strh r0, [r2]
- adds r0, r1, 0
-_080243F2:
- ldr r3, _0802441C @ =gUnknown_081D6BBC
- ldr r2, _08024420 @ =gBattleMoves
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08024410: .4byte gUnknown_02024BE8
-_08024414: .4byte gCurrentMove
-_08024418: .4byte gUnknown_02024BEA
-_0802441C: .4byte gUnknown_081D6BBC
-_08024420: .4byte gBattleMoves
- thumb_func_end atk63_jumptoattack
-
- thumb_func_start atk64_statusanimation
-atk64_statusanimation: @ 8024424
- push {r4,lr}
- ldr r0, _08024494 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0802448C
- ldr r0, _08024498 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _0802449C @ =gActiveBank
- strb r0, [r4]
- ldr r1, _080244A0 @ =gStatuses3
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080244A4 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _08024484
- ldr r0, _080244A8 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _08024484
- ldr r0, _080244AC @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08024484
- ldr r1, _080244B0 @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0
- movs r1, 0
- bl EmitStatusAnimation
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08024484:
- ldr r1, _08024498 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0802448C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08024494: .4byte gBattleExecBuffer
-_08024498: .4byte gBattlescriptCurrInstr
-_0802449C: .4byte gActiveBank
-_080244A0: .4byte gStatuses3
-_080244A4: .4byte 0x000400c0
-_080244A8: .4byte gDisableStructs
-_080244AC: .4byte gHitMarker
-_080244B0: .4byte gBattleMons
- thumb_func_end atk64_statusanimation
-
- thumb_func_start atk65_8025D90
-atk65_8025D90: @ 80244B4
- push {r4,r5,lr}
- ldr r0, _0802453C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08024534
- ldr r4, _08024540 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _08024544 @ =gActiveBank
- strb r0, [r5]
- ldr r1, [r4]
- ldrb r3, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- orrs r3, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- orrs r3, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- orrs r3, r0
- ldr r1, _08024548 @ =gStatuses3
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _0802454C @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _0802452C
- ldr r0, _08024550 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _0802452C
- ldr r0, _08024554 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802452C
- ldr r1, _08024558 @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r2, [r0]
- ands r2, r3
- movs r0, 0
- movs r1, 0x1
- bl EmitStatusAnimation
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
-_0802452C:
- ldr r1, _08024540 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
-_08024534:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802453C: .4byte gBattleExecBuffer
-_08024540: .4byte gBattlescriptCurrInstr
-_08024544: .4byte gActiveBank
-_08024548: .4byte gStatuses3
-_0802454C: .4byte 0x000400c0
-_08024550: .4byte gDisableStructs
-_08024554: .4byte gHitMarker
-_08024558: .4byte gBattleMons
- thumb_func_end atk65_8025D90
-
- thumb_func_start atk66_8025E38
-atk66_8025E38: @ 802455C
- push {r4,r5,lr}
- ldr r0, _080245D4 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _080245CE
- ldr r4, _080245D8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _080245DC @ =gActiveBank
- strb r0, [r5]
- ldr r4, [r4]
- ldrb r2, [r4, 0x3]
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r4, 0x5]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r4, 0x6]
- lsls r0, 24
- orrs r2, r0
- ldr r1, _080245E0 @ =gStatuses3
- ldrb r3, [r5]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080245E4 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _080245C6
- ldr r0, _080245E8 @ =gDisableStructs
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _080245C6
- ldr r0, _080245EC @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080245C6
- ldrb r1, [r4, 0x2]
- movs r0, 0
- bl EmitStatusAnimation
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
-_080245C6:
- ldr r1, _080245D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x7
- str r0, [r1]
-_080245CE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080245D4: .4byte gBattleExecBuffer
-_080245D8: .4byte gBattlescriptCurrInstr
-_080245DC: .4byte gActiveBank
-_080245E0: .4byte gStatuses3
-_080245E4: .4byte 0x000400c0
-_080245E8: .4byte gDisableStructs
-_080245EC: .4byte gHitMarker
- thumb_func_end atk66_8025E38
-
- thumb_func_start atk67_8025ECC
-atk67_8025ECC: @ 80245F0
- push {r4,r5,lr}
- ldr r5, _08024600 @ =gBattleCommunication
- ldrb r4, [r5]
- cmp r4, 0
- beq _08024604
- cmp r4, 0x1
- beq _08024616
- b _08024696
- .align 2, 0
-_08024600: .4byte gBattleCommunication
-_08024604:
- bl sub_8023A80
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- strb r4, [r5, 0x1]
- bl sub_802BC6C
- b _08024696
-_08024616:
- ldr r0, _08024674 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802463A
- ldrb r0, [r5, 0x1]
- cmp r0, 0
- beq _0802463A
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r5, 0x1]
- bl sub_802BC6C
-_0802463A:
- ldr r0, _08024674 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08024660
- ldr r4, _08024678 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08024660
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08024660:
- ldr r0, _08024674 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802467C
- ldr r1, _08024678 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x1]
- b _08024684
- .align 2, 0
-_08024674: .4byte gMain
-_08024678: .4byte gBattleCommunication
-_0802467C:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08024696
-_08024684:
- movs r0, 0x5
- bl PlaySE
- bl sub_8023AD8
- ldr r1, _0802469C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08024696:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802469C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk67_8025ECC
-
- thumb_func_start sub_80246A0
-sub_80246A0: @ 80246A0
- push {r4,r5,lr}
- movs r1, 0
- ldr r2, _080246CC @ =gNoOfAllBanks
- ldr r5, _080246D0 @ =gBattlescriptCurrInstr
- ldrb r0, [r2]
- cmp r1, r0
- bge _080246BE
- ldr r4, _080246D4 @ =gUnknown_02024A76
- movs r3, 0xC
-_080246B2:
- adds r0, r1, r4
- strb r3, [r0]
- adds r1, 0x1
- ldrb r0, [r2]
- cmp r1, r0
- blt _080246B2
-_080246BE:
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080246CC: .4byte gNoOfAllBanks
-_080246D0: .4byte gBattlescriptCurrInstr
-_080246D4: .4byte gUnknown_02024A76
- thumb_func_end sub_80246A0
-
- thumb_func_start atk69_8025FE0
-atk69_8025FE0: @ 80246D8
- push {r4-r7,lr}
- ldr r7, _08024700 @ =gBattleMons
- ldr r6, _08024704 @ =gBankTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0802470C
- ldr r1, _08024708 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _08024726
- .align 2, 0
-_08024700: .4byte gBattleMons
-_08024704: .4byte gBankTarget
-_08024708: .4byte gEnigmaBerries
-_0802470C:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_08024726:
- ldr r1, _080247E8 @ =gStringBank
- ldr r5, _080247EC @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _08024764
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _08024764
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemBattle
- ldr r2, _080247F0 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_08024764:
- ldr r2, _080247F4 @ =gBattleMons
- ldr r3, _080247EC @ =gBankTarget
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, r2, 0
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r1, r0
- adds r5, r2, 0
- cmp r1, 0
- bne _08024834
- ldr r2, _080247F8 @ =gBattleMoves
- ldr r0, _080247FC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x65
- beq _080247B6
- ldr r0, _08024800 @ =gProtectStructs
- lsls r1, r4, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- blt _080247B6
- ldr r0, _080247F0 @ =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08024834
-_080247B6:
- ldrb r0, [r3]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r1, [r0, 0x28]
- ldr r2, _08024804 @ =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _08024834
- subs r0, r1, 0x1
- str r0, [r2]
- ldr r1, _08024800 @ =gProtectStructs
- ldrb r3, [r3]
- lsls r0, r3, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _0802480C
- ldr r0, _08024808 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08024834
- .align 2, 0
-_080247E8: .4byte gStringBank
-_080247EC: .4byte gBankTarget
-_080247F0: .4byte gSpecialStatuses
-_080247F4: .4byte gBattleMons
-_080247F8: .4byte gBattleMoves
-_080247FC: .4byte gCurrentMove
-_08024800: .4byte gProtectStructs
-_08024804: .4byte gBattleMoveDamage
-_08024808: .4byte gBattleMoveFlags
-_0802480C:
- ldr r0, _08024844 @ =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08024834
- ldr r2, _08024848 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0802484C @ =gLastUsedItem
- adds r0, r3, 0
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_08024834:
- ldr r1, _08024850 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024844: .4byte gSpecialStatuses
-_08024848: .4byte gBattleMoveFlags
-_0802484C: .4byte gLastUsedItem
-_08024850: .4byte gBattlescriptCurrInstr
- thumb_func_end atk69_8025FE0
-
- thumb_func_start atk6A_stash_item_for_side
-atk6A_stash_item_for_side: @ 8024854
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, _080248B0 @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _080248B4 @ =gActiveBank
- strb r0, [r5]
- ldrb r4, [r5]
- lsls r1, r4, 1
- ldr r0, _080248B8 @ =0x020160cc
- adds r1, r0
- ldr r2, _080248BC @ =gBattleMons
- movs r3, 0x58
- adds r0, r4, 0
- muls r0, r3
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldrb r0, [r5]
- muls r0, r3
- adds r2, 0x2E
- adds r0, r2
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r6]
- adds r0, 0x2
- str r0, [r6]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080248B0: .4byte gBattlescriptCurrInstr
-_080248B4: .4byte gActiveBank
-_080248B8: .4byte 0x020160cc
-_080248BC: .4byte gBattleMons
- thumb_func_end atk6A_stash_item_for_side
-
- thumb_func_start sub_80248C0
-sub_80248C0: @ 80248C0
- ldr r1, _080248EC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- ldr r2, _080248F0 @ =gBankAttacker
- ldrb r0, [r2]
- strb r0, [r1, 0x2]
- ldr r3, _080248F4 @ =gBattlePartyID
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _080248F8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_080248EC: .4byte gBattleTextBuff1
-_080248F0: .4byte gBankAttacker
-_080248F4: .4byte gBattlePartyID
-_080248F8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80248C0
-
- thumb_func_start sub_80248FC
-sub_80248FC: @ 80248FC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r1, 0
- movs r7, 0
- ldr r0, _08024928 @ =0x02000000
- mov r10, r0
- ldr r4, _0802492C @ =0x0001609c
- add r4, r10
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _0802491C
- b _08024AF4
-_0802491C:
- cmp r0, 0x1
- bgt _08024930
- cmp r0, 0
- beq _0802493E
- b _08024C38
- .align 2, 0
-_08024928: .4byte 0x02000000
-_0802492C: .4byte 0x0001609c
-_08024930:
- cmp r0, 0x2
- bne _08024936
- b _08024C04
-_08024936:
- cmp r0, 0x3
- bne _0802493C
- b _08024C30
-_0802493C:
- b _08024C38
-_0802493E:
- str r1, [sp]
- movs r0, 0xB
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x7
- bl sub_802BBD4
- ldr r0, _0802499C @ =gStringVar4
- ldr r1, _080249A0 @ =gUnknown_08400D9F
- bl StringCopy
- adds r5, r0, 0
- movs r1, 0
- mov r8, r1
-_0802495A:
- movs r2, 0
- mov r9, r2
- ldr r0, _080249A4 @ =gUnknown_0840165C
- mov r1, r8
- lsls r4, r1, 2
- adds r0, r4, r0
- ldr r1, [r0]
- adds r0, r5, 0
- bl StringAppend
- adds r5, r0, 0
- ldr r0, _080249A8 @ =0x02000000
- ldr r2, _080249AC @ =0x00016018
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080249B0 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080249B4 @ =gLevelUpStatBoxStats
- add r1, r8
- ldrb r1, [r1]
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- mov r0, r8
- cmp r0, 0x5
- bhi _08024A1A
- ldr r0, _080249B8 @ =_080249BC
- adds r0, r4, r0
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802499C: .4byte gStringVar4
-_080249A0: .4byte gUnknown_08400D9F
-_080249A4: .4byte gUnknown_0840165C
-_080249A8: .4byte 0x02000000
-_080249AC: .4byte 0x00016018
-_080249B0: .4byte gPlayerParty
-_080249B4: .4byte gLevelUpStatBoxStats
-_080249B8: .4byte _080249BC
- .align 2, 0
-_080249BC:
- .4byte _080249D4
- .4byte _080249E0
- .4byte _080249EC
- .4byte _080249F8
- .4byte _08024A04
- .4byte _08024A10
-_080249D4:
- ldr r0, _080249DC @ =0x02017180
- ldrh r0, [r0]
- b _08024A14
- .align 2, 0
-_080249DC: .4byte 0x02017180
-_080249E0:
- ldr r0, _080249E8 @ =0x02017180
- ldrh r0, [r0, 0x8]
- b _08024A14
- .align 2, 0
-_080249E8: .4byte 0x02017180
-_080249EC:
- ldr r0, _080249F4 @ =0x02017180
- ldrh r0, [r0, 0x2]
- b _08024A14
- .align 2, 0
-_080249F4: .4byte 0x02017180
-_080249F8:
- ldr r0, _08024A00 @ =0x02017180
- ldrh r0, [r0, 0xA]
- b _08024A14
- .align 2, 0
-_08024A00: .4byte 0x02017180
-_08024A04:
- ldr r0, _08024A0C @ =0x02017180
- ldrh r0, [r0, 0x4]
- b _08024A14
- .align 2, 0
-_08024A0C: .4byte 0x02017180
-_08024A10:
- ldr r0, _08024A54 @ =0x02017180
- ldrh r0, [r0, 0x6]
-_08024A14:
- subs r0, r1, r0
- lsls r0, 16
- lsrs r7, r0, 16
-_08024A1A:
- lsls r0, r7, 16
- asrs r0, 16
- cmp r0, 0
- bge _08024A2C
- negs r0, r0
- lsls r0, 16
- lsrs r7, r0, 16
- movs r1, 0x1
- add r9, r1
-_08024A2C:
- movs r0, 0xFC
- strb r0, [r5]
- movs r0, 0x13
- strb r0, [r5, 0x1]
- movs r1, 0x1
- mov r2, r8
- ands r1, r2
- lsls r0, r1, 3
- adds r0, r1
- adds r0, 0x5
- lsls r0, 3
- adds r0, 0x6
- strb r0, [r5, 0x2]
- adds r5, 0x3
- mov r0, r9
- cmp r0, 0
- beq _08024A5C
- ldr r1, _08024A58 @ =gUnknown_08400DAC
- b _08024A5E
- .align 2, 0
-_08024A54: .4byte 0x02017180
-_08024A58: .4byte gUnknown_08400DAC
-_08024A5C:
- ldr r1, _08024AA4 @ =gUnknown_08400DAA
-_08024A5E:
- adds r0, r5, 0
- bl StringCopy
- adds r5, r0, 0
- movs r6, 0xFC
- strb r6, [r5]
- movs r4, 0x14
- strb r4, [r5, 0x1]
- movs r0, 0x6
- strb r0, [r5, 0x2]
- adds r5, 0x3
- lsls r1, r7, 16
- asrs r1, 16
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- strb r6, [r5]
- strb r4, [r5, 0x1]
- movs r0, 0
- strb r0, [r5, 0x2]
- adds r5, 0x3
- movs r0, 0x1
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _08024AA8
- movs r0, 0xFE
- strb r0, [r5]
- movs r0, 0xFF
- strb r0, [r5, 0x1]
- adds r5, 0x1
- b _08024AB8
- .align 2, 0
-_08024AA4: .4byte gUnknown_08400DAA
-_08024AA8:
- strb r6, [r5]
- movs r0, 0x11
- strb r0, [r5, 0x1]
- movs r0, 0x8
- strb r0, [r5, 0x2]
- adds r5, 0x3
- movs r0, 0xFF
- strb r0, [r5]
-_08024AB8:
- movs r2, 0x1
- add r8, r2
- mov r0, r8
- cmp r0, 0x5
- bgt _08024AC4
- b _0802495A
-_08024AC4:
- ldr r4, _08024AE4 @ =gUnknown_03004210
- ldr r1, _08024AE8 @ =gStringVar4
- adds r2, 0xFF
- movs r0, 0x1
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0xC
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- ldr r1, _08024AEC @ =0x02000000
- ldr r2, _08024AF0 @ =0x0001609c
- adds r1, r2
- b _08024BEA
- .align 2, 0
-_08024AE4: .4byte gUnknown_03004210
-_08024AE8: .4byte gStringVar4
-_08024AEC: .4byte 0x02000000
-_08024AF0: .4byte 0x0001609c
-_08024AF4:
- ldr r0, _08024B94 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- bne _08024AFE
- b _08024C38
-_08024AFE:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08024B98 @ =gStringVar4
- ldr r1, _08024B9C @ =gUnknown_08400D9F
- bl StringCopy
- adds r5, r0, 0
- movs r0, 0
- mov r8, r0
- mov r9, r0
- movs r6, 0xFC
- movs r7, 0x14
- ldr r1, _08024BA0 @ =0x00016018
- add r10, r1
-_08024B1C:
- ldr r1, _08024BA4 @ =gUnknown_0840165C
- mov r2, r8
- lsls r0, r2, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r5, 0
- bl StringAppend
- adds r5, r0, 0
- mov r0, r10
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08024BA8 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08024BAC @ =gLevelUpStatBoxStats
- add r1, r8
- ldrb r1, [r1]
- bl GetMonData
- adds r1, r0, 0
- strb r6, [r5]
- movs r0, 0x13
- strb r0, [r5, 0x1]
- movs r4, 0x1
- mov r2, r8
- ands r4, r2
- lsls r0, r4, 3
- adds r0, r4
- adds r0, 0x5
- lsls r0, 3
- adds r0, 0x6
- strb r0, [r5, 0x2]
- adds r5, 0x3
- strb r6, [r5]
- strb r7, [r5, 0x1]
- movs r0, 0x6
- strb r0, [r5, 0x2]
- adds r5, 0x3
- lsls r1, 16
- asrs r1, 16
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- strb r6, [r5]
- strb r7, [r5, 0x1]
- mov r0, r9
- strb r0, [r5, 0x2]
- adds r5, 0x3
- cmp r4, 0
- beq _08024BB0
- movs r0, 0xFE
- strb r0, [r5]
- movs r0, 0xFF
- strb r0, [r5, 0x1]
- adds r5, 0x1
- b _08024BC0
- .align 2, 0
-_08024B94: .4byte gMain
-_08024B98: .4byte gStringVar4
-_08024B9C: .4byte gUnknown_08400D9F
-_08024BA0: .4byte 0x00016018
-_08024BA4: .4byte gUnknown_0840165C
-_08024BA8: .4byte gPlayerParty
-_08024BAC: .4byte gLevelUpStatBoxStats
-_08024BB0:
- strb r6, [r5]
- movs r0, 0x11
- strb r0, [r5, 0x1]
- movs r0, 0x8
- strb r0, [r5, 0x2]
- adds r5, 0x3
- movs r0, 0xFF
- strb r0, [r5]
-_08024BC0:
- movs r1, 0x1
- add r8, r1
- mov r2, r8
- cmp r2, 0x5
- ble _08024B1C
- ldr r4, _08024BF4 @ =gUnknown_03004210
- ldr r1, _08024BF8 @ =gStringVar4
- movs r2, 0x80
- lsls r2, 1
- movs r0, 0x1
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0xC
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- ldr r1, _08024BFC @ =0x02000000
- ldr r0, _08024C00 @ =0x0001609c
- adds r1, r0
-_08024BEA:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08024C38
- .align 2, 0
-_08024BF4: .4byte gUnknown_03004210
-_08024BF8: .4byte gStringVar4
-_08024BFC: .4byte 0x02000000
-_08024C00: .4byte 0x0001609c
-_08024C04:
- ldr r0, _08024C2C @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- beq _08024C38
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xB
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x7
- bl sub_802BBD4
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08024C38
- .align 2, 0
-_08024C2C: .4byte gMain
-_08024C30:
- ldr r1, _08024C48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08024C38:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024C48: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80248FC
-
- thumb_func_start sub_8024C4C
-sub_8024C4C: @ 8024C4C
- push {lr}
- bl sub_80156DC
- ldr r1, _08024C60 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08024C60: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8024C4C
-
- thumb_func_start atk6E_state0_side_becomes_attacker
-atk6E_state0_side_becomes_attacker: @ 8024C64
- push {lr}
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _08024C7C @ =gBankAttacker
- strb r0, [r1]
- ldr r1, _08024C80 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08024C7C: .4byte gBankAttacker
-_08024C80: .4byte gBattlescriptCurrInstr
- thumb_func_end atk6E_state0_side_becomes_attacker
-
- thumb_func_start atk6F_8026810
-atk6F_8026810: @ 8024C84
- push {r4,r5,lr}
- ldr r5, _08024CB0 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _08024CB4 @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- bl EmitSpriteInvisibility
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08024CB0: .4byte gBattlescriptCurrInstr
-_08024CB4: .4byte gActiveBank
- thumb_func_end atk6F_8026810
-
- thumb_func_start atk70_record_ability_usage_of_side
-atk70_record_ability_usage_of_side: @ 8024CB8
- push {r4,lr}
- ldr r4, _08024CE0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08024CE4 @ =gActiveBank
- strb r0, [r1]
- ldrb r0, [r1]
- ldr r1, _08024CE8 @ =gLastUsedAbility
- ldrb r1, [r1]
- bl RecordAbilityBattle
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08024CE0: .4byte gBattlescriptCurrInstr
-_08024CE4: .4byte gActiveBank
-_08024CE8: .4byte gLastUsedAbility
- thumb_func_end atk70_record_ability_usage_of_side
-
- thumb_func_start sub_8024CEC
-sub_8024CEC: @ 8024CEC
- ldr r2, _08024D0C @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r2]
- movs r0, 0x2
- strb r0, [r2, 0x1]
- ldr r0, _08024D10 @ =word_2024E82
- ldrh r1, [r0]
- strb r1, [r2, 0x2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r0, 8
- strb r0, [r2, 0x3]
- movs r0, 0xFF
- strb r0, [r2, 0x4]
- bx lr
- .align 2, 0
-_08024D0C: .4byte gBattleTextBuff2
-_08024D10: .4byte word_2024E82
- thumb_func_end sub_8024CEC
-
- thumb_func_start atk71_80268A0
-atk71_80268A0: @ 8024D14
- push {lr}
- bl sub_8024CEC
- ldr r1, _08024D28 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08024D28: .4byte gBattlescriptCurrInstr
- thumb_func_end atk71_80268A0
-
- thumb_func_start atk72_flee
-atk72_flee: @ 8024D2C
- push {lr}
- ldr r0, _08024D58 @ =gBank1
- ldrb r0, [r0]
- bl sub_8014AB8
- lsls r0, 24
- cmp r0, 0
- beq _08024D60
- ldr r3, _08024D5C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08024D68
- .align 2, 0
-_08024D58: .4byte gBank1
-_08024D5C: .4byte gBattlescriptCurrInstr
-_08024D60:
- ldr r1, _08024D6C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08024D68:
- pop {r0}
- bx r0
- .align 2, 0
-_08024D6C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk72_flee
-
- thumb_func_start atk73_cmd73
-atk73_cmd73: @ 8024D70
- push {r4,r5,lr}
- ldr r0, _08024DC0 @ =gBattleTypeFlags
- ldrh r0, [r0]
- movs r5, 0x1
- ands r5, r0
- cmp r5, 0
- bne _08024E12
- ldr r0, _08024DC4 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08024DC8 @ =gActiveBank
- strb r0, [r1]
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08024DCC @ =gBattleMons
- movs r1, 0x58
- muls r1, r0
- adds r1, r2
- ldrh r4, [r1, 0x28]
- movs r0, 0x64
- muls r0, r4
- ldrh r1, [r1, 0x2C]
- bl __divsi3
- cmp r0, 0
- bne _08024DAE
- movs r0, 0x1
-_08024DAE:
- cmp r0, 0x45
- bgt _08024DB6
- cmp r4, 0
- bne _08024DD8
-_08024DB6:
- ldr r0, _08024DD0 @ =0x02000000
- ldr r1, _08024DD4 @ =0x000160c1
- adds r0, r1
- strb r5, [r0]
- b _08024E12
- .align 2, 0
-_08024DC0: .4byte gBattleTypeFlags
-_08024DC4: .4byte gBattlescriptCurrInstr
-_08024DC8: .4byte gActiveBank
-_08024DCC: .4byte gBattleMons
-_08024DD0: .4byte 0x02000000
-_08024DD4: .4byte 0x000160c1
-_08024DD8:
- cmp r0, 0x27
- ble _08024DF0
- ldr r0, _08024DE8 @ =0x02000000
- ldr r1, _08024DEC @ =0x000160c1
- adds r0, r1
- movs r1, 0x1
- b _08024E10
- .align 2, 0
-_08024DE8: .4byte 0x02000000
-_08024DEC: .4byte 0x000160c1
-_08024DF0:
- cmp r0, 0x9
- ble _08024E08
- ldr r0, _08024E00 @ =0x02000000
- ldr r1, _08024E04 @ =0x000160c1
- adds r0, r1
- movs r1, 0x2
- b _08024E10
- .align 2, 0
-_08024E00: .4byte 0x02000000
-_08024E04: .4byte 0x000160c1
-_08024E08:
- ldr r0, _08024E20 @ =0x02000000
- ldr r1, _08024E24 @ =0x000160c1
- adds r0, r1
- movs r1, 0x3
-_08024E10:
- strb r1, [r0]
-_08024E12:
- ldr r1, _08024E28 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08024E20: .4byte 0x02000000
-_08024E24: .4byte 0x000160c1
-_08024E28: .4byte gBattlescriptCurrInstr
- thumb_func_end atk73_cmd73
-
- thumb_func_start atk74_hp_tresholds_2
-atk74_hp_tresholds_2: @ 8024E2C
- push {r4-r7,lr}
- ldr r0, _08024E8C @ =gBattleTypeFlags
- ldrh r0, [r0]
- movs r7, 0x1
- ands r7, r0
- cmp r7, 0
- bne _08024ED0
- ldr r0, _08024E90 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- adds r4, r0, 0
- ldr r0, _08024E94 @ =gActiveBank
- strb r4, [r0]
- movs r0, 0x1
- eors r4, r0
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _08024E98 @ =0x02000000
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- ldr r1, _08024E9C @ =0x000160bc
- adds r0, r1
- adds r0, r6
- ldrb r5, [r0]
- ldr r1, _08024EA0 @ =gBattleMons
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- ldrh r4, [r0, 0x28]
- subs r1, r5, r4
- movs r0, 0x64
- muls r0, r1
- adds r1, r5, 0
- bl __divsi3
- adds r1, r0, 0
- cmp r4, r5
- bcc _08024EA8
- ldr r1, _08024EA4 @ =0x000160c1
- adds r0, r6, r1
- strb r7, [r0]
- b _08024ED0
- .align 2, 0
-_08024E8C: .4byte gBattleTypeFlags
-_08024E90: .4byte gBattlescriptCurrInstr
-_08024E94: .4byte gActiveBank
-_08024E98: .4byte 0x02000000
-_08024E9C: .4byte 0x000160bc
-_08024EA0: .4byte gBattleMons
-_08024EA4: .4byte 0x000160c1
-_08024EA8:
- cmp r0, 0x1D
- bgt _08024EB8
- ldr r0, _08024EB4 @ =0x000160c1
- adds r1, r6, r0
- movs r0, 0x1
- b _08024ECE
- .align 2, 0
-_08024EB4: .4byte 0x000160c1
-_08024EB8:
- cmp r1, 0x45
- bgt _08024EC8
- ldr r0, _08024EC4 @ =0x000160c1
- adds r1, r6, r0
- movs r0, 0x2
- b _08024ECE
- .align 2, 0
-_08024EC4: .4byte 0x000160c1
-_08024EC8:
- ldr r0, _08024EE0 @ =0x000160c1
- adds r1, r6, r0
- movs r0, 0x3
-_08024ECE:
- strb r0, [r1]
-_08024ED0:
- ldr r1, _08024EE4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024EE0: .4byte 0x000160c1
-_08024EE4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk74_hp_tresholds_2
-
- thumb_func_start atk75_8026A58
-atk75_8026A58: @ 8024EE8
- push {lr}
- sub sp, 0x4
- ldr r2, _08024F28 @ =gBankInMenu
- ldr r1, _08024F2C @ =gBankAttacker
- ldrb r0, [r1]
- strb r0, [r2]
- ldr r2, _08024F30 @ =gBattlePartyID
- ldrb r0, [r1]
- lsls r0, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r1, _08024F34 @ =gEnemyParty
- adds r0, r1
- ldr r1, _08024F38 @ =gLastUsedItem
- ldrh r1, [r1]
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0x1
- str r3, [sp]
- movs r3, 0
- bl sub_803E1B0
- ldr r1, _08024F3C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08024F28: .4byte gBankInMenu
-_08024F2C: .4byte gBankAttacker
-_08024F30: .4byte gBattlePartyID
-_08024F34: .4byte gEnemyParty
-_08024F38: .4byte gLastUsedItem
-_08024F3C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk75_8026A58
-
- thumb_func_start sub_8024F40
-sub_8024F40: @ 8024F40
- push {r4-r6,lr}
- ldr r4, _08024F64 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08024F68 @ =gActiveBank
- strb r0, [r1]
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x6
- bls _08024F5A
- b _08025112
-_08024F5A:
- lsls r0, 2
- ldr r1, _08024F6C @ =_08024F70
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08024F64: .4byte gBattlescriptCurrInstr
-_08024F68: .4byte gActiveBank
-_08024F6C: .4byte _08024F70
- .align 2, 0
-_08024F70:
- .4byte _08024F8C
- .4byte _08024F9C
- .4byte _08024FFC
- .4byte _0802500C
- .4byte _08025024
- .4byte _08025060
- .4byte _08025098
-_08024F8C:
- ldr r0, _08024F98 @ =gActiveBank
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- b _08025112
- .align 2, 0
-_08024F98: .4byte gActiveBank
-_08024F9C:
- ldr r1, _08024FD8 @ =gBankAttacker
- ldr r4, _08024FDC @ =gBankTarget
- ldrb r0, [r4]
- strb r0, [r1]
- ldrb r0, [r1]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08024FE0 @ =gSideTimer
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r2
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _08024FE8
- ldr r1, _08024FE4 @ =gBattleMons
- ldrb r2, [r2, 0x9]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08024FE8
- strb r2, [r4]
- b _08025112
- .align 2, 0
-_08024FD8: .4byte gBankAttacker
-_08024FDC: .4byte gBankTarget
-_08024FE0: .4byte gSideTimer
-_08024FE4: .4byte gBattleMons
-_08024FE8:
- ldr r0, _08024FF4 @ =gBankTarget
- ldr r1, _08024FF8 @ =gActiveBank
- ldrb r1, [r1]
- strb r1, [r0]
- b _08025112
- .align 2, 0
-_08024FF4: .4byte gBankTarget
-_08024FF8: .4byte gActiveBank
-_08024FFC:
- bl CanRunFromBattle
- ldr r1, _08025008 @ =gBattleCommunication
- strb r0, [r1]
- b _08025112
- .align 2, 0
-_08025008: .4byte gBattleCommunication
-_0802500C:
- ldr r0, _0802501C @ =gCurrentMove
- ldrh r0, [r0]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08025020 @ =gBankTarget
- strb r0, [r1]
- b _08025112
- .align 2, 0
-_0802501C: .4byte gCurrentMove
-_08025020: .4byte gBankTarget
-_08025024:
- ldr r2, _08025044 @ =gHitMarker
- ldr r1, _08025048 @ =gBitTable
- ldr r0, _0802504C @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r0, 28
- ldr r2, [r2]
- ands r2, r0
- cmp r2, 0
- beq _08025054
- ldr r1, _08025050 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1]
- b _08025112
- .align 2, 0
-_08025044: .4byte gHitMarker
-_08025048: .4byte gBitTable
-_0802504C: .4byte gActiveBank
-_08025050: .4byte gBattleCommunication
-_08025054:
- ldr r0, _0802505C @ =gBattleCommunication
- strb r2, [r0]
- b _08025112
- .align 2, 0
-_0802505C: .4byte gBattleCommunication
-_08025060:
- ldr r4, _08025090 @ =gSpecialStatuses
- ldr r3, _08025094 @ =gActiveBank
- ldrb r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x9
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- b _08025112
- .align 2, 0
-_08025090: .4byte gSpecialStatuses
-_08025094: .4byte gActiveBank
-_08025098:
- ldr r3, _080250B8 @ =gBattlePartyID
- ldr r0, _080250BC @ =0x02000000
- ldr r1, _080250C0 @ =0x00016018
- adds r0, r1
- ldrh r2, [r3]
- ldrb r1, [r0]
- cmp r2, r1
- beq _080250B2
- ldrh r0, [r3, 0x4]
- cmp r0, r1
- bne _08025112
- cmp r2, r0
- bne _080250C8
-_080250B2:
- ldr r1, _080250C4 @ =gActiveBank
- movs r0, 0
- b _080250CC
- .align 2, 0
-_080250B8: .4byte gBattlePartyID
-_080250BC: .4byte 0x02000000
-_080250C0: .4byte 0x00016018
-_080250C4: .4byte gActiveBank
-_080250C8:
- ldr r1, _08025120 @ =gActiveBank
- movs r0, 0x2
-_080250CC:
- strb r0, [r1]
- adds r5, r1, 0
- ldrb r2, [r5]
- lsls r1, r2, 1
- ldr r0, _08025124 @ =0x020160e8
- adds r4, r1, r0
- movs r3, 0
- ldr r1, _08025128 @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0xC
- adds r0, r1
- ldrh r0, [r0]
- ldrh r2, [r4]
- cmp r0, r2
- beq _0802510A
- adds r6, r5, 0
- movs r5, 0x58
- adds r2, r1, 0
-_080250F2:
- adds r3, 0x1
- cmp r3, 0x3
- bgt _0802510A
- lsls r1, r3, 1
- ldrb r0, [r6]
- muls r0, r5
- adds r1, r0
- adds r1, r2
- ldrh r0, [r1]
- ldrh r1, [r4]
- cmp r0, r1
- bne _080250F2
-_0802510A:
- cmp r3, 0x4
- bne _08025112
- movs r0, 0
- strh r0, [r4]
-_08025112:
- ldr r1, _0802512C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08025120: .4byte gActiveBank
-_08025124: .4byte 0x020160e8
-_08025128: .4byte gBattleMons
-_0802512C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8024F40
-
- thumb_func_start atk77_setprotect
-atk77_setprotect: @ 8025130
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0x1
- ldr r2, _080251FC @ =gUnknown_02024C4C
- ldr r1, _08025200 @ =gBankAttacker
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r0, r2
- ldrh r0, [r0]
- mov r8, r1
- ldr r7, _08025204 @ =gDisableStructs
- cmp r0, 0xB6
- beq _08025160
- cmp r0, 0xC5
- beq _08025160
- cmp r0, 0xCB
- beq _08025160
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r7
- movs r1, 0
- strb r1, [r0, 0x8]
-_08025160:
- ldr r0, _08025208 @ =gCurrentMoveTurn
- ldrb r1, [r0]
- ldr r0, _0802520C @ =gNoOfAllBanks
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _08025170
- movs r6, 0
-_08025170:
- ldr r2, _08025210 @ =gProtectSuccessRates
- mov r5, r8
- ldrb r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r4, [r0, 0x8]
- lsls r4, 1
- adds r4, r2
- bl Random
- ldrh r1, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- bls _08025224
- cmp r6, 0
- beq _08025224
- ldr r4, _08025214 @ =gBattleMoves
- ldr r3, _08025218 @ =gCurrentMove
- ldrh r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- cmp r0, 0x6F
- bne _080251C0
- ldr r0, _0802521C @ =gProtectStructs
- ldrb r1, [r5]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _08025220 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
-_080251C0:
- ldrh r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- cmp r0, 0x74
- bne _080251E6
- ldr r0, _0802521C @ =gProtectStructs
- ldrb r1, [r5]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _08025220 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
-_080251E6:
- mov r1, r8
- ldrb r0, [r1]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r0, [r1, 0x8]
- adds r0, 0x1
- strb r0, [r1, 0x8]
- b _08025246
- .align 2, 0
-_080251FC: .4byte gUnknown_02024C4C
-_08025200: .4byte gBankAttacker
-_08025204: .4byte gDisableStructs
-_08025208: .4byte gCurrentMoveTurn
-_0802520C: .4byte gNoOfAllBanks
-_08025210: .4byte gProtectSuccessRates
-_08025214: .4byte gBattleMoves
-_08025218: .4byte gCurrentMove
-_0802521C: .4byte gProtectStructs
-_08025220: .4byte gBattleCommunication
-_08025224:
- ldr r2, _08025258 @ =gDisableStructs
- ldr r0, _0802525C @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strb r1, [r0, 0x8]
- ldr r1, _08025260 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- ldr r2, _08025264 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_08025246:
- ldr r1, _08025268 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025258: .4byte gDisableStructs
-_0802525C: .4byte gBankAttacker
-_08025260: .4byte gBattleCommunication
-_08025264: .4byte gBattleMoveFlags
-_08025268: .4byte gBattlescriptCurrInstr
- thumb_func_end atk77_setprotect
-
- thumb_func_start atk78_faintifabilitynotdamp
-atk78_faintifabilitynotdamp: @ 802526C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _08025328 @ =gBattleExecBuffer
- ldr r2, [r0]
- cmp r2, 0
- bne _08025370
- ldr r1, _0802532C @ =gBankTarget
- strb r2, [r1]
- ldr r0, _08025330 @ =gNoOfAllBanks
- ldrb r3, [r0]
- adds r5, r1, 0
- mov r8, r0
- ldr r6, _08025334 @ =gBattleMons
- cmp r2, r3
- bcs _080252B8
- adds r0, r6, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _080252B8
- adds r2, r3, 0
- adds r4, r6, 0
- movs r3, 0x58
-_0802529C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r2
- bcs _080252B8
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _0802529C
-_080252B8:
- ldrb r0, [r5]
- mov r1, r8
- ldrb r1, [r1]
- cmp r0, r1
- bne _08025354
- ldr r4, _08025338 @ =gActiveBank
- ldr r7, _0802533C @ =gBankAttacker
- ldrb r0, [r7]
- strb r0, [r4]
- ldr r2, _08025340 @ =gBattleMoveDamage
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r6
- ldrh r0, [r0, 0x28]
- str r0, [r2]
- ldr r1, _08025344 @ =0x00007fff
- movs r0, 0
- bl EmitHealthBarUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _08025348 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- movs r0, 0
- strb r0, [r5]
- mov r2, r8
- ldrb r0, [r2]
- cmp r0, 0
- beq _08025370
- adds r3, r5, 0
- ldrb r5, [r7]
- ldr r7, _0802534C @ =gBitTable
- adds r4, r0, 0
- ldr r6, _08025350 @ =gAbsentBankFlags
-_08025304:
- ldrb r2, [r3]
- cmp r2, r5
- beq _0802531A
- ldrb r0, [r6]
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r7
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- beq _08025370
-_0802531A:
- adds r0, r2, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r4
- bcc _08025304
- b _08025370
- .align 2, 0
-_08025328: .4byte gBattleExecBuffer
-_0802532C: .4byte gBankTarget
-_08025330: .4byte gNoOfAllBanks
-_08025334: .4byte gBattleMons
-_08025338: .4byte gActiveBank
-_0802533C: .4byte gBankAttacker
-_08025340: .4byte gBattleMoveDamage
-_08025344: .4byte 0x00007fff
-_08025348: .4byte gBattlescriptCurrInstr
-_0802534C: .4byte gBitTable
-_08025350: .4byte gAbsentBankFlags
-_08025354:
- ldr r1, _0802537C @ =gLastUsedAbility
- movs r0, 0x6
- strb r0, [r1]
- ldrb r0, [r5]
- movs r1, 0x58
- muls r1, r0
- adds r1, r6
- adds r1, 0x20
- ldrb r1, [r1]
- bl RecordAbilityBattle
- ldr r1, _08025380 @ =gBattlescriptCurrInstr
- ldr r0, _08025384 @ =gUnknown_081D9834
- str r0, [r1]
-_08025370:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802537C: .4byte gLastUsedAbility
-_08025380: .4byte gBattlescriptCurrInstr
-_08025384: .4byte gUnknown_081D9834
- thumb_func_end atk78_faintifabilitynotdamp
-
- thumb_func_start atk79_setuserhptozero
-atk79_setuserhptozero: @ 8025388
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080253D4 @ =gBattleExecBuffer
- ldr r3, [r0]
- cmp r3, 0
- bne _080253CC
- ldr r4, _080253D8 @ =gActiveBank
- ldr r0, _080253DC @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, _080253E0 @ =gBattleMons
- ldrb r0, [r4]
- movs r2, 0x58
- muls r0, r2
- adds r0, r1
- strh r3, [r0, 0x28]
- ldrb r0, [r4]
- muls r0, r2
- adds r1, 0x28
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2A
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _080253E4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_080253CC:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080253D4: .4byte gBattleExecBuffer
-_080253D8: .4byte gActiveBank
-_080253DC: .4byte gBankAttacker
-_080253E0: .4byte gBattleMons
-_080253E4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk79_setuserhptozero
-
- thumb_func_start sub_80253E8
-sub_80253E8: @ 80253E8
- push {r4-r7,lr}
- ldr r3, _08025460 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r4, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r4, r0
- ldr r0, _08025464 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- adds r7, r3, 0
- cmp r0, 0
- beq _08025480
- ldr r0, _08025468 @ =gBankTarget
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- ldr r2, _0802546C @ =gBankAttacker
- lsls r1, 24
- lsrs r1, 24
- adds r3, r0, 0
- ldr r6, _08025470 @ =gAbsentBankFlags
- ldr r5, _08025474 @ =gBitTable
- ldr r0, _08025478 @ =gNoOfAllBanks
- mov r12, r0
- ldrb r0, [r2]
- cmp r1, r0
- bne _0802543E
-_0802542E:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r2]
- cmp r0, r1
- beq _0802542E
-_0802543E:
- ldrb r0, [r6]
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r5
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- bne _0802542E
- ldrb r0, [r3]
- mov r2, r12
- ldrb r2, [r2]
- cmp r0, r2
- bcc _0802547C
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- b _08025484
- .align 2, 0
-_08025460: .4byte gBattlescriptCurrInstr
-_08025464: .4byte gBattleTypeFlags
-_08025468: .4byte gBankTarget
-_0802546C: .4byte gBankAttacker
-_08025470: .4byte gAbsentBankFlags
-_08025474: .4byte gBitTable
-_08025478: .4byte gNoOfAllBanks
-_0802547C:
- str r4, [r7]
- b _08025484
-_08025480:
- adds r0, r2, 0x5
- str r0, [r3]
-_08025484:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80253E8
-
- thumb_func_start sub_802548C
-sub_802548C: @ 802548C
- push {r4-r6,lr}
- ldr r4, _080254E8 @ =gBattlescriptCurrInstr
- ldr r1, [r4]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r2, r0
- ldrb r0, [r1, 0x5]
- ldr r3, _080254EC @ =gBankTarget
- cmp r0, 0x1
- bne _080254B4
- ldr r0, _080254F0 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r3]
-_080254B4:
- ldr r1, _080254F4 @ =gBattleMoveDamage
- ldr r6, _080254F8 @ =gBattleMons
- ldrb r0, [r3]
- movs r5, 0x58
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _080254CE
- movs r0, 0x1
- str r0, [r1]
-_080254CE:
- ldr r0, [r1]
- negs r0, r0
- str r0, [r1]
- ldrb r0, [r3]
- muls r0, r5
- adds r0, r6
- ldrh r1, [r0, 0x28]
- ldrh r0, [r0, 0x2C]
- cmp r1, r0
- bne _080254FC
- str r2, [r4]
- b _08025502
- .align 2, 0
-_080254E8: .4byte gBattlescriptCurrInstr
-_080254EC: .4byte gBankTarget
-_080254F0: .4byte gBankAttacker
-_080254F4: .4byte gBattleMoveDamage
-_080254F8: .4byte gBattleMons
-_080254FC:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_08025502:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_802548C
-
- thumb_func_start sub_8025508
-sub_8025508: @ 8025508
- push {r4-r7,lr}
- ldr r3, _0802556C @ =0x02000000
- ldr r4, _08025570 @ =gBankAttacker
- ldrb r2, [r4]
- lsls r1, r2, 1
- ldr r5, _08025574 @ =0x000160ac
- adds r0, r1, r5
- adds r0, r3
- ldrb r7, [r0]
- ldr r0, _08025578 @ =0x000160ad
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- lsls r0, 8
- orrs r7, r0
- lsls r2, 2
- ldr r1, _0802557C @ =0x00016100
- adds r0, r2, r1
- adds r0, r3
- ldrb r6, [r0]
- adds r5, 0x55
- adds r0, r2, r5
- adds r0, r3
- ldrb r0, [r0]
- lsls r0, 8
- orrs r6, r0
- adds r1, 0x2
- adds r0, r2, r1
- adds r0, r3
- ldrb r5, [r0]
- ldr r0, _08025580 @ =0x00016103
- adds r2, r0
- adds r2, r3
- ldrb r0, [r2]
- lsls r0, 8
- orrs r5, r0
- cmp r7, 0
- beq _08025594
- ldr r0, _08025584 @ =0x0000ffff
- cmp r7, r0
- beq _08025594
- ldr r2, _08025588 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802558C @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _08025590 @ =gCurrentMove
- strh r7, [r4]
- b _0802565C
- .align 2, 0
-_0802556C: .4byte 0x02000000
-_08025570: .4byte gBankAttacker
-_08025574: .4byte 0x000160ac
-_08025578: .4byte 0x000160ad
-_0802557C: .4byte 0x00016100
-_08025580: .4byte 0x00016103
-_08025584: .4byte 0x0000ffff
-_08025588: .4byte gHitMarker
-_0802558C: .4byte 0xfffffbff
-_08025590: .4byte gCurrentMove
-_08025594:
- cmp r6, 0
- beq _08025644
- cmp r5, 0
- beq _08025618
- ldr r0, _080255C4 @ =0x0000ffff
- cmp r6, r0
- beq _08025618
- cmp r5, r0
- beq _08025618
- ldr r2, _080255C8 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _080255CC @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080255D4
- ldr r0, _080255D0 @ =gCurrentMove
- strh r6, [r0]
- b _080255D8
- .align 2, 0
-_080255C4: .4byte 0x0000ffff
-_080255C8: .4byte gHitMarker
-_080255CC: .4byte 0xfffffbff
-_080255D0: .4byte gCurrentMove
-_080255D4:
- ldr r0, _08025604 @ =gCurrentMove
- strh r5, [r0]
-_080255D8:
- adds r5, r0, 0
- ldrh r0, [r5]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08025608 @ =gBankTarget
- strb r0, [r1]
- ldr r4, _0802560C @ =gBattlescriptCurrInstr
- ldr r3, _08025610 @ =gUnknown_081D6BBC
- ldr r2, _08025614 @ =gBattleMoves
- ldrh r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- str r0, [r4]
- b _080256C0
- .align 2, 0
-_08025604: .4byte gCurrentMove
-_08025608: .4byte gBankTarget
-_0802560C: .4byte gBattlescriptCurrInstr
-_08025610: .4byte gUnknown_081D6BBC
-_08025614: .4byte gBattleMoves
-_08025618:
- cmp r6, 0
- beq _08025644
- ldr r0, _08025634 @ =0x0000ffff
- cmp r6, r0
- beq _08025644
- ldr r2, _08025638 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802563C @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _08025640 @ =gCurrentMove
- strh r6, [r4]
- b _0802565C
- .align 2, 0
-_08025634: .4byte 0x0000ffff
-_08025638: .4byte gHitMarker
-_0802563C: .4byte 0xfffffbff
-_08025640: .4byte gCurrentMove
-_08025644:
- cmp r5, 0
- beq _080256A4
- ldr r0, _08025684 @ =0x0000ffff
- cmp r5, r0
- beq _080256A4
- ldr r2, _08025688 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802568C @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _08025690 @ =gCurrentMove
- strh r5, [r4]
-_0802565C:
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08025694 @ =gBankTarget
- strb r0, [r1]
- ldr r5, _08025698 @ =gBattlescriptCurrInstr
- ldr r3, _0802569C @ =gUnknown_081D6BBC
- ldr r2, _080256A0 @ =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- str r0, [r5]
- b _080256C0
- .align 2, 0
-_08025684: .4byte 0x0000ffff
-_08025688: .4byte gHitMarker
-_0802568C: .4byte 0xfffffbff
-_08025690: .4byte gCurrentMove
-_08025694: .4byte gBankTarget
-_08025698: .4byte gBattlescriptCurrInstr
-_0802569C: .4byte gUnknown_081D6BBC
-_080256A0: .4byte gBattleMoves
-_080256A4:
- ldr r2, _080256C8 @ =gSpecialStatuses
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r1, _080256CC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_080256C0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080256C8: .4byte gSpecialStatuses
-_080256CC: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8025508
-
- thumb_func_start sub_80256D0
-sub_80256D0: @ 80256D0
- push {lr}
- ldr r2, _080256F0 @ =gBattleWeather
- ldrh r0, [r2]
- movs r1, 0x7
- ands r1, r0
- cmp r1, 0
- beq _080256FC
- ldr r2, _080256F4 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080256F8 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _0802570C
- .align 2, 0
-_080256F0: .4byte gBattleWeather
-_080256F4: .4byte gBattleMoveFlags
-_080256F8: .4byte gBattleCommunication
-_080256FC:
- movs r0, 0x1
- strh r0, [r2]
- ldr r0, _08025718 @ =gBattleCommunication
- strb r1, [r0, 0x5]
- ldr r0, _0802571C @ =gWishFutureKnock
- adds r0, 0x28
- movs r1, 0x5
- strb r1, [r0]
-_0802570C:
- ldr r1, _08025720 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08025718: .4byte gBattleCommunication
-_0802571C: .4byte gWishFutureKnock
-_08025720: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80256D0
-
- thumb_func_start atk7E_setreflect
-atk7E_setreflect: @ 8025724
- push {r4-r6,lr}
- ldr r5, _08025754 @ =gBankAttacker
- ldrb r0, [r5]
- bl GetBankIdentity
- ldr r6, _08025758 @ =gSideAffecting
- movs r4, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08025764
- ldr r2, _0802575C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08025760 @ =gBattleCommunication
- movs r0, 0
- b _080257C4
- .align 2, 0
-_08025754: .4byte gBankAttacker
-_08025758: .4byte gSideAffecting
-_0802575C: .4byte gBattleMoveFlags
-_08025760: .4byte gBattleCommunication
-_08025764:
- ldrb r0, [r5]
- bl GetBankIdentity
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r5]
- bl GetBankIdentity
- ldr r2, _080257B4 @ =gSideTimer
- adds r1, r4, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x5
- strb r1, [r0]
- ldr r0, _080257B8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _080257C0
- movs r0, 0x1
- bl CountAliveMons
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _080257C0
- ldr r0, _080257BC @ =gBattleCommunication
- strb r1, [r0, 0x5]
- b _080257C6
- .align 2, 0
-_080257B4: .4byte gSideTimer
-_080257B8: .4byte gBattleTypeFlags
-_080257BC: .4byte gBattleCommunication
-_080257C0:
- ldr r1, _080257D4 @ =gBattleCommunication
- movs r0, 0x1
-_080257C4:
- strb r0, [r1, 0x5]
-_080257C6:
- ldr r1, _080257D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080257D4: .4byte gBattleCommunication
-_080257D8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk7E_setreflect
-
- thumb_func_start sub_80257DC
-sub_80257DC: @ 80257DC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r7, _0802581C @ =gBattleMoveFlags
- ldrb r5, [r7]
- movs r0, 0x29
- ands r0, r5
- cmp r0, 0
- bne _0802580E
- ldr r0, _08025820 @ =gStatuses3
- mov r9, r0
- ldr r1, _08025824 @ =gBankTarget
- mov r8, r1
- ldrb r4, [r1]
- lsls r0, r4, 2
- mov r2, r9
- adds r6, r0, r2
- ldr r2, [r6]
- movs r0, 0x4
- mov r12, r0
- adds r3, r2, 0
- ands r3, r0
- cmp r3, 0
- beq _0802582C
-_0802580E:
- movs r0, 0x1
- orrs r0, r5
- strb r0, [r7]
- ldr r1, _08025828 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _0802587C
- .align 2, 0
-_0802581C: .4byte gBattleMoveFlags
-_08025820: .4byte gStatuses3
-_08025824: .4byte gBankTarget
-_08025828: .4byte gBattleCommunication
-_0802582C:
- ldr r1, _08025858 @ =gBattleMons
- movs r0, 0x58
- muls r0, r4
- adds r1, r0, r1
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xC
- beq _08025848
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xC
- bne _08025860
-_08025848:
- movs r0, 0x1
- orrs r0, r5
- strb r0, [r7]
- ldr r1, _0802585C @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _0802587C
- .align 2, 0
-_08025858: .4byte gBattleMons
-_0802585C: .4byte gBattleCommunication
-_08025860:
- ldr r0, _08025890 @ =gBankAttacker
- ldrb r0, [r0]
- orrs r2, r0
- str r2, [r6]
- mov r2, r8
- ldrb r1, [r2]
- lsls r1, 2
- add r1, r9
- ldr r0, [r1]
- mov r2, r12
- orrs r0, r2
- str r0, [r1]
- ldr r0, _08025894 @ =gBattleCommunication
- strb r3, [r0, 0x5]
-_0802587C:
- ldr r1, _08025898 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025890: .4byte gBankAttacker
-_08025894: .4byte gBattleCommunication
-_08025898: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80257DC
-
- thumb_func_start atk80_manipulatedamage
-atk80_manipulatedamage: @ 802589C
- push {r4,lr}
- ldr r1, _080258B4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- ldrb r2, [r0, 0x1]
- adds r4, r1, 0
- cmp r2, 0x1
- beq _080258CC
- cmp r2, 0x1
- bgt _080258B8
- cmp r2, 0
- beq _080258BE
- b _0802590C
- .align 2, 0
-_080258B4: .4byte gBattlescriptCurrInstr
-_080258B8:
- cmp r2, 0x2
- beq _08025904
- b _0802590C
-_080258BE:
- ldr r1, _080258C8 @ =gBattleMoveDamage
- ldr r0, [r1]
- negs r0, r0
- b _0802590A
- .align 2, 0
-_080258C8: .4byte gBattleMoveDamage
-_080258CC:
- ldr r3, _080258F8 @ =gBattleMoveDamage
- ldr r0, [r3]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- str r0, [r3]
- cmp r0, 0
- bne _080258DE
- str r2, [r3]
-_080258DE:
- ldr r2, _080258FC @ =gBattleMons
- ldr r0, _08025900 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2C]
- lsrs r1, r0, 1
- ldr r0, [r3]
- cmp r1, r0
- bge _0802590C
- str r1, [r3]
- b _0802590C
- .align 2, 0
-_080258F8: .4byte gBattleMoveDamage
-_080258FC: .4byte gBattleMons
-_08025900: .4byte gBankTarget
-_08025904:
- ldr r1, _08025918 @ =gBattleMoveDamage
- ldr r0, [r1]
- lsls r0, 1
-_0802590A:
- str r0, [r1]
-_0802590C:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08025918: .4byte gBattleMoveDamage
- thumb_func_end atk80_manipulatedamage
-
- thumb_func_start atk81_setrest
-atk81_setrest: @ 802591C
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r0, _08025974 @ =gBattlescriptCurrInstr
- mov r12, r0
- ldr r1, [r0]
- ldrb r6, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r6, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r6, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r6, r0
- ldr r5, _08025978 @ =gActiveBank
- ldr r2, _0802597C @ =gBankTarget
- ldr r0, _08025980 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r2]
- strb r0, [r5]
- ldr r4, _08025984 @ =gBattleMoveDamage
- ldr r1, _08025988 @ =gBattleMons
- ldrb r0, [r2]
- movs r3, 0x58
- muls r0, r3
- adds r0, r1
- ldrh r0, [r0, 0x2C]
- negs r0, r0
- str r0, [r4]
- ldrb r0, [r2]
- adds r4, r0, 0
- muls r4, r3
- adds r0, r4, r1
- ldrh r3, [r0, 0x28]
- adds r7, r5, 0
- adds r5, r2, 0
- adds r2, r1, 0
- ldrh r0, [r0, 0x2C]
- cmp r3, r0
- bne _0802598C
- mov r0, r12
- str r6, [r0]
- b _080259DC
- .align 2, 0
-_08025974: .4byte gBattlescriptCurrInstr
-_08025978: .4byte gActiveBank
-_0802597C: .4byte gBankTarget
-_08025980: .4byte gBankAttacker
-_08025984: .4byte gBattleMoveDamage
-_08025988: .4byte gBattleMons
-_0802598C:
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r4, r0
- ldr r1, [r0]
- movs r0, 0xF8
- ands r1, r0
- cmp r1, 0
- beq _080259A8
- ldr r1, _080259A4 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _080259AC
- .align 2, 0
-_080259A4: .4byte gBattleCommunication
-_080259A8:
- ldr r0, _080259E4 @ =gBattleCommunication
- strb r1, [r0, 0x5]
-_080259AC:
- ldrb r0, [r5]
- movs r3, 0x58
- muls r0, r3
- adds r2, 0x4C
- adds r0, r2
- movs r1, 0x3
- str r1, [r0]
- ldrb r0, [r7]
- muls r0, r3
- adds r0, r2
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r1, _080259E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080259DC:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080259E4: .4byte gBattleCommunication
-_080259E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk81_setrest
-
- thumb_func_start atk82_jumpifnotfirstturn
-atk82_jumpifnotfirstturn: @ 80259EC
- push {r4,r5,lr}
- ldr r5, _08025A20 @ =gBattlescriptCurrInstr
- ldr r4, [r5]
- ldrb r3, [r4, 0x1]
- ldrb r0, [r4, 0x2]
- lsls r0, 8
- orrs r3, r0
- ldrb r0, [r4, 0x3]
- lsls r0, 16
- orrs r3, r0
- ldrb r0, [r4, 0x4]
- lsls r0, 24
- orrs r3, r0
- ldr r2, _08025A24 @ =gDisableStructs
- ldr r0, _08025A28 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x16]
- cmp r0, 0
- beq _08025A2C
- adds r0, r4, 0x5
- str r0, [r5]
- b _08025A2E
- .align 2, 0
-_08025A20: .4byte gBattlescriptCurrInstr
-_08025A24: .4byte gDisableStructs
-_08025A28: .4byte gBankAttacker
-_08025A2C:
- str r3, [r5]
-_08025A2E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end atk82_jumpifnotfirstturn
-
- thumb_func_start sub_8025A34
-sub_8025A34: @ 8025A34
- ldr r1, _08025A40 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08025A40: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8025A34
-
- thumb_func_start sub_8025A44
-sub_8025A44: @ 8025A44
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r2, 0
- ldr r0, _08025A9C @ =gNoOfAllBanks
- ldrb r1, [r0]
- mov r8, r0
- cmp r2, r1
- bge _08025AB8
- ldr r0, _08025AA0 @ =gBattleMons
- mov r12, r0
- movs r0, 0x58
- muls r0, r3
- add r0, r12
- adds r5, r0, 0
- adds r5, 0x20
- ldr r6, _08025AA4 @ =0x02016003
- movs r3, 0
- ldr r7, _08025AA8 @ =gBattleCommunication
- adds r4, r1, 0
-_08025A70:
- mov r0, r12
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x70
- ands r0, r1
- cmp r0, 0
- beq _08025AB0
- ldrb r0, [r5]
- cmp r0, 0x2B
- beq _08025AB0
- movs r3, 0
- strb r2, [r6]
- ldr r1, _08025AAC @ =gBankTarget
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08025AD0
- cmp r0, r2
- beq _08025AC4
- movs r0, 0x1
- strb r0, [r7, 0x5]
- b _08025AB8
- .align 2, 0
-_08025A9C: .4byte gNoOfAllBanks
-_08025AA0: .4byte gBattleMons
-_08025AA4: .4byte 0x02016003
-_08025AA8: .4byte gBattleCommunication
-_08025AAC: .4byte gBankTarget
-_08025AB0:
- adds r3, 0x58
- adds r2, 0x1
- cmp r2, r4
- blt _08025A70
-_08025AB8:
- mov r1, r8
- ldrb r1, [r1]
- cmp r2, r1
- beq _08025AD4
- movs r0, 0x1
- b _08025AD6
-_08025AC4:
- ldr r0, _08025ACC @ =gBattleCommunication
- strb r3, [r0, 0x5]
- b _08025AB8
- .align 2, 0
-_08025ACC: .4byte gBattleCommunication
-_08025AD0:
- strb r2, [r1]
- b _08025AB8
-_08025AD4:
- movs r0, 0
-_08025AD6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8025A44
-
- thumb_func_start sub_8025AE0
-sub_8025AE0: @ 8025AE0
- push {r4-r6,lr}
- ldr r5, _08025B0C @ =gBattlescriptCurrInstr
- ldr r1, [r5]
- ldrb r4, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r4, r0
- ldr r6, _08025B10 @ =gBankTarget
- ldrb r0, [r6]
- bl sub_8025A44
- lsls r0, 24
- cmp r0, 0
- beq _08025B14
- str r4, [r5]
- b _08025B56
- .align 2, 0
-_08025B0C: .4byte gBattlescriptCurrInstr
-_08025B10: .4byte gBankTarget
-_08025B14:
- ldr r1, _08025B44 @ =gBattleMons
- ldrb r3, [r6]
- movs r0, 0x58
- muls r0, r3
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- adds r1, r0, 0
- cmp r1, 0xF
- beq _08025B2C
- cmp r1, 0x48
- bne _08025B50
-_08025B2C:
- ldr r2, _08025B48 @ =gLastUsedAbility
- strb r0, [r2]
- ldr r1, _08025B4C @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- str r4, [r5]
- ldrb r1, [r2]
- adds r0, r3, 0
- bl RecordAbilityBattle
- b _08025B56
- .align 2, 0
-_08025B44: .4byte gBattleMons
-_08025B48: .4byte gLastUsedAbility
-_08025B4C: .4byte gBattleCommunication
-_08025B50:
- ldr r0, [r5]
- adds r0, 0x5
- str r0, [r5]
-_08025B56:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8025AE0
-
- thumb_func_start sub_8025B5C
-sub_8025B5C: @ 8025B5C
- push {r4,r5,lr}
- ldr r5, _08025B84 @ =gDisableStructs
- ldr r4, _08025B88 @ =gBankAttacker
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1, 0x9]
- cmp r0, 0x3
- bne _08025B94
- ldr r2, _08025B8C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08025B90 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08025BBE
- .align 2, 0
-_08025B84: .4byte gDisableStructs
-_08025B88: .4byte gBankAttacker
-_08025B8C: .4byte gBattleMoveFlags
-_08025B90: .4byte gBattleCommunication
-_08025B94:
- adds r0, 0x1
- movs r3, 0
- strb r0, [r1, 0x9]
- ldr r2, _08025BCC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r2]
- movs r0, 0x1
- strb r0, [r2, 0x1]
- strb r0, [r2, 0x2]
- strb r0, [r2, 0x3]
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x9]
- strb r0, [r2, 0x4]
- movs r0, 0xFF
- strb r0, [r2, 0x5]
- ldr r0, _08025BD0 @ =gBattleCommunication
- strb r3, [r0, 0x5]
-_08025BBE:
- ldr r1, _08025BD4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025BCC: .4byte gBattleTextBuff1
-_08025BD0: .4byte gBattleCommunication
-_08025BD4: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8025B5C
-
- thumb_func_start atk86_stockpiletobasedamage
-atk86_stockpiletobasedamage: @ 8025BD8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r3, _08025C10 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r2, r0
- ldr r7, _08025C14 @ =gDisableStructs
- ldr r6, _08025C18 @ =gBankAttacker
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _08025C1C
- str r2, [r3]
- b _08025CC2
- .align 2, 0
-_08025C10: .4byte gBattlescriptCurrInstr
-_08025C14: .4byte gDisableStructs
-_08025C18: .4byte gBankAttacker
-_08025C1C:
- ldr r0, _08025CD0 @ =gBattleCommunication
- ldrb r0, [r0, 0x6]
- cmp r0, 0x1
- beq _08025CA8
- ldr r0, _08025CD4 @ =gBattleMoveDamage
- mov r8, r0
- ldr r4, _08025CD8 @ =gSideAffecting
- ldr r5, _08025CDC @ =gBankTarget
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldrb r0, [r6]
- movs r4, 0x58
- muls r0, r4
- ldr r2, _08025CE0 @ =gBattleMons
- adds r0, r2
- ldrb r1, [r5]
- muls r1, r4
- adds r1, r2
- ldr r2, _08025CE4 @ =gCurrentMove
- ldrh r2, [r2]
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- ldrb r4, [r6]
- str r4, [sp, 0x8]
- ldrb r4, [r5]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- ldrb r2, [r6]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r7
- ldrb r1, [r1, 0x9]
- adds r3, r0, 0
- muls r3, r1
- mov r1, r8
- str r3, [r1]
- ldr r2, _08025CE8 @ =0x02000000
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x9]
- ldr r1, _08025CEC @ =0x00016002
- adds r2, r1
- strb r0, [r2]
- ldr r1, _08025CF0 @ =gProtectStructs
- ldrb r0, [r6]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _08025CA8
- lsls r0, r3, 4
- subs r0, r3
- movs r1, 0xA
- bl __divsi3
- mov r1, r8
- str r0, [r1]
-_08025CA8:
- ldr r2, _08025CF4 @ =gDisableStructs
- ldr r0, _08025CF8 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strb r1, [r0, 0x9]
- ldr r1, _08025CFC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08025CC2:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025CD0: .4byte gBattleCommunication
-_08025CD4: .4byte gBattleMoveDamage
-_08025CD8: .4byte gSideAffecting
-_08025CDC: .4byte gBankTarget
-_08025CE0: .4byte gBattleMons
-_08025CE4: .4byte gCurrentMove
-_08025CE8: .4byte 0x02000000
-_08025CEC: .4byte 0x00016002
-_08025CF0: .4byte gProtectStructs
-_08025CF4: .4byte gDisableStructs
-_08025CF8: .4byte gBankAttacker
-_08025CFC: .4byte gBattlescriptCurrInstr
- thumb_func_end atk86_stockpiletobasedamage
-
- thumb_func_start sub_8025D00
-sub_8025D00: @ 8025D00
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, _08025D40 @ =gBattlescriptCurrInstr
- ldr r1, [r7]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r2, r0
- ldr r0, _08025D44 @ =gDisableStructs
- mov r8, r0
- ldr r6, _08025D48 @ =gBankAttacker
- ldrb r3, [r6]
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- mov r1, r8
- adds r4, r0, r1
- ldrb r1, [r4, 0x9]
- cmp r1, 0
- bne _08025D50
- str r2, [r7]
- ldr r0, _08025D4C @ =gBattleCommunication
- strb r1, [r0, 0x5]
- b _08025DD0
- .align 2, 0
-_08025D40: .4byte gBattlescriptCurrInstr
-_08025D44: .4byte gDisableStructs
-_08025D48: .4byte gBankAttacker
-_08025D4C: .4byte gBattleCommunication
-_08025D50:
- ldr r1, _08025D74 @ =gBattleMons
- movs r0, 0x58
- muls r0, r3
- adds r1, r0, r1
- ldrh r0, [r1, 0x2C]
- ldrh r3, [r1, 0x28]
- cmp r0, r3
- bne _08025D80
- movs r0, 0
- strb r0, [r4, 0x9]
- str r2, [r7]
- ldr r1, _08025D78 @ =gBankTarget
- ldrb r0, [r6]
- strb r0, [r1]
- ldr r1, _08025D7C @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08025DD0
- .align 2, 0
-_08025D74: .4byte gBattleMons
-_08025D78: .4byte gBankTarget
-_08025D7C: .4byte gBattleCommunication
-_08025D80:
- ldr r5, _08025DDC @ =gBattleMoveDamage
- ldrh r0, [r1, 0x2C]
- ldrb r1, [r4, 0x9]
- movs r2, 0x3
- subs r2, r1
- movs r4, 0x1
- adds r1, r4, 0
- lsls r1, r2
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _08025D9C
- str r4, [r5]
-_08025D9C:
- ldr r0, [r5]
- negs r0, r0
- str r0, [r5]
- ldr r2, _08025DE0 @ =0x02000000
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x9]
- ldr r1, _08025DE4 @ =0x00016002
- adds r2, r1
- movs r3, 0
- strb r0, [r2]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- strb r3, [r0, 0x9]
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- ldr r1, _08025DE8 @ =gBankTarget
- ldrb r0, [r6]
- strb r0, [r1]
-_08025DD0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025DDC: .4byte gBattleMoveDamage
-_08025DE0: .4byte 0x02000000
-_08025DE4: .4byte 0x00016002
-_08025DE8: .4byte gBankTarget
- thumb_func_end sub_8025D00
-
- thumb_func_start atk88_negativedamage
-atk88_negativedamage: @ 8025DEC
- push {lr}
- ldr r2, _08025E14 @ =gBattleMoveDamage
- ldr r0, _08025E18 @ =gHP_dealt
- ldr r0, [r0]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- negs r0, r0
- str r0, [r2]
- cmp r0, 0
- bne _08025E08
- movs r0, 0x1
- negs r0, r0
- str r0, [r2]
-_08025E08:
- ldr r1, _08025E1C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08025E14: .4byte gBattleMoveDamage
-_08025E18: .4byte gHP_dealt
-_08025E1C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk88_negativedamage
-
- thumb_func_start sub_8025E20
-sub_8025E20: @ 8025E20
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r8, r3
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- movs r0, 0
- mov r9, r0
- mov r10, r0
- movs r0, 0x40
- ands r0, r5
- cmp r0, 0
- beq _08025E54
- ldr r0, _08025E4C @ =gActiveBank
- ldr r1, _08025E50 @ =gBankAttacker
- b _08025E58
- .align 2, 0
-_08025E4C: .4byte gActiveBank
-_08025E50: .4byte gBankAttacker
-_08025E54:
- ldr r0, _08025EF8 @ =gActiveBank
- ldr r1, _08025EFC @ =gBankTarget
-_08025E58:
- ldrb r1, [r1]
- strb r1, [r0]
- movs r0, 0xBF
- ands r5, r0
- movs r0, 0x80
- ands r0, r5
- cmp r0, 0
- beq _08025E72
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08025E72:
- movs r0, 0x7F
- ands r5, r0
- movs r0, 0x20
- ands r0, r5
- cmp r0, 0
- beq _08025E88
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_08025E88:
- movs r0, 0xDF
- ands r5, r0
- ldr r1, _08025F00 @ =gBattleTextBuff1
- movs r4, 0
- movs r2, 0xFD
- strb r2, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- strb r7, [r1, 0x2]
- movs r3, 0x1
- negs r3, r3
- mov r12, r3
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- lsls r0, r6, 24
- cmp r0, 0
- blt _08025EAC
- b _080261B0
-_08025EAC:
- ldr r4, _08025F04 @ =gSideTimer
- ldr r1, _08025EF8 @ =gActiveBank
- ldrb r0, [r1]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- beq _08025F54
- mov r2, r9
- cmp r2, 0
- bne _08025F54
- ldr r0, _08025F08 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAE
- beq _08025F84
- cmp r5, 0x1
- bne _08025F74
- ldr r4, _08025F0C @ =gSpecialStatuses
- ldr r3, _08025EF8 @ =gActiveBank
- ldrb r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _08025F14
- ldr r0, _08025F10 @ =gBattlescriptCurrInstr
- mov r4, r8
- str r4, [r0]
- b _08025F74
- .align 2, 0
-_08025EF8: .4byte gActiveBank
-_08025EFC: .4byte gBankTarget
-_08025F00: .4byte gBattleTextBuff1
-_08025F04: .4byte gSideTimer
-_08025F08: .4byte gCurrentMove
-_08025F0C: .4byte gSpecialStatuses
-_08025F10: .4byte gBattlescriptCurrInstr
-_08025F14:
- mov r0, r8
- bl b_movescr_stack_push
- ldr r0, _08025F40 @ =0x02000000
- ldr r6, _08025F44 @ =gActiveBank
- ldrb r1, [r6]
- ldr r2, _08025F48 @ =0x00016003
- adds r0, r2
- strb r1, [r0]
- ldr r1, _08025F4C @ =gBattlescriptCurrInstr
- ldr r0, _08025F50 @ =gUnknown_081D9128
- str r0, [r1]
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _08025F74
- .align 2, 0
-_08025F40: .4byte 0x02000000
-_08025F44: .4byte gActiveBank
-_08025F48: .4byte 0x00016003
-_08025F4C: .4byte gBattlescriptCurrInstr
-_08025F50: .4byte gUnknown_081D9128
-_08025F54:
- ldr r0, _08025F78 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAE
- beq _08025F84
- mov r3, r10
- cmp r3, 0x1
- beq _08025F84
- movs r0, 0
- bl sub_801C108
- lsls r0, 24
- cmp r0, 0
- beq _08025F84
- ldr r1, _08025F7C @ =gBattlescriptCurrInstr
- ldr r0, _08025F80 @ =BattleScript_1D83D6
- str r0, [r1]
-_08025F74:
- movs r0, 0x1
- b _080262A4
- .align 2, 0
-_08025F78: .4byte gCurrentMove
-_08025F7C: .4byte gBattlescriptCurrInstr
-_08025F80: .4byte BattleScript_1D83D6
-_08025F84:
- ldr r2, _08025FCC @ =gBattleMons
- ldr r1, _08025FD0 @ =gActiveBank
- ldrb r3, [r1]
- movs r4, 0x58
- adds r0, r3, 0
- muls r0, r4
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- mov r10, r2
- cmp r0, 0x1D
- beq _08025FA0
- cmp r0, 0x49
- bne _08026040
-_08025FA0:
- mov r0, r9
- cmp r0, 0
- bne _08026040
- ldr r0, _08025FD4 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAE
- beq _08026040
- cmp r5, 0x1
- bne _08025F74
- ldr r4, _08025FD8 @ =gSpecialStatuses
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _08025FE0
- ldr r0, _08025FDC @ =gBattlescriptCurrInstr
- mov r1, r8
- str r1, [r0]
- b _08025F74
- .align 2, 0
-_08025FCC: .4byte gBattleMons
-_08025FD0: .4byte gActiveBank
-_08025FD4: .4byte gCurrentMove
-_08025FD8: .4byte gSpecialStatuses
-_08025FDC: .4byte gBattlescriptCurrInstr
-_08025FE0:
- mov r0, r8
- bl b_movescr_stack_push
- ldr r0, _08026028 @ =0x02000000
- ldr r2, _0802602C @ =gActiveBank
- ldrb r1, [r2]
- ldr r3, _08026030 @ =0x00016003
- adds r0, r3
- strb r1, [r0]
- ldr r1, _08026034 @ =gBattlescriptCurrInstr
- ldr r0, _08026038 @ =gUnknown_081D989B
- str r0, [r1]
- ldr r1, _0802603C @ =gLastUsedAbility
- ldrb r0, [r2]
- movs r6, 0x58
- muls r0, r6
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r2]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- ldr r0, _0802602C @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _08025F74
- .align 2, 0
-_08026028: .4byte 0x02000000
-_0802602C: .4byte gActiveBank
-_08026030: .4byte 0x00016003
-_08026034: .4byte gBattlescriptCurrInstr
-_08026038: .4byte gUnknown_081D989B
-_0802603C: .4byte gLastUsedAbility
-_08026040:
- ldr r1, _08026090 @ =gActiveBank
- ldrb r0, [r1]
- movs r4, 0x58
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x33
- bne _080260A8
- mov r2, r9
- cmp r2, 0
- bne _080260A8
- cmp r7, 0x6
- bne _080260A8
- cmp r5, 0x1
- bne _08025F74
- mov r0, r8
- bl b_movescr_stack_push
- ldr r0, _08026094 @ =0x02000000
- ldr r3, _08026090 @ =gActiveBank
- ldrb r1, [r3]
- ldr r6, _08026098 @ =0x00016003
- adds r0, r6
- strb r1, [r0]
- ldr r1, _0802609C @ =gBattlescriptCurrInstr
- ldr r0, _080260A0 @ =gUnknown_081D9903
- str r0, [r1]
- ldr r1, _080260A4 @ =gLastUsedAbility
- ldrb r0, [r3]
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r3]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _08025F74
- .align 2, 0
-_08026090: .4byte gActiveBank
-_08026094: .4byte 0x02000000
-_08026098: .4byte 0x00016003
-_0802609C: .4byte gBattlescriptCurrInstr
-_080260A0: .4byte gUnknown_081D9903
-_080260A4: .4byte gLastUsedAbility
-_080260A8:
- ldr r1, _080260FC @ =gActiveBank
- ldrb r0, [r1]
- movs r4, 0x58
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x34
- bne _08026114
- mov r2, r9
- cmp r2, 0
- bne _08026114
- cmp r7, 0x1
- bne _08026114
- cmp r5, 0x1
- beq _080260CA
- b _08025F74
-_080260CA:
- mov r0, r8
- bl b_movescr_stack_push
- ldr r0, _08026100 @ =0x02000000
- ldr r3, _080260FC @ =gActiveBank
- ldrb r1, [r3]
- ldr r6, _08026104 @ =0x00016003
- adds r0, r6
- strb r1, [r0]
- ldr r1, _08026108 @ =gBattlescriptCurrInstr
- ldr r0, _0802610C @ =gUnknown_081D9903
- str r0, [r1]
- ldr r1, _08026110 @ =gLastUsedAbility
- ldrb r0, [r3]
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r3]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _08025F74
- .align 2, 0
-_080260FC: .4byte gActiveBank
-_08026100: .4byte 0x02000000
-_08026104: .4byte 0x00016003
-_08026108: .4byte gBattlescriptCurrInstr
-_0802610C: .4byte gUnknown_081D9903
-_08026110: .4byte gLastUsedAbility
-_08026114:
- ldr r0, _080261A0 @ =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x13
- bne _0802612C
- cmp r5, 0
- bne _0802612C
- b _08025F74
-_0802612C:
- lsls r0, r6, 24
- asrs r0, 28
- movs r1, 0x7
- ands r0, r1
- negs r0, r0
- lsls r0, 24
- ldr r3, _080261A4 @ =gBattleTextBuff2
- movs r4, 0
- movs r1, 0xFD
- strb r1, [r3]
- movs r2, 0x1
- lsrs r6, r0, 24
- asrs r0, 24
- subs r1, 0xFF
- cmp r0, r1
- bne _08026156
- strb r4, [r3, 0x1]
- movs r0, 0xD3
- strb r0, [r3, 0x2]
- strb r4, [r3, 0x3]
- movs r2, 0x4
-_08026156:
- adds r0, r2, r3
- strb r4, [r0]
- adds r2, 0x1
- adds r1, r2, r3
- movs r0, 0xD4
- strb r0, [r1]
- adds r2, 0x1
- adds r0, r2, r3
- strb r4, [r0]
- adds r2, 0x1
- adds r1, r2, r3
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _080261A0 @ =gActiveBank
- ldrb r2, [r1]
- movs r0, 0x58
- muls r0, r2
- adds r0, r7, r0
- mov r1, r10
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _08026206
- movs r1, 0
- ldr r0, _080261A8 @ =gBankTarget
- ldrb r0, [r0]
- ldr r3, _080261AC @ =gBattleCommunication
- mov r8, r3
- cmp r0, r2
- bne _0802619A
- movs r1, 0x1
-_0802619A:
- mov r4, r8
- strb r1, [r4, 0x5]
- b _08026234
- .align 2, 0
-_080261A0: .4byte gActiveBank
-_080261A4: .4byte gBattleTextBuff2
-_080261A8: .4byte gBankTarget
-_080261AC: .4byte gBattleCommunication
-_080261B0:
- asrs r6, r0, 28
- movs r0, 0x7
- ands r6, r0
- ldr r3, _08026210 @ =gBattleTextBuff2
- strb r2, [r3]
- movs r2, 0x1
- cmp r6, 0x2
- bne _080261CA
- strb r4, [r3, 0x1]
- movs r0, 0xD1
- strb r0, [r3, 0x2]
- strb r4, [r3, 0x3]
- movs r2, 0x4
-_080261CA:
- adds r0, r2, r3
- strb r4, [r0]
- adds r2, 0x1
- adds r1, r2, r3
- movs r0, 0xD2
- strb r0, [r1]
- adds r2, 0x1
- adds r0, r2, r3
- strb r4, [r0]
- adds r2, 0x1
- adds r1, r2, r3
- ldrb r0, [r1]
- mov r2, r12
- orrs r0, r2
- strb r0, [r1]
- ldr r2, _08026214 @ =gBattleMons
- ldr r4, _08026218 @ =gActiveBank
- ldrb r3, [r4]
- movs r0, 0x58
- muls r0, r3
- adds r0, r7, r0
- adds r1, r2, 0
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- mov r10, r2
- cmp r0, 0xC
- bne _08026220
-_08026206:
- ldr r1, _0802621C @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- mov r8, r1
- b _08026234
- .align 2, 0
-_08026210: .4byte gBattleTextBuff2
-_08026214: .4byte gBattleMons
-_08026218: .4byte gActiveBank
-_0802621C: .4byte gBattleCommunication
-_08026220:
- movs r1, 0
- ldr r0, _080262B4 @ =gBankTarget
- ldrb r0, [r0]
- ldr r2, _080262B8 @ =gBattleCommunication
- mov r8, r2
- cmp r0, r3
- bne _08026230
- movs r1, 0x1
-_08026230:
- mov r3, r8
- strb r1, [r3, 0x5]
-_08026234:
- ldr r2, _080262BC @ =gActiveBank
- ldrb r0, [r2]
- movs r4, 0x58
- adds r1, r0, 0
- muls r1, r4
- adds r1, r7, r1
- mov r3, r10
- adds r3, 0x18
- adds r1, r3
- lsls r0, r6, 24
- asrs r0, 24
- ldrb r6, [r1]
- adds r0, r6
- strb r0, [r1]
- ldrb r0, [r2]
- muls r0, r4
- adds r0, r7, r0
- adds r1, r0, r3
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bge _08026264
- movs r0, 0
- strb r0, [r1]
-_08026264:
- ldr r1, _080262BC @ =gActiveBank
- ldrb r0, [r1]
- muls r0, r4
- adds r0, r7, r0
- adds r1, r0, r3
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, 0xC
- ble _0802627A
- movs r0, 0xC
- strb r0, [r1]
-_0802627A:
- mov r2, r8
- ldrb r0, [r2, 0x5]
- cmp r0, 0x2
- bne _080262A2
- movs r3, 0x1
- ands r3, r5
- cmp r3, 0
- beq _08026294
- ldr r0, _080262C0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
-_08026294:
- mov r4, r8
- ldrb r0, [r4, 0x5]
- cmp r0, 0x2
- bne _080262A2
- cmp r3, 0
- bne _080262A2
- b _08025F74
-_080262A2:
- movs r0, 0
-_080262A4:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080262B4: .4byte gBankTarget
-_080262B8: .4byte gBattleCommunication
-_080262BC: .4byte gActiveBank
-_080262C0: .4byte gBattleMoveFlags
- thumb_func_end sub_8025E20
-
- thumb_func_start atk89_statbuffchange
-atk89_statbuffchange: @ 80262C4
- push {r4,r5,lr}
- ldr r5, _0802630C @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r3, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r3, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r3, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r3, r0
- ldr r0, _08026310 @ =0x02000000
- ldr r1, _08026314 @ =0x0001601e
- adds r0, r1
- ldrb r4, [r0]
- movs r0, 0xF0
- ands r0, r4
- lsls r0, 24
- asrs r0, 24
- movs r1, 0xF
- ands r1, r4
- ldrb r2, [r2, 0x1]
- bl sub_8025E20
- lsls r0, 24
- cmp r0, 0
- bne _08026304
- ldr r0, [r5]
- adds r0, 0x6
- str r0, [r5]
-_08026304:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802630C: .4byte gBattlescriptCurrInstr
-_08026310: .4byte 0x02000000
-_08026314: .4byte 0x0001601e
- thumb_func_end atk89_statbuffchange
-
- thumb_func_start atk8A_normalisebuffs
-atk8A_normalisebuffs: @ 8026318
- push {r4-r7,lr}
- movs r2, 0
- ldr r0, _08026360 @ =gNoOfAllBanks
- ldrb r1, [r0]
- ldr r0, _08026364 @ =gBattlescriptCurrInstr
- mov r12, r0
- cmp r2, r1
- bge _08026350
- ldr r0, _08026368 @ =gBattleMons
- movs r4, 0x6
- adds r5, r1, 0
- movs r7, 0x58
- adds r6, r0, 0
- adds r6, 0x18
-_08026334:
- adds r3, r2, 0x1
- movs r1, 0x7
- adds r0, r2, 0
- muls r0, r7
- adds r0, r6
- adds r0, 0x7
-_08026340:
- strb r4, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _08026340
- adds r2, r3, 0
- cmp r2, r5
- blt _08026334
-_08026350:
- mov r1, r12
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08026360: .4byte gNoOfAllBanks
-_08026364: .4byte gBattlescriptCurrInstr
-_08026368: .4byte gBattleMons
- thumb_func_end atk8A_normalisebuffs
-
- thumb_func_start atk8B_setbide
-atk8B_setbide: @ 802636C
- push {r4,r5,lr}
- ldr r4, _080263C4 @ =gBattleMons
- ldr r3, _080263C8 @ =gBankAttacker
- ldrb r0, [r3]
- movs r5, 0x58
- adds r2, r0, 0
- muls r2, r5
- adds r4, 0x50
- adds r2, r4
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 5
- orrs r0, r1
- str r0, [r2]
- ldr r1, _080263CC @ =gLockedMove
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, _080263D0 @ =gCurrentMove
- ldrh r1, [r1]
- movs r2, 0
- strh r1, [r0]
- ldr r1, _080263D4 @ =gTakenDmg
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r1
- str r2, [r0]
- ldrb r0, [r3]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r4
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 2
- orrs r0, r2
- str r0, [r1]
- ldr r1, _080263D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080263C4: .4byte gBattleMons
-_080263C8: .4byte gBankAttacker
-_080263CC: .4byte gLockedMove
-_080263D0: .4byte gCurrentMove
-_080263D4: .4byte gTakenDmg
-_080263D8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk8B_setbide
-
- thumb_func_start atk8C_confuseifrepeatingattackends
-atk8C_confuseifrepeatingattackends: @ 80263DC
- push {lr}
- ldr r1, _0802640C @ =gBattleMons
- ldr r0, _08026410 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 4
- ands r0, r1
- cmp r0, 0
- bne _080263FE
- ldr r1, _08026414 @ =gBattleCommunication
- movs r0, 0x75
- strb r0, [r1, 0x3]
-_080263FE:
- ldr r1, _08026418 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0802640C: .4byte gBattleMons
-_08026410: .4byte gBankAttacker
-_08026414: .4byte gBattleCommunication
-_08026418: .4byte gBattlescriptCurrInstr
- thumb_func_end atk8C_confuseifrepeatingattackends
-
- thumb_func_start atk8D_setloopcounter
-atk8D_setloopcounter: @ 802641C
- push {r4,r5,lr}
- ldr r0, _08026430 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- cmp r1, 0
- beq _08026438
- ldr r0, _08026434 @ =gMultiHitCounter
- strb r1, [r0]
- b _08026452
- .align 2, 0
-_08026430: .4byte gBattlescriptCurrInstr
-_08026434: .4byte gMultiHitCounter
-_08026438:
- ldr r4, _08026460 @ =gMultiHitCounter
- bl Random
- movs r5, 0x3
- ands r0, r5
- strb r0, [r4]
- cmp r0, 0x1
- bls _0802644E
- bl Random
- ands r0, r5
-_0802644E:
- adds r0, 0x2
- strb r0, [r4]
-_08026452:
- ldr r1, _08026464 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08026460: .4byte gMultiHitCounter
-_08026464: .4byte gBattlescriptCurrInstr
- thumb_func_end atk8D_setloopcounter
-
- thumb_func_start sub_8026468
-sub_8026468: @ 8026468
- push {r4,lr}
- ldr r1, _080264A8 @ =0x02000000
- ldr r0, _080264AC @ =0x000160e0
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0xFD
- strb r0, [r2]
- ldr r2, _080264B0 @ =0x000160e1
- adds r0, r1, r2
- movs r2, 0x1
- strb r2, [r0]
- ldr r4, _080264B4 @ =0x000160e2
- adds r0, r1, r4
- strb r2, [r0]
- adds r4, 0x1
- adds r0, r1, r4
- strb r2, [r0]
- ldr r2, _080264B8 @ =0x000160e4
- adds r0, r1, r2
- strb r3, [r0]
- adds r4, 0x2
- adds r1, r4
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _080264BC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080264A8: .4byte 0x02000000
-_080264AC: .4byte 0x000160e0
-_080264B0: .4byte 0x000160e1
-_080264B4: .4byte 0x000160e2
-_080264B8: .4byte 0x000160e4
-_080264BC: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8026468
-
- thumb_func_start sub_80264C0
-sub_80264C0: @ 80264C0
- push {r4-r7,lr}
- ldr r6, _080264F4 @ =gBattleMons
- ldr r7, _080264F8 @ =gBankAttacker
- ldrb r0, [r7]
- movs r5, 0x58
- adds r1, r0, 0
- muls r1, r5
- adds r1, r6
- adds r1, 0x2A
- ldr r4, _080264FC @ =gBankTarget
- ldrb r3, [r4]
- adds r0, r3, 0
- muls r0, r5
- adds r0, r6
- adds r0, 0x2A
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bcc _0802650C
- ldr r0, _08026500 @ =0x02000000
- ldr r2, _08026504 @ =0x00016064
- adds r1, r3, r2
- adds r1, r0
- ldr r2, _08026508 @ =gBattlePartyID
- lsls r0, r3, 1
- b _08026568
- .align 2, 0
-_080264F4: .4byte gBattleMons
-_080264F8: .4byte gBankAttacker
-_080264FC: .4byte gBankTarget
-_08026500: .4byte 0x02000000
-_08026504: .4byte 0x00016064
-_08026508: .4byte gBattlePartyID
-_0802650C:
- bl Random
- movs r3, 0xFF
- ands r3, r0
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r6
- adds r0, 0x2A
- ldrb r2, [r0]
- ldrb r4, [r4]
- adds r0, r4, 0
- muls r0, r5
- adds r0, r6
- adds r0, 0x2A
- ldrb r1, [r0]
- adds r2, r1
- adds r0, r3, 0
- muls r0, r2
- asrs r0, 8
- adds r0, 0x1
- lsrs r1, 2
- cmp r0, r1
- bhi _0802655C
- ldr r3, _08026558 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- movs r0, 0
- b _08026576
- .align 2, 0
-_08026558: .4byte gBattlescriptCurrInstr
-_0802655C:
- ldr r0, _0802657C @ =0x02000000
- ldr r2, _08026580 @ =0x00016064
- adds r1, r4, r2
- adds r1, r0
- ldr r2, _08026584 @ =gBattlePartyID
- lsls r0, r4, 1
-_08026568:
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r1, _08026588 @ =gBattlescriptCurrInstr
- ldr r0, _0802658C @ =gUnknown_081D90FC
- str r0, [r1]
- movs r0, 0x1
-_08026576:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0802657C: .4byte 0x02000000
-_08026580: .4byte 0x00016064
-_08026584: .4byte gBattlePartyID
-_08026588: .4byte gBattlescriptCurrInstr
-_0802658C: .4byte gUnknown_081D90FC
- thumb_func_end sub_80264C0
-
- thumb_func_start sub_8026590
-sub_8026590: @ 8026590
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, _08026628 @ =gBattleTypeFlags
- ldrh r1, [r4]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _080265A4
- b _0802687C
-_080265A4:
- ldr r5, _0802662C @ =gBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- ldr r1, _08026630 @ =gEnemyParty
- mov r8, r1
- cmp r0, 0
- bne _080265BA
- ldr r2, _08026634 @ =gPlayerParty
- mov r8, r2
-_080265BA:
- ldrh r1, [r4]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08026638
- movs r7, 0
- movs r6, 0
- ldrb r0, [r5]
- bl sub_803FC34
- lsls r0, 24
- lsrs r0, 24
- bl sub_803FBFC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _080265E0
- movs r6, 0x3
-_080265E0:
- adds r5, r6, 0
- adds r0, r5, 0x3
- cmp r5, r0
- bge _08026678
-_080265E8:
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0802661A
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0802661A
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0802661A
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_0802661A:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r6, 0x3
- cmp r5, r0
- blt _080265E8
- b _08026678
- .align 2, 0
-_08026628: .4byte gBattleTypeFlags
-_0802662C: .4byte gBankTarget
-_08026630: .4byte gEnemyParty
-_08026634: .4byte gPlayerParty
-_08026638:
- movs r7, 0
- movs r5, 0
-_0802663C:
- movs r0, 0x64
- muls r0, r5
- mov r2, r8
- adds r4, r2, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0802666E
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0802666E
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0802666E
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_0802666E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0802663C
-_08026678:
- cmp r7, 0x1
- bhi _08026688
- ldr r0, _080266BC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x41
- ands r0, r1
- cmp r0, 0x1
- bne _080266A0
-_08026688:
- cmp r7, 0x2
- bhi _080266C4
- ldr r0, _080266BC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080266C4
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080266C4
-_080266A0:
- ldr r3, _080266C0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08026880
- .align 2, 0
-_080266BC: .4byte gBattleTypeFlags
-_080266C0: .4byte gBattlescriptCurrInstr
-_080266C4:
- bl sub_80264C0
- lsls r0, 24
- cmp r0, 0
- bne _080266D0
- b _08026880
-_080266D0:
- ldr r0, _08026710 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08026774
-_080266DC:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08026714 @ =gBankTarget
- ldrb r0, [r0]
- bl sub_803FC34
- lsls r0, 24
- lsrs r0, 24
- bl sub_803FBFC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _08026718
- adds r0, r6, 0x3
- lsls r0, 24
- lsrs r5, r0, 24
- b _0802671A
- .align 2, 0
-_08026710: .4byte gBattleTypeFlags
-_08026714: .4byte gBankTarget
-_08026718:
- adds r5, r6, 0
-_0802671A:
- ldr r4, _0802676C @ =gBattlePartyID
- ldr r0, _08026770 @ =gBankTarget
- ldrb r2, [r0]
- lsls r1, r2, 1
- adds r1, r4
- lsls r0, r5, 16
- lsrs r3, r0, 16
- ldrh r1, [r1]
- cmp r3, r1
- beq _080266DC
- movs r0, 0x2
- eors r2, r0
- lsls r0, r2, 1
- adds r0, r4
- ldrh r0, [r0]
- cmp r3, r0
- beq _080266DC
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080266DC
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _080266DC
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080266DC
- b _08026832
- .align 2, 0
-_0802676C: .4byte gBattlePartyID
-_08026770: .4byte gBankTarget
-_08026774:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080267E4
- ldr r6, _080267DC @ =gBattlePartyID
-_0802677E:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080267E0 @ =gBankTarget
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r6
- adds r2, r5, 0
- ldrh r0, [r0]
- cmp r2, r0
- beq _0802677E
- movs r0, 0x2
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r6
- ldrh r0, [r0]
- cmp r2, r0
- beq _0802677E
- movs r0, 0x64
- muls r0, r5
- mov r2, r8
- adds r4, r2, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0802677E
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _0802677E
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0802677E
- b _08026832
- .align 2, 0
-_080267DC: .4byte gBattlePartyID
-_080267E0: .4byte gBankTarget
-_080267E4:
- ldr r6, _0802686C @ =gBattlePartyID
-_080267E6:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08026870 @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- cmp r5, r0
- beq _080267E6
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080267E6
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _080267E6
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080267E6
-_08026832:
- ldr r0, _08026874 @ =0x02000000
- ldr r4, _08026870 @ =gBankTarget
- ldrb r1, [r4]
- ldr r2, _08026878 @ =0x00016068
- adds r1, r2
- adds r1, r0
- strb r5, [r1]
- bl IsLinkDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08026850
- ldrb r0, [r4]
- bl sub_8012258
-_08026850:
- ldrb r0, [r4]
- adds r1, r5, 0
- movs r2, 0
- bl sub_8094B6C
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- adds r1, r5, 0
- movs r2, 0x1
- bl sub_8094B6C
- b _08026880
- .align 2, 0
-_0802686C: .4byte gBattlePartyID
-_08026870: .4byte gBankTarget
-_08026874: .4byte 0x02000000
-_08026878: .4byte 0x00016068
-_0802687C:
- bl sub_80264C0
-_08026880:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8026590
-
- thumb_func_start sub_802688C
-sub_802688C: @ 802688C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- ldr r2, _08026920 @ =gBattleMons
- ldr r3, _08026924 @ =gBankAttacker
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r1, r2, 0
- adds r1, 0xC
- adds r0, r1
- ldrh r0, [r0]
- mov r8, r2
- cmp r0, 0
- beq _080268CE
- movs r5, 0x58
- adds r2, r1, 0
-_080268B4:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bhi _080268CE
- lsls r1, r6, 1
- ldrb r0, [r3]
- muls r0, r5
- adds r1, r0
- adds r1, r2
- ldrh r0, [r1]
- cmp r0, 0
- bne _080268B4
-_080268CE:
- movs r3, 0
- cmp r3, r6
- bcs _08026950
- ldr r0, _08026928 @ =gBattleMoves
- mov r10, r0
- ldr r5, _08026920 @ =gBattleMons
- mov r12, r5
- ldr r7, _08026924 @ =gBankAttacker
- ldrb r0, [r7]
- movs r4, 0x58
- adds r5, r0, 0
- muls r5, r4
- movs r0, 0xC
- add r0, r12
- mov r9, r0
-_080268EC:
- lsls r0, r3, 1
- adds r0, r5
- add r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r2, [r0, 0x2]
- cmp r2, 0x9
- bne _0802692E
- mov r0, r8
- adds r1, r5, r0
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _0802691A
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _0802692C
-_0802691A:
- movs r2, 0x7
- b _0802692E
- .align 2, 0
-_08026920: .4byte gBattleMons
-_08026924: .4byte gBankAttacker
-_08026928: .4byte gBattleMoves
-_0802692C:
- movs r2, 0
-_0802692E:
- ldrb r0, [r7]
- muls r0, r4
- add r0, r12
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r2, r1
- beq _08026946
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r2, r0
- bne _08026950
-_08026946:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r6
- bcc _080268EC
-_08026950:
- cmp r3, r6
- bne _08026974
- ldr r3, _08026970 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08026A18
- .align 2, 0
-_08026970: .4byte gBattlescriptCurrInstr
-_08026974:
- movs r7, 0x3
- ldr r5, _080269CC @ =gBattleMoves
- mov r9, r5
-_0802697A:
- bl Random
- adds r3, r0, 0
- ands r3, r7
- cmp r3, r6
- bcs _0802697A
- ldr r4, _080269D0 @ =gBattleMons
- lsls r1, r3, 1
- ldr r3, _080269D4 @ =gBankAttacker
- ldrb r2, [r3]
- movs r0, 0x58
- adds r5, r2, 0
- muls r5, r0
- adds r1, r5
- adds r0, r4, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r2, [r0, 0x2]
- mov r8, r4
- adds r4, r3, 0
- cmp r2, 0x9
- bne _080269DA
- mov r0, r8
- adds r2, r5, r0
- adds r0, r2, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _080269C8
- adds r0, r2, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _080269D8
-_080269C8:
- movs r2, 0x7
- b _080269DA
- .align 2, 0
-_080269CC: .4byte gBattleMoves
-_080269D0: .4byte gBattleMons
-_080269D4: .4byte gBankAttacker
-_080269D8:
- movs r2, 0
-_080269DA:
- ldrb r0, [r4]
- movs r3, 0x58
- muls r0, r3
- add r0, r8
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r5, [r1]
- cmp r2, r5
- beq _0802697A
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r2, r0
- beq _0802697A
- strb r2, [r1]
- ldrb r0, [r4]
- muls r0, r3
- add r0, r8
- adds r0, 0x22
- strb r2, [r0]
- ldr r1, _08026A28 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- strb r2, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r1, _08026A2C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08026A18:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08026A28: .4byte gBattleTextBuff1
-_08026A2C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802688C
-
- thumb_func_start atk91_givemoney
-atk91_givemoney: @ 8026A30
- push {r4,lr}
- ldr r0, _08026A8C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08026AAC
- ldr r4, _08026A90 @ =gPaydayMoney
- ldrh r0, [r4]
- cmp r0, 0
- beq _08026AAC
- ldr r0, _08026A94 @ =gSaveBlock1 + 0x490
- ldrh r2, [r4]
- ldr r1, _08026A98 @ =0x02000000
- ldr r3, _08026A9C @ =0x00016056
- adds r1, r3
- ldrb r1, [r1]
- muls r1, r2
- bl sub_80B79B8
- ldr r1, _08026AA0 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- movs r0, 0x5
- strb r0, [r1, 0x3]
- ldrh r2, [r4]
- strb r2, [r1, 0x4]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r2
- lsrs r0, 8
- strb r0, [r1, 0x5]
- movs r0, 0xFF
- strb r0, [r1, 0x6]
- ldr r4, _08026AA4 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _08026AA8 @ =gUnknown_081D95DB
- str r0, [r4]
- b _08026AB4
- .align 2, 0
-_08026A8C: .4byte gBattleTypeFlags
-_08026A90: .4byte gPaydayMoney
-_08026A94: .4byte gSaveBlock1 + 0x490
-_08026A98: .4byte 0x02000000
-_08026A9C: .4byte 0x00016056
-_08026AA0: .4byte gBattleTextBuff1
-_08026AA4: .4byte gBattlescriptCurrInstr
-_08026AA8: .4byte gUnknown_081D95DB
-_08026AAC:
- ldr r1, _08026ABC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08026AB4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08026ABC: .4byte gBattlescriptCurrInstr
- thumb_func_end atk91_givemoney
-
- thumb_func_start atk92_setlightscreen
-atk92_setlightscreen: @ 8026AC0
- push {r4-r6,lr}
- ldr r4, _08026AF0 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r6, _08026AF4 @ =gSideAffecting
- movs r5, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08026B00
- ldr r2, _08026AF8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08026AFC @ =gBattleCommunication
- movs r0, 0
- b _08026B60
- .align 2, 0
-_08026AF0: .4byte gBankAttacker
-_08026AF4: .4byte gSideAffecting
-_08026AF8: .4byte gBattleMoveFlags
-_08026AFC: .4byte gBattleCommunication
-_08026B00:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r2, _08026B50 @ =gSideTimer
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x5
- strb r1, [r0, 0x1]
- ldr r0, _08026B54 @ =gBattleTypeFlags
- ldrh r1, [r0]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _08026B5C
- movs r0, 0x1
- bl CountAliveMons
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08026B5C
- ldr r1, _08026B58 @ =gBattleCommunication
- movs r0, 0x4
- b _08026B60
- .align 2, 0
-_08026B50: .4byte gSideTimer
-_08026B54: .4byte gBattleTypeFlags
-_08026B58: .4byte gBattleCommunication
-_08026B5C:
- ldr r1, _08026B70 @ =gBattleCommunication
- movs r0, 0x3
-_08026B60:
- strb r0, [r1, 0x5]
- ldr r1, _08026B74 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08026B70: .4byte gBattleCommunication
-_08026B74: .4byte gBattlescriptCurrInstr
- thumb_func_end atk92_setlightscreen
-
- thumb_func_start sub_8026B78
-sub_8026B78: @ 8026B78
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r7, _08026BA8 @ =gBattleMons
- ldr r6, _08026BAC @ =gBankTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _08026BB4
- ldr r1, _08026BB0 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _08026BCE
- .align 2, 0
-_08026BA8: .4byte gBattleMons
-_08026BAC: .4byte gBankTarget
-_08026BB0: .4byte gEnigmaBerries
-_08026BB4:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_08026BCE:
- ldr r1, _08026C4C @ =gStringBank
- ldr r5, _08026C50 @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _08026C0C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _08026C0C
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemBattle
- ldr r2, _08026C54 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_08026C0C:
- ldr r0, _08026C58 @ =gBattleMons
- mov r8, r0
- ldr r1, _08026C50 @ =gBankTarget
- ldrb r2, [r1]
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- mov r3, r8
- adds r5, r0, r3
- adds r0, r5, 0
- adds r0, 0x20
- ldrb r3, [r0]
- mov r10, r8
- cmp r3, 0x5
- bne _08026C6C
- ldr r2, _08026C5C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08026C60 @ =gLastUsedAbility
- strb r3, [r0]
- ldr r1, _08026C64 @ =gBattlescriptCurrInstr
- ldr r0, _08026C68 @ =gUnknown_081D9826
- str r0, [r1]
- ldr r1, _08026C50 @ =gBankTarget
- ldrb r0, [r1]
- movs r1, 0x5
- bl RecordAbilityBattle
- b _08026E40
- .align 2, 0
-_08026C4C: .4byte gStringBank
-_08026C50: .4byte gBankTarget
-_08026C54: .4byte gSpecialStatuses
-_08026C58: .4byte gBattleMons
-_08026C5C: .4byte gBattleMoveFlags
-_08026C60: .4byte gLastUsedAbility
-_08026C64: .4byte gBattlescriptCurrInstr
-_08026C68: .4byte gUnknown_081D9826
-_08026C6C:
- ldr r1, _08026CE0 @ =gStatuses3
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x18
- ands r0, r1
- cmp r0, 0
- bne _08026CF4
- ldr r1, _08026CE4 @ =gBattleMoves
- ldr r0, _08026CE8 @ =gCurrentMove
- ldrh r0, [r0]
- lsls r2, r0, 1
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldr r7, _08026CEC @ =gBankAttacker
- ldrb r0, [r7]
- muls r0, r6
- add r0, r10
- adds r0, 0x2A
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r1, 0x2A
- ldrb r1, [r1]
- subs r0, r1
- ldrb r2, [r2, 0x3]
- adds r0, r2
- lsls r0, 16
- lsrs r4, r0, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, 0x1
- cmp r0, r4
- bge _08026CDC
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- add r1, r10
- adds r1, 0x2A
- ldr r2, _08026CF0 @ =gBankTarget
- ldrb r0, [r2]
- muls r0, r6
- add r0, r10
- adds r0, 0x2A
- ldrb r1, [r1]
- movs r4, 0x1
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08026D20
-_08026CDC:
- mov r10, r8
- b _08026DE0
- .align 2, 0
-_08026CE0: .4byte gStatuses3
-_08026CE4: .4byte gBattleMoves
-_08026CE8: .4byte gCurrentMove
-_08026CEC: .4byte gBankAttacker
-_08026CF0: .4byte gBankTarget
-_08026CF4:
- ldr r0, _08026D4C @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldr r2, _08026D50 @ =gBankAttacker
- ldrb r0, [r1, 0x15]
- movs r4, 0
- ldrb r3, [r2]
- cmp r0, r3
- bne _08026D20
- ldrb r0, [r2]
- muls r0, r6
- add r0, r10
- adds r0, 0x2A
- adds r1, r5, 0
- adds r1, 0x2A
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08026D20
- movs r4, 0x1
-_08026D20:
- cmp r4, 0
- beq _08026DE0
- ldr r0, _08026D54 @ =gProtectStructs
- ldr r1, _08026D58 @ =gBankTarget
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- bge _08026D64
- ldr r1, _08026D5C @ =gBattleMoveDamage
- movs r0, 0x58
- muls r0, r2
- add r0, r10
- ldrh r0, [r0, 0x28]
- subs r0, 0x1
- str r0, [r1]
- ldr r2, _08026D60 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x40
- b _08026DC6
- .align 2, 0
-_08026D4C: .4byte gDisableStructs
-_08026D50: .4byte gBankAttacker
-_08026D54: .4byte gProtectStructs
-_08026D58: .4byte gBankTarget
-_08026D5C: .4byte gBattleMoveDamage
-_08026D60: .4byte gBattleMoveFlags
-_08026D64:
- ldr r0, _08026DA0 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08026DB4
- ldr r1, _08026DA4 @ =gBattleMoveDamage
- movs r3, 0x58
- adds r0, r2, 0
- muls r0, r3
- add r0, r10
- ldrh r0, [r0, 0x28]
- subs r0, 0x1
- str r0, [r1]
- ldr r2, _08026DA8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08026DAC @ =gLastUsedItem
- ldr r2, _08026DB0 @ =gBankTarget
- ldrb r0, [r2]
- muls r0, r3
- add r0, r10
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
- b _08026DCA
- .align 2, 0
-_08026DA0: .4byte gSpecialStatuses
-_08026DA4: .4byte gBattleMoveDamage
-_08026DA8: .4byte gBattleMoveFlags
-_08026DAC: .4byte gLastUsedItem
-_08026DB0: .4byte gBankTarget
-_08026DB4:
- ldr r1, _08026DD4 @ =gBattleMoveDamage
- movs r0, 0x58
- muls r0, r2
- add r0, r10
- ldrh r0, [r0, 0x28]
- str r0, [r1]
- ldr r2, _08026DD8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x10
-_08026DC6:
- orrs r0, r1
- strb r0, [r2]
-_08026DCA:
- ldr r1, _08026DDC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08026E40
- .align 2, 0
-_08026DD4: .4byte gBattleMoveDamage
-_08026DD8: .4byte gBattleMoveFlags
-_08026DDC: .4byte gBattlescriptCurrInstr
-_08026DE0:
- ldr r2, _08026E10 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08026E14 @ =gBankAttacker
- ldrb r0, [r0]
- movs r2, 0x58
- adds r1, r0, 0
- muls r1, r2
- add r1, r10
- adds r1, 0x2A
- ldr r3, _08026E18 @ =gBankTarget
- ldrb r0, [r3]
- muls r0, r2
- add r0, r10
- adds r0, 0x2A
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bcc _08026E20
- ldr r1, _08026E1C @ =gBattleCommunication
- movs r0, 0
- b _08026E24
- .align 2, 0
-_08026E10: .4byte gBattleMoveFlags
-_08026E14: .4byte gBankAttacker
-_08026E18: .4byte gBankTarget
-_08026E1C: .4byte gBattleCommunication
-_08026E20:
- ldr r1, _08026E50 @ =gBattleCommunication
- movs r0, 0x1
-_08026E24:
- strb r0, [r1, 0x5]
- ldr r3, _08026E54 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08026E40:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08026E50: .4byte gBattleCommunication
-_08026E54: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8026B78
-
- thumb_func_start atk94_gethalfcurrentenemyhp
-atk94_gethalfcurrentenemyhp: @ 8026E58
- push {lr}
- ldr r3, _08026E84 @ =gBattleMoveDamage
- ldr r2, _08026E88 @ =gBattleMons
- ldr r0, _08026E8C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- lsrs r0, 1
- str r0, [r3]
- cmp r0, 0
- bne _08026E76
- movs r0, 0x1
- str r0, [r3]
-_08026E76:
- ldr r1, _08026E90 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08026E84: .4byte gBattleMoveDamage
-_08026E88: .4byte gBattleMons
-_08026E8C: .4byte gBankTarget
-_08026E90: .4byte gBattlescriptCurrInstr
- thumb_func_end atk94_gethalfcurrentenemyhp
-
- thumb_func_start sub_8026E94
-sub_8026E94: @ 8026E94
- push {lr}
- ldr r2, _08026EB4 @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _08026EC0
- ldr r2, _08026EB8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08026EBC @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08026ED2
- .align 2, 0
-_08026EB4: .4byte gBattleWeather
-_08026EB8: .4byte gBattleMoveFlags
-_08026EBC: .4byte gBattleCommunication
-_08026EC0:
- movs r0, 0x8
- strh r0, [r2]
- ldr r1, _08026EE0 @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x5]
- ldr r0, _08026EE4 @ =gWishFutureKnock
- adds r0, 0x28
- movs r1, 0x5
- strb r1, [r0]
-_08026ED2:
- ldr r1, _08026EE8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08026EE0: .4byte gBattleCommunication
-_08026EE4: .4byte gWishFutureKnock
-_08026EE8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8026E94
-
- thumb_func_start sub_8026EEC
-sub_8026EEC: @ 8026EEC
- push {r4,r5,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08026F0A
- b _0802701C
-_08026F0A:
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08026F20
- b _0802701C
-_08026F20:
- ldr r2, _08026F94 @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x18
- ands r0, r1
- adds r4, r2, 0
- ldr r5, _08026F98 @ =gBankAttacker
- cmp r0, 0
- beq _08026FAE
- ldr r0, _08026F9C @ =gBattleMons
- ldrb r2, [r5]
- movs r1, 0x58
- muls r1, r2
- adds r3, r1, r0
- adds r0, r3, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x5
- beq _08026FA8
- cmp r0, 0x8
- beq _08026FA8
- cmp r0, 0x4
- beq _08026FA8
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x5
- beq _08026FA8
- cmp r0, 0x8
- beq _08026FA8
- cmp r0, 0x4
- beq _08026FA8
- adds r0, r3, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x8
- beq _08026FA8
- ldr r0, _08026FA0 @ =gStatuses3
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08026FA8
- movs r0, 0x80
- lsls r0, 11
- ands r1, r0
- cmp r1, 0
- bne _08026FA8
- ldr r1, _08026FA4 @ =gBattleMoveDamage
- ldrh r0, [r3, 0x2C]
- lsrs r0, 4
- str r0, [r1]
- cmp r0, 0
- bne _08026FAE
- movs r0, 0x1
- b _08026FAC
- .align 2, 0
-_08026F94: .4byte gBattleWeather
-_08026F98: .4byte gBankAttacker
-_08026F9C: .4byte gBattleMons
-_08026FA0: .4byte gStatuses3
-_08026FA4: .4byte gBattleMoveDamage
-_08026FA8:
- ldr r1, _08027004 @ =gBattleMoveDamage
- movs r0, 0
-_08026FAC:
- str r0, [r1]
-_08026FAE:
- ldrh r1, [r4]
- movs r4, 0x80
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08027024
- ldr r1, _08027008 @ =gBattleMons
- ldrb r3, [r5]
- movs r0, 0x58
- muls r0, r3
- adds r2, r0, r1
- adds r0, r2, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xF
- beq _08027010
- adds r0, r2, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xF
- beq _08027010
- ldr r0, _0802700C @ =gStatuses3
- lsls r1, r3, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r1, 0
- ands r0, r4
- cmp r0, 0
- bne _08027010
- movs r0, 0x80
- lsls r0, 11
- ands r1, r0
- cmp r1, 0
- bne _08027010
- ldr r1, _08027004 @ =gBattleMoveDamage
- ldrh r0, [r2, 0x2C]
- lsrs r0, 4
- str r0, [r1]
- cmp r0, 0
- bne _08027024
- movs r0, 0x1
- str r0, [r1]
- b _08027024
- .align 2, 0
-_08027004: .4byte gBattleMoveDamage
-_08027008: .4byte gBattleMons
-_0802700C: .4byte gStatuses3
-_08027010:
- ldr r1, _08027018 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
- b _08027024
- .align 2, 0
-_08027018: .4byte gBattleMoveDamage
-_0802701C:
- ldr r1, _08027050 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
- ldr r5, _08027054 @ =gBankAttacker
-_08027024:
- ldr r0, _08027058 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802705C @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0802703E
- ldr r1, _08027050 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
-_0802703E:
- ldr r1, _08027060 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08027050: .4byte gBattleMoveDamage
-_08027054: .4byte gBankAttacker
-_08027058: .4byte gAbsentBankFlags
-_0802705C: .4byte gBitTable
-_08027060: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8026EEC
-
- thumb_func_start sub_8027064
-sub_8027064: @ 8027064
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, _08027090 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0802709C
- ldr r1, _08027094 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08027098 @ =gPlayerParty
- b _080270AC
- .align 2, 0
-_08027090: .4byte gBankAttacker
-_08027094: .4byte gBattlePartyID
-_08027098: .4byte gPlayerParty
-_0802709C:
- ldr r1, _080270D0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080270D4 @ =gEnemyParty
-_080270AC:
- adds r5, r1, r0
- ldr r4, _080270D8 @ =gBankTarget
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080270E0
- ldr r1, _080270D0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080270DC @ =gPlayerParty
- b _080270F0
- .align 2, 0
-_080270D0: .4byte gBattlePartyID
-_080270D4: .4byte gEnemyParty
-_080270D8: .4byte gBankTarget
-_080270DC: .4byte gPlayerParty
-_080270E0:
- ldr r1, _0802714C @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08027150 @ =gEnemyParty
-_080270F0:
- adds r4, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- adds r0, r5, 0
- movs r1, 0
- bl GetMonData
- mov r9, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r7, r0, 0
- ldr r5, _08027154 @ =gBankTarget
- ldrb r0, [r5]
- movs r6, 0x58
- muls r0, r6
- ldr r1, _08027158 @ =gBattleMons
- adds r0, r1
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0xC
- bne _08027168
- ldr r1, _0802715C @ =gBattlescriptCurrInstr
- ldr r0, _08027160 @ =gUnknown_081D98C9
- str r0, [r1]
- ldr r0, _08027164 @ =gLastUsedAbility
- strb r2, [r0]
- ldrb r0, [r5]
- movs r1, 0xC
- bl RecordAbilityBattle
- b _0802721C
- .align 2, 0
-_0802714C: .4byte gBattlePartyID
-_08027150: .4byte gEnemyParty
-_08027154: .4byte gBankTarget
-_08027158: .4byte gBattleMons
-_0802715C: .4byte gBattlescriptCurrInstr
-_08027160: .4byte gUnknown_081D98C9
-_08027164: .4byte gLastUsedAbility
-_08027168:
- mov r0, r10
- mov r1, r9
- bl GetGenderFromSpeciesAndPersonality
- adds r4, r0, 0
- mov r0, r8
- adds r1, r7, 0
- bl GetGenderFromSpeciesAndPersonality
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _080271CA
- ldr r1, _080271E8 @ =gStatuses3
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080271EC @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _080271CA
- adds r0, r2, 0
- muls r0, r6
- ldr r4, _080271F0 @ =gBattleMons
- adds r4, 0x50
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0xF0
- lsls r1, 12
- ands r0, r1
- cmp r0, 0
- bne _080271CA
- mov r0, r10
- mov r1, r9
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080271CA
- mov r0, r8
- adds r1, r7, 0
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080271F8
-_080271CA:
- ldr r3, _080271F4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802721C
- .align 2, 0
-_080271E8: .4byte gStatuses3
-_080271EC: .4byte 0x000400c0
-_080271F0: .4byte gBattleMons
-_080271F4: .4byte gBattlescriptCurrInstr
-_080271F8:
- ldrb r0, [r5]
- adds r2, r0, 0
- muls r2, r6
- adds r2, r4
- ldr r1, _0802722C @ =gBitTable
- ldr r0, _08027230 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 16
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08027234 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802721C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802722C: .4byte gBitTable
-_08027230: .4byte gBankAttacker
-_08027234: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027064
-
- thumb_func_start sub_8027238
-sub_8027238: @ 8027238
- push {r4-r7,lr}
- ldr r0, _08027280 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08027324
- ldr r5, _08027284 @ =gBattlescriptCurrInstr
- ldr r1, [r5]
- ldrb r0, [r1, 0x1]
- cmp r0, 0x4
- beq _08027290
- bl sub_8015150
- ldr r4, _08027288 @ =gActiveBank
- strb r0, [r4]
- ldr r3, _0802728C @ =gBattleMons
- ldrb r1, [r4]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r1, [r0]
- adds r3, 0x50
- adds r2, r3
- ldr r2, [r2]
- movs r0, 0
- bl EmitStatusIconUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- b _08027324
- .align 2, 0
-_08027280: .4byte gBattleExecBuffer
-_08027284: .4byte gBattlescriptCurrInstr
-_08027288: .4byte gActiveBank
-_0802728C: .4byte gBattleMons
-_08027290:
- ldr r4, _0802732C @ =gActiveBank
- ldr r5, _08027330 @ =gBankAttacker
- ldrb r0, [r5]
- strb r0, [r4]
- ldr r6, _08027334 @ =gAbsentBankFlags
- ldrb r1, [r6]
- ldr r7, _08027338 @ =gBitTable
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r7
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080272CC
- ldr r3, _0802733C @ =gBattleMons
- movs r0, 0x58
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r1, [r0]
- adds r3, 0x50
- adds r2, r3
- ldr r2, [r2]
- movs r0, 0
- bl EmitStatusIconUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_080272CC:
- ldr r0, _08027340 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802731C
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- strb r0, [r4]
- ldrb r1, [r6]
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r7
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802731C
- ldr r3, _0802733C @ =gBattleMons
- movs r0, 0x58
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r1, [r0]
- adds r3, 0x50
- adds r2, r3
- ldr r2, [r2]
- movs r0, 0
- bl EmitStatusIconUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0802731C:
- ldr r1, _08027344 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08027324:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802732C: .4byte gActiveBank
-_08027330: .4byte gBankAttacker
-_08027334: .4byte gAbsentBankFlags
-_08027338: .4byte gBitTable
-_0802733C: .4byte gBattleMons
-_08027340: .4byte gBattleTypeFlags
-_08027344: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027238
-
- thumb_func_start sub_8027348
-sub_8027348: @ 8027348
- push {r4-r6,lr}
- ldr r6, _08027378 @ =gSideTimer
- ldr r4, _0802737C @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- movs r5, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- beq _08027388
- ldr r2, _08027380 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08027384 @ =gBattleCommunication
- strb r5, [r0, 0x5]
- b _080273C0
- .align 2, 0
-_08027378: .4byte gSideTimer
-_0802737C: .4byte gBankAttacker
-_08027380: .4byte gBattleMoveFlags
-_08027384: .4byte gBattleCommunication
-_08027388:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x5
- strb r1, [r0, 0x2]
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r2, _080273D0 @ =gSideAffecting
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r3, 0x80
- lsls r3, 1
- adds r0, r3, 0
- movs r3, 0
- orrs r0, r2
- strh r0, [r1]
- ldr r0, _080273D4 @ =gBattleCommunication
- strb r3, [r0, 0x5]
-_080273C0:
- ldr r1, _080273D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080273D0: .4byte gSideAffecting
-_080273D4: .4byte gBattleCommunication
-_080273D8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027348
-
- thumb_func_start atk9A_setincreasedcriticalchance
-atk9A_setincreasedcriticalchance: @ 80273DC
- push {lr}
- ldr r1, _0802740C @ =gBattleMons
- ldr r0, _08027410 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r3, 0x80
- lsls r3, 13
- adds r2, r1, 0
- ands r2, r3
- cmp r2, 0
- beq _0802741C
- ldr r2, _08027414 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08027418 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08027424
- .align 2, 0
-_0802740C: .4byte gBattleMons
-_08027410: .4byte gBankAttacker
-_08027414: .4byte gBattleMoveFlags
-_08027418: .4byte gBattleCommunication
-_0802741C:
- orrs r1, r3
- str r1, [r0]
- ldr r0, _08027430 @ =gBattleCommunication
- strb r2, [r0, 0x5]
-_08027424:
- ldr r1, _08027434 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08027430: .4byte gBattleCommunication
-_08027434: .4byte gBattlescriptCurrInstr
- thumb_func_end atk9A_setincreasedcriticalchance
-
- thumb_func_start atk9B_transformdataexecution
-atk9B_transformdataexecution: @ 8027438
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, _08027490 @ =gUnknown_02024BE8
- ldr r2, _08027494 @ =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08027498 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r7, _0802749C @ =gBattleMons
- ldr r0, _080274A0 @ =gBankTarget
- mov r12, r0
- ldrb r1, [r0]
- movs r6, 0x58
- adds r0, r1, 0
- muls r0, r6
- adds r5, r7, 0
- adds r5, 0x50
- adds r0, r5
- ldr r0, [r0]
- movs r4, 0x80
- lsls r4, 14
- ands r0, r4
- cmp r0, 0
- bne _0802747E
- ldr r0, _080274A4 @ =gStatuses3
- lsls r1, 2
- adds r1, r0
- ldr r2, [r1]
- ldr r0, _080274A8 @ =0x000400c0
- ands r2, r0
- cmp r2, 0
- beq _080274B4
-_0802747E:
- ldr r2, _080274AC @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080274B0 @ =gBattleCommunication
- movs r0, 0x1
- b _080275C8
- .align 2, 0
-_08027490: .4byte gUnknown_02024BE8
-_08027494: .4byte 0x0000ffff
-_08027498: .4byte gBattlescriptCurrInstr
-_0802749C: .4byte gBattleMons
-_080274A0: .4byte gBankTarget
-_080274A4: .4byte gStatuses3
-_080274A8: .4byte 0x000400c0
-_080274AC: .4byte gBattleMoveFlags
-_080274B0: .4byte gBattleCommunication
-_080274B4:
- ldr r3, _08027588 @ =gBankAttacker
- ldrb r0, [r3]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r5
- ldr r0, [r1]
- orrs r0, r4
- str r0, [r1]
- ldr r4, _0802758C @ =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x4]
- ldrb r0, [r3]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0xB]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0xB]
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- mov r2, r12
- ldrb r1, [r2]
- muls r1, r6
- adds r2, r7, 0
- adds r2, 0x48
- adds r1, r2
- ldr r1, [r1]
- str r1, [r0]
- ldrb r0, [r3]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x18]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x18]
- ldr r1, _08027590 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- mov r2, r12
- ldrb r0, [r2]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r2]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldrb r0, [r3]
- muls r0, r6
- adds r5, r0, r7
- ldrb r0, [r2]
- muls r0, r6
- adds r2, r0, r7
- movs r4, 0
- adds r6, r3, 0
- ldr r0, _08027594 @ =gActiveBank
- mov r8, r0
-_0802754C:
- adds r0, r5, r4
- adds r1, r2, r4
- ldrb r1, [r1]
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x23
- bls _0802754C
- movs r4, 0
- ldr r7, _08027598 @ =gBattleMoves
- ldr r3, _0802759C @ =gUnknown_02024A8C
- adds r5, r3, 0
- adds r5, 0x18
-_08027564:
- lsls r1, r4, 1
- ldrb r2, [r6]
- movs r0, 0x58
- muls r2, r0
- adds r1, r2
- adds r1, r3
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r1, [r0, 0x4]
- cmp r1, 0x4
- bhi _080275A0
- adds r0, r4, r2
- adds r0, r5
- b _080275A6
- .align 2, 0
-_08027588: .4byte gBankAttacker
-_0802758C: .4byte gDisableStructs
-_08027590: .4byte gBattleTextBuff1
-_08027594: .4byte gActiveBank
-_08027598: .4byte gBattleMoves
-_0802759C: .4byte gUnknown_02024A8C
-_080275A0:
- adds r0, r4, r2
- adds r0, r5
- movs r1, 0x5
-_080275A6:
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x3
- ble _08027564
- ldrb r0, [r6]
- mov r1, r8
- strb r0, [r1]
- movs r0, 0
- movs r1, 0x2
- bl EmitResetActionMoveSelection
- mov r2, r8
- ldrb r0, [r2]
- bl MarkBufferBankForExecution
- ldr r1, _080275D4 @ =gBattleCommunication
- movs r0, 0
-_080275C8:
- strb r0, [r1, 0x5]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080275D4: .4byte gBattleCommunication
- thumb_func_end atk9B_transformdataexecution
-
- thumb_func_start sub_80275D8
-sub_80275D8: @ 80275D8
- push {r4-r7,lr}
- ldr r7, _08027608 @ =gBattleMons
- ldr r6, _0802760C @ =gBankAttacker
- ldrb r0, [r6]
- movs r5, 0x58
- muls r0, r5
- adds r3, r0, r7
- ldrh r0, [r3, 0x2C]
- lsrs r1, r0, 2
- adds r2, r1, 0
- cmp r1, 0
- bne _080275F2
- movs r2, 0x1
-_080275F2:
- ldrh r0, [r3, 0x28]
- cmp r0, r2
- bhi _08027618
- ldr r1, _08027610 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
- ldr r1, _08027614 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _0802766C
- .align 2, 0
-_08027608: .4byte gBattleMons
-_0802760C: .4byte gBankAttacker
-_08027610: .4byte gBattleMoveDamage
-_08027614: .4byte gBattleCommunication
-_08027618:
- ldr r4, _0802767C @ =gBattleMoveDamage
- str r1, [r4]
- cmp r1, 0
- bne _08027624
- movs r0, 0x1
- str r0, [r4]
-_08027624:
- ldrb r0, [r6]
- adds r2, r0, 0
- muls r2, r5
- adds r3, r7, 0
- adds r3, 0x50
- adds r2, r3
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 17
- orrs r0, r1
- str r0, [r2]
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r3
- ldr r0, [r1]
- ldr r2, _08027680 @ =0xffff1fff
- ands r0, r2
- str r0, [r1]
- ldr r2, _08027684 @ =gDisableStructs
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, [r4]
- movs r2, 0
- strb r1, [r0, 0xA]
- ldr r0, _08027688 @ =gBattleCommunication
- strb r2, [r0, 0x5]
- ldr r2, _0802768C @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 1
- orrs r0, r1
- str r0, [r2]
-_0802766C:
- ldr r1, _08027690 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802767C: .4byte gBattleMoveDamage
-_08027680: .4byte 0xffff1fff
-_08027684: .4byte gDisableStructs
-_08027688: .4byte gBattleCommunication
-_0802768C: .4byte gHitMarker
-_08027690: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80275D8
-
- thumb_func_start sub_8027694
-sub_8027694: @ 8027694
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r3, 0
- ldr r0, _080276D4 @ =gUnknown_081FACFE
- ldrh r1, [r0]
- ldr r4, _080276D8 @ =0x0000fffe
- adds r5, r0, 0
- cmp r1, r4
- beq _080276BC
- cmp r1, r2
- beq _080276BC
- adds r1, r5, 0
-_080276AE:
- adds r1, 0x2
- adds r3, 0x1
- ldrh r0, [r1]
- cmp r0, r4
- beq _080276BC
- cmp r0, r2
- bne _080276AE
-_080276BC:
- lsls r0, r3, 1
- adds r0, r5
- ldrh r1, [r0]
- ldr r0, _080276D8 @ =0x0000fffe
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080276D4: .4byte gUnknown_081FACFE
-_080276D8: .4byte 0x0000fffe
- thumb_func_end sub_8027694
-
- thumb_func_start atk9D_copyattack
-atk9D_copyattack: @ 80276DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _08027754 @ =gUnknown_02024BE8
- ldr r1, _08027758 @ =0x0000ffff
- adds r7, r1, 0
- strh r7, [r0]
- ldr r5, _0802775C @ =gLastUsedMove
- ldr r6, _08027760 @ =gBankTarget
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- bl sub_8027694
- lsls r0, 24
- cmp r0, 0
- bne _08027736
- ldr r3, _08027764 @ =gBattleMons
- ldr r2, _08027768 @ =gBankAttacker
- ldrb r1, [r2]
- movs r0, 0x58
- adds r4, r1, 0
- muls r4, r0
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r4, r0
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 14
- ands r1, r0
- mov r12, r3
- mov r9, r2
- cmp r1, 0
- bne _08027736
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- cmp r1, 0
- beq _08027736
- cmp r1, r7
- bne _08027770
-_08027736:
- ldr r3, _0802776C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _080278A8
- .align 2, 0
-_08027754: .4byte gUnknown_02024BE8
-_08027758: .4byte 0x0000ffff
-_0802775C: .4byte gLastUsedMove
-_08027760: .4byte gBankTarget
-_08027764: .4byte gBattleMons
-_08027768: .4byte gBankAttacker
-_0802776C: .4byte gBattlescriptCurrInstr
-_08027770:
- movs r2, 0
- mov r3, r12
- adds r3, 0xC
- adds r0, r4, r3
- ldrh r0, [r0]
- ldr r4, _08027800 @ =gBattlescriptCurrInstr
- mov r10, r4
- cmp r0, r1
- beq _080277AA
- mov r8, r3
- adds r7, r5, 0
- adds r5, r6, 0
- mov r4, r9
- movs r3, 0x58
-_0802778C:
- adds r2, 0x1
- cmp r2, 0x3
- bgt _080277AA
- lsls r1, r2, 1
- ldrb r0, [r4]
- muls r0, r3
- adds r1, r0
- add r1, r8
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r7
- ldrh r1, [r1]
- ldrh r0, [r0]
- cmp r1, r0
- bne _0802778C
-_080277AA:
- cmp r2, 0x4
- bne _0802788C
- ldr r5, _08027804 @ =gCurrMovePos
- ldrb r1, [r5]
- lsls r1, 1
- mov r2, r9
- ldrb r0, [r2]
- movs r6, 0x58
- muls r0, r6
- adds r1, r0
- mov r0, r12
- adds r0, 0xC
- adds r1, r0
- ldr r2, _08027808 @ =gLastUsedMove
- ldr r3, _0802780C @ =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r4, _08027810 @ =gBattleMoves
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r4, [r0, 0x4]
- cmp r4, 0x4
- bhi _08027814
- mov r1, r9
- ldrb r0, [r1]
- muls r0, r6
- ldrb r1, [r5]
- adds r0, r1
- mov r1, r12
- adds r1, 0x24
- adds r0, r1
- strb r4, [r0]
- b _08027828
- .align 2, 0
-_08027800: .4byte gBattlescriptCurrInstr
-_08027804: .4byte gCurrMovePos
-_08027808: .4byte gLastUsedMove
-_0802780C: .4byte gBankTarget
-_08027810: .4byte gBattleMoves
-_08027814:
- mov r4, r9
- ldrb r0, [r4]
- muls r0, r6
- ldrb r1, [r5]
- adds r0, r1
- mov r1, r12
- adds r1, 0x24
- adds r0, r1
- movs r1, 0x5
- strb r1, [r0]
-_08027828:
- ldr r1, _08027880 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08027884 @ =gDisableStructs
- mov r2, r9
- ldrb r0, [r2]
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r4, [r2, 0x18]
- lsrs r3, r4, 4
- ldr r1, _08027888 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- orrs r1, r3
- lsls r1, 4
- movs r0, 0xF
- ands r0, r4
- orrs r0, r1
- strb r0, [r2, 0x18]
- mov r4, r10
- ldr r0, [r4]
- adds r0, 0x5
- str r0, [r4]
- b _080278A8
- .align 2, 0
-_08027880: .4byte gBattleTextBuff1
-_08027884: .4byte gDisableStructs
-_08027888: .4byte gBitTable
-_0802788C:
- mov r0, r10
- ldr r2, [r0]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- mov r2, r10
- str r1, [r2]
-_080278A8:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk9D_copyattack
-
- thumb_func_start sub_80278B8
-sub_80278B8: @ 80278B8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, _08027938 @ =gCurrentMove
- movs r6, 0xB1
- lsls r6, 1
- ldr r5, _0802793C @ =gUnknown_081FACFE
- ldr r0, _08027940 @ =gBattlescriptCurrInstr
- mov r8, r0
-_080278CA:
- bl Random
- ldr r2, _08027944 @ =0x000001ff
- adds r1, r2, 0
- ands r0, r1
- adds r0, 0x1
- strh r0, [r7]
- cmp r0, r6
- bhi _080278CA
- movs r0, 0x3
-_080278DE:
- subs r0, 0x1
- cmp r0, 0
- bge _080278DE
- ldr r4, _08027938 @ =gCurrentMove
- ldrh r2, [r4]
- ldr r3, _08027948 @ =0x0000ffff
- subs r0, r5, 0x2
-_080278EC:
- adds r0, 0x2
- ldrh r1, [r0]
- cmp r1, r2
- beq _080278F8
- cmp r1, r3
- bne _080278EC
-_080278F8:
- ldr r0, _08027948 @ =0x0000ffff
- cmp r1, r0
- bne _080278CA
- ldr r2, _0802794C @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _08027950 @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r3, _08027954 @ =gUnknown_081D6BBC
- ldr r2, _08027958 @ =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- mov r1, r8
- str r0, [r1]
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _0802795C @ =gBankTarget
- strb r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08027938: .4byte gCurrentMove
-_0802793C: .4byte gUnknown_081FACFE
-_08027940: .4byte gBattlescriptCurrInstr
-_08027944: .4byte 0x000001ff
-_08027948: .4byte 0x0000ffff
-_0802794C: .4byte gHitMarker
-_08027950: .4byte 0xfffffbff
-_08027954: .4byte gUnknown_081D6BBC
-_08027958: .4byte gBattleMoves
-_0802795C: .4byte gBankTarget
- thumb_func_end sub_80278B8
-
- thumb_func_start sub_8027960
-sub_8027960: @ 8027960
- ldr r3, _08027980 @ =gBattleMoveDamage
- ldr r2, _08027984 @ =gBattleMons
- ldr r0, _08027988 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r0, [r0]
- str r0, [r3]
- ldr r1, _0802798C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08027980: .4byte gBattleMoveDamage
-_08027984: .4byte gBattleMons
-_08027988: .4byte gBankAttacker
-_0802798C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027960
-
- thumb_func_start atkA0_psywavedamageeffect
-atkA0_psywavedamageeffect: @ 8027990
- push {r4,lr}
- movs r4, 0xF
-_08027994:
- bl Random
- adds r3, r4, 0
- ands r3, r0
- cmp r3, 0xA
- bgt _08027994
- lsls r0, r3, 2
- adds r0, r3
- lsls r3, r0, 1
- ldr r4, _080279D4 @ =gBattleMoveDamage
- ldr r2, _080279D8 @ =gBattleMons
- ldr r0, _080279DC @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r1, [r0]
- adds r0, r3, 0
- adds r0, 0x32
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- ldr r1, _080279E0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080279D4: .4byte gBattleMoveDamage
-_080279D8: .4byte gBattleMons
-_080279DC: .4byte gBankAttacker
-_080279E0: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA0_psywavedamageeffect
-
- thumb_func_start atkA1_counterdamagecalculator
-atkA1_counterdamagecalculator: @ 80279E4
- push {r4-r6,lr}
- ldr r4, _08027A54 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, _08027A58 @ =gProtectStructs
- ldrb r0, [r4]
- lsls r0, 4
- adds r0, r5
- ldrb r0, [r0, 0xC]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r0, r5, 0x4
- adds r0, r1, r0
- ldr r3, [r0]
- cmp r3, 0
- beq _08027A98
- cmp r6, r2
- beq _08027A98
- ldr r6, _08027A5C @ =gBattleMons
- adds r0, r1, r5
- ldrb r0, [r0, 0xC]
- movs r4, 0x58
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08027A98
- ldr r1, _08027A60 @ =gBattleMoveDamage
- lsls r0, r3, 1
- str r0, [r1]
- ldr r1, _08027A64 @ =gSideTimer
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _08027A6C
- ldrb r1, [r1, 0x9]
- adds r0, r1, 0
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08027A6C
- ldr r0, _08027A68 @ =gBankTarget
- strb r1, [r0]
- b _08027A7C
- .align 2, 0
-_08027A54: .4byte gBankAttacker
-_08027A58: .4byte gProtectStructs
-_08027A5C: .4byte gBattleMons
-_08027A60: .4byte gBattleMoveDamage
-_08027A64: .4byte gSideTimer
-_08027A68: .4byte gBankTarget
-_08027A6C:
- ldr r2, _08027A88 @ =gBankTarget
- ldr r1, _08027A8C @ =gProtectStructs
- ldr r0, _08027A90 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0xC]
- strb r0, [r2]
-_08027A7C:
- ldr r1, _08027A94 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027AC8
- .align 2, 0
-_08027A88: .4byte gBankTarget
-_08027A8C: .4byte gProtectStructs
-_08027A90: .4byte gBankAttacker
-_08027A94: .4byte gBattlescriptCurrInstr
-_08027A98:
- ldr r2, _08027AD0 @ =gSpecialStatuses
- ldr r0, _08027AD4 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r3, _08027AD8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027AC8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08027AD0: .4byte gSpecialStatuses
-_08027AD4: .4byte gBankAttacker
-_08027AD8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA1_counterdamagecalculator
-
- thumb_func_start atkA2_mirrorcoatdamagecalculator
-atkA2_mirrorcoatdamagecalculator: @ 8027ADC
- push {r4-r6,lr}
- ldr r4, _08027B4C @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, _08027B50 @ =gProtectStructs
- ldrb r0, [r4]
- lsls r0, 4
- adds r0, r5
- ldrb r0, [r0, 0xD]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r0, r5, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r3, [r0]
- cmp r3, 0
- beq _08027B90
- cmp r6, r2
- beq _08027B90
- ldr r6, _08027B54 @ =gBattleMons
- adds r0, r1, r5
- ldrb r0, [r0, 0xD]
- movs r4, 0x58
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08027B90
- ldr r1, _08027B58 @ =gBattleMoveDamage
- lsls r0, r3, 1
- str r0, [r1]
- ldr r1, _08027B5C @ =gSideTimer
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _08027B64
- ldrb r1, [r1, 0x9]
- adds r0, r1, 0
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08027B64
- ldr r0, _08027B60 @ =gBankTarget
- strb r1, [r0]
- b _08027B74
- .align 2, 0
-_08027B4C: .4byte gBankAttacker
-_08027B50: .4byte gProtectStructs
-_08027B54: .4byte gBattleMons
-_08027B58: .4byte gBattleMoveDamage
-_08027B5C: .4byte gSideTimer
-_08027B60: .4byte gBankTarget
-_08027B64:
- ldr r2, _08027B80 @ =gBankTarget
- ldr r1, _08027B84 @ =gProtectStructs
- ldr r0, _08027B88 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0xD]
- strb r0, [r2]
-_08027B74:
- ldr r1, _08027B8C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027BC0
- .align 2, 0
-_08027B80: .4byte gBankTarget
-_08027B84: .4byte gProtectStructs
-_08027B88: .4byte gBankAttacker
-_08027B8C: .4byte gBattlescriptCurrInstr
-_08027B90:
- ldr r2, _08027BC8 @ =gSpecialStatuses
- ldr r0, _08027BCC @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r3, _08027BD0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027BC0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08027BC8: .4byte gSpecialStatuses
-_08027BCC: .4byte gBankAttacker
-_08027BD0: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA2_mirrorcoatdamagecalculator
-
- thumb_func_start atkA3_disablelastusedattack
-atkA3_disablelastusedattack: @ 8027BD4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r4, 0
- ldr r2, _08027CD4 @ =gBattleMons
- ldr r3, _08027CD8 @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r7, r2, 0
- adds r7, 0xC
- adds r0, r7
- ldr r5, _08027CDC @ =gLastUsedMove
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r0]
- mov r9, r2
- adds r6, r3, 0
- ldr r2, _08027CE0 @ =gDisableStructs
- mov r8, r2
- ldrh r1, [r1]
- cmp r0, r1
- beq _08027C28
- mov r12, r6
- movs r3, 0x58
-_08027C08:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _08027C28
- lsls r2, r4, 1
- mov r0, r12
- ldrb r1, [r0]
- adds r0, r1, 0
- muls r0, r3
- adds r2, r0
- adds r2, r7
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r2]
- ldrh r1, [r1]
- cmp r0, r1
- bne _08027C08
-_08027C28:
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- bne _08027CEC
- cmp r4, 0x4
- beq _08027CEC
- movs r5, 0x58
- adds r0, r1, 0
- muls r0, r5
- adds r0, r4, r0
- mov r1, r9
- adds r1, 0x24
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08027CEC
- ldr r1, _08027CE4 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- lsls r2, r4, 1
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r2, r0
- mov r3, r9
- adds r3, 0xC
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r2, r0
- adds r0, r3
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- muls r1, r5
- adds r2, r1
- adds r2, r3
- ldrh r1, [r2]
- strh r1, [r0, 0x4]
- bl Random
- ldrb r2, [r6]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- add r1, r8
- movs r2, 0x3
- ands r2, r0
- adds r2, 0x2
- ldrb r3, [r1, 0xB]
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xB]
- ldrb r0, [r6]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r3, [r1, 0xB]
- lsls r2, r3, 28
- lsrs r2, 24
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xB]
- ldr r1, _08027CE8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027D06
- .align 2, 0
-_08027CD4: .4byte gBattleMons
-_08027CD8: .4byte gBankTarget
-_08027CDC: .4byte gLastUsedMove
-_08027CE0: .4byte gDisableStructs
-_08027CE4: .4byte gBattleTextBuff1
-_08027CE8: .4byte gBattlescriptCurrInstr
-_08027CEC:
- ldr r3, _08027D14 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027D06:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08027D14: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA3_disablelastusedattack
-
- thumb_func_start atkA4_setencore
-atkA4_setencore: @ 8027D18
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r5, 0
- ldr r3, _08027E0C @ =gBattleMons
- ldr r4, _08027E10 @ =gBankTarget
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r6, r3, 0
- adds r6, 0xC
- adds r0, r6
- ldr r2, _08027E14 @ =gLastUsedMove
- lsls r1, 1
- adds r1, r2
- ldrh r0, [r0]
- mov r10, r3
- mov r8, r2
- ldr r2, _08027E18 @ =gDisableStructs
- mov r9, r2
- ldrh r1, [r1]
- cmp r0, r1
- beq _08027D72
- mov r12, r4
- adds r7, r6, 0
- mov r6, r8
- movs r3, 0x58
-_08027D52:
- adds r5, 0x1
- cmp r5, 0x3
- bgt _08027D72
- lsls r2, r5, 1
- mov r0, r12
- ldrb r1, [r0]
- adds r0, r1, 0
- muls r0, r3
- adds r2, r0
- adds r2, r7
- lsls r1, 1
- adds r1, r6
- ldrh r0, [r2]
- ldrh r1, [r1]
- cmp r0, r1
- bne _08027D52
-_08027D72:
- ldrb r0, [r4]
- lsls r0, 1
- add r0, r8
- ldrh r2, [r0]
- cmp r2, 0xA5
- beq _08027D86
- cmp r2, 0xE3
- beq _08027D86
- cmp r2, 0x77
- bne _08027D88
-_08027D86:
- movs r5, 0x4
-_08027D88:
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r2, r9
- adds r3, r0, r2
- ldrh r0, [r3, 0x6]
- cmp r0, 0
- bne _08027E20
- cmp r5, 0x4
- beq _08027E20
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- adds r0, r5, r2
- mov r1, r10
- adds r1, 0x24
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08027E20
- lsls r0, r5, 1
- adds r0, r2
- subs r1, 0x18
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r3, 0x6]
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- strb r5, [r0, 0xC]
- bl Random
- ldrb r2, [r4]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- add r1, r9
- movs r2, 0x3
- ands r2, r0
- adds r2, 0x3
- ldrb r3, [r1, 0xE]
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xE]
- ldrb r0, [r4]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r9
- ldrb r3, [r1, 0xE]
- lsls r2, r3, 28
- lsrs r2, 24
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xE]
- ldr r1, _08027E1C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027E3A
- .align 2, 0
-_08027E0C: .4byte gBattleMons
-_08027E10: .4byte gBankTarget
-_08027E14: .4byte gLastUsedMove
-_08027E18: .4byte gDisableStructs
-_08027E1C: .4byte gBattlescriptCurrInstr
-_08027E20:
- ldr r3, _08027E48 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027E3A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08027E48: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA4_setencore
-
- thumb_func_start sub_8027E4C
-sub_8027E4C: @ 8027E4C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r7, _08027EEC @ =gBattleMons
- ldr r0, _08027EF0 @ =gBankTarget
- mov r8, r0
- ldrb r0, [r0]
- movs r6, 0x58
- adds r2, r0, 0
- muls r2, r6
- adds r0, r7, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- bne _08027F18
- ldr r1, _08027EF4 @ =gBankAttacker
- mov r12, r1
- ldrb r0, [r1]
- muls r0, r6
- adds r0, r7
- ldrh r4, [r0, 0x28]
- adds r0, r2, r7
- ldrh r2, [r0, 0x28]
- adds r4, r2
- asrs r4, 1
- ldr r5, _08027EF8 @ =gBattleMoveDamage
- mov r9, r5
- subs r2, r4
- str r2, [r5]
- ldr r3, _08027EFC @ =0x02000000
- ldr r1, _08027F00 @ =0x00016014
- adds r0, r3, r1
- strb r2, [r0]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r2
- asrs r0, 8
- ldr r5, _08027F04 @ =0x00016015
- adds r1, r3, r5
- strb r0, [r1]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r2
- asrs r0, 16
- adds r5, 0x1
- adds r1, r3, r5
- strb r0, [r1]
- lsrs r2, 24
- ldr r0, _08027F08 @ =0x00016017
- adds r3, r0
- strb r2, [r3]
- mov r1, r12
- ldrb r0, [r1]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0, 0x28]
- subs r0, r4
- mov r5, r9
- str r0, [r5]
- ldr r2, _08027F0C @ =gSpecialStatuses
- mov r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x4
- adds r0, r2
- ldr r1, _08027F10 @ =0x0000ffff
- str r1, [r0]
- ldr r1, _08027F14 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027F32
- .align 2, 0
-_08027EEC: .4byte gBattleMons
-_08027EF0: .4byte gBankTarget
-_08027EF4: .4byte gBankAttacker
-_08027EF8: .4byte gBattleMoveDamage
-_08027EFC: .4byte 0x02000000
-_08027F00: .4byte 0x00016014
-_08027F04: .4byte 0x00016015
-_08027F08: .4byte 0x00016017
-_08027F0C: .4byte gSpecialStatuses
-_08027F10: .4byte 0x0000ffff
-_08027F14: .4byte gBattlescriptCurrInstr
-_08027F18:
- ldr r3, _08027F40 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027F32:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08027F40: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027E4C
-
- thumb_func_start sub_8027F44
-sub_8027F44: @ 8027F44
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r1, _08027FA8 @ =gMoveHitWith
- ldr r4, _08027FAC @ =gBankAttacker
- ldrb r0, [r4]
- lsls r0, 1
- adds r2, r0, r1
- ldrh r1, [r2]
- cmp r1, 0
- beq _08027F8C
- ldr r0, _08027FB0 @ =0x0000ffff
- cmp r1, r0
- beq _08027F8C
- ldrh r0, [r2]
- bl sub_8028350
- lsls r0, 24
- cmp r0, 0
- beq _08028024
- ldr r2, _08027FB4 @ =gProtectStructs
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08028024
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08028024
-_08027F8C:
- ldr r3, _08027FB8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08028110
- .align 2, 0
-_08027FA8: .4byte gMoveHitWith
-_08027FAC: .4byte gBankAttacker
-_08027FB0: .4byte 0x0000ffff
-_08027FB4: .4byte gProtectStructs
-_08027FB8: .4byte gBattlescriptCurrInstr
-_08027FBC:
- mov r0, r12
- strb r5, [r0]
- mov r1, r10
- ldrb r0, [r1]
- muls r0, r2
- adds r0, r7
- adds r0, 0x22
- strb r5, [r0]
- ldr r1, _08027FE0 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- strb r5, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r1, _08027FE4 @ =gBattlescriptCurrInstr
- b _08028012
- .align 2, 0
-_08027FE0: .4byte gBattleTextBuff1
-_08027FE4: .4byte gBattlescriptCurrInstr
-_08027FE8:
- mov r0, r8
- adds r0, 0x1
- adds r0, r3
- ldrb r2, [r0]
- strb r2, [r4]
- mov r4, r10
- ldrb r0, [r4]
- muls r0, r6
- ldr r7, _0802801C @ =gBattleMons
- adds r0, r7
- adds r0, 0x22
- strb r2, [r0]
- ldr r1, _08028020 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- strb r2, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- mov r1, r12
-_08028012:
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08028110
- .align 2, 0
-_0802801C: .4byte gBattleMons
-_08028020: .4byte gBattleTextBuff1
-_08028024:
- movs r4, 0
- mov r8, r4
- movs r7, 0x7F
- mov r9, r7
-_0802802C:
- bl Random
- mov r4, r9
- ands r4, r0
- cmp r4, 0x70
- bhi _0802802C
- lsls r0, r4, 1
- adds r4, r0, r4
- ldr r6, _08028120 @ =gTypeEffectiveness
- adds r3, r4, r6
- ldr r1, _08028124 @ =gUnknown_02024C44
- ldr r2, _08028128 @ =gBankAttacker
- ldrb r5, [r2]
- lsls r0, r5, 1
- adds r0, r1
- ldrb r1, [r3]
- mov r10, r2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08028088
- adds r0, r4, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _08028088
- ldr r7, _0802812C @ =gBattleMons
- movs r2, 0x58
- adds r0, r5, 0
- muls r0, r2
- adds r3, r0, r7
- movs r0, 0x21
- adds r0, r3
- mov r12, r0
- adds r0, r4, 0x1
- adds r0, r6
- ldrb r5, [r0]
- mov r1, r12
- ldrb r0, [r1]
- adds r1, r5, 0
- cmp r0, r1
- beq _08028088
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- bne _08027FBC
-_08028088:
- movs r7, 0x1
- add r8, r7
- ldr r0, _08028130 @ =0x000003e7
- cmp r8, r0
- ble _0802802C
- movs r0, 0
- mov r8, r0
- ldr r1, _08028134 @ =gBattlescriptCurrInstr
- mov r12, r1
- ldr r3, _08028120 @ =gTypeEffectiveness
- adds r0, r4, 0x1
- adds r0, r3
- mov r9, r0
- adds r5, r3, 0
-_080280A4:
- ldrb r1, [r5]
- cmp r1, 0xFF
- bgt _080280AE
- cmp r1, 0xFE
- bge _080280E8
-_080280AE:
- mov r4, r10
- ldrb r2, [r4]
- lsls r0, r2, 1
- ldr r7, _08028124 @ =gUnknown_02024C44
- adds r0, r7
- ldrh r0, [r0]
- cmp r1, r0
- bne _080280E8
- ldrb r0, [r5, 0x2]
- cmp r0, 0x5
- bhi _080280E8
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- ldr r1, _0802812C @ =gBattleMons
- adds r2, r0, r1
- adds r4, r2, 0
- adds r4, 0x21
- ldrb r0, [r4]
- mov r7, r9
- ldrb r1, [r7]
- cmp r0, r1
- beq _080280E8
- adds r0, r2, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- beq _080280E8
- b _08027FE8
-_080280E8:
- adds r5, 0x3
- movs r0, 0x3
- add r8, r0
- ldr r0, _08028138 @ =0x0000014f
- cmp r8, r0
- bls _080280A4
- mov r1, r12
- ldr r2, [r1]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- mov r4, r12
- str r1, [r4]
-_08028110:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028120: .4byte gTypeEffectiveness
-_08028124: .4byte gUnknown_02024C44
-_08028128: .4byte gBankAttacker
-_0802812C: .4byte gBattleMons
-_08028130: .4byte 0x000003e7
-_08028134: .4byte gBattlescriptCurrInstr
-_08028138: .4byte 0x0000014f
- thumb_func_end sub_8027F44
-
- thumb_func_start atkA7_setalwayshitflag
-atkA7_setalwayshitflag: @ 802813C
- push {r4,lr}
- ldr r4, _08028180 @ =gStatuses3
- ldr r3, _08028184 @ =gBankTarget
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r4
- ldr r0, [r1]
- movs r2, 0x19
- negs r2, r2
- ands r0, r2
- str r0, [r1]
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r4
- ldr r0, [r1]
- movs r2, 0x10
- orrs r0, r2
- str r0, [r1]
- ldr r2, _08028188 @ =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _0802818C @ =gBankAttacker
- ldrb r1, [r1]
- strb r1, [r0, 0x15]
- ldr r1, _08028190 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08028180: .4byte gStatuses3
-_08028184: .4byte gBankTarget
-_08028188: .4byte gDisableStructs
-_0802818C: .4byte gBankAttacker
-_08028190: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA7_setalwayshitflag
-
- thumb_func_start atkA8_copymovepermanently
-atkA8_copymovepermanently: @ 8028194
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- ldr r0, _080282F4 @ =gUnknown_02024BE8
- ldr r1, _080282F8 @ =0x0000ffff
- adds r5, r1, 0
- strh r5, [r0]
- ldr r3, _080282FC @ =gBattleMons
- ldr r2, _08028300 @ =gBankAttacker
- ldrb r1, [r2]
- movs r0, 0x58
- adds r4, r1, 0
- muls r4, r0
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r4, r0
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 14
- ands r1, r0
- mov r12, r3
- mov r10, r2
- cmp r1, 0
- beq _080281CC
- b _08028320
-_080281CC:
- ldr r0, _08028304 @ =gUnknown_02024C2C
- ldr r2, _08028308 @ =gBankTarget
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- ldrh r1, [r1]
- mov r9, r0
- mov r8, r2
- cmp r1, 0xA5
- bne _080281E2
- b _08028320
-_080281E2:
- cmp r1, 0
- bne _080281E8
- b _08028320
-_080281E8:
- cmp r1, r5
- bne _080281EE
- b _08028320
-_080281EE:
- cmp r1, 0xA6
- bne _080281F4
- b _08028320
-_080281F4:
- movs r7, 0
- mov r5, r9
- mov r0, r12
- adds r0, 0xC
- adds r1, r4, r0
- mov r3, r8
-_08028200:
- ldrh r2, [r1]
- cmp r2, 0xA6
- beq _08028212
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r2, r0
- beq _0802821A
-_08028212:
- adds r1, 0x2
- adds r7, 0x1
- cmp r7, 0x3
- ble _08028200
-_0802821A:
- cmp r7, 0x4
- beq _08028220
- b _08028320
-_08028220:
- ldr r4, _0802830C @ =gCurrMovePos
- ldrb r1, [r4]
- lsls r1, 1
- mov r2, r10
- ldrb r0, [r2]
- movs r3, 0x58
- muls r0, r3
- adds r1, r0
- mov r6, r12
- adds r6, 0xC
- adds r1, r6
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- strh r0, [r1]
- mov r1, r10
- ldrb r0, [r1]
- adds r2, r0, 0
- muls r2, r3
- ldrb r4, [r4]
- adds r2, r4
- mov r5, r12
- adds r5, 0x24
- adds r2, r5
- ldr r4, _08028310 @ =gBattleMoves
- mov r1, r8
- ldrb r0, [r1]
- lsls r0, 1
- add r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x4]
- strb r0, [r2]
- ldr r1, _08028314 @ =gActiveBank
- mov r2, r10
- ldrb r0, [r2]
- strb r0, [r1]
- movs r7, 0
- ldrb r0, [r2]
- muls r0, r3
- adds r4, r0, r5
- adds r3, r0, 0
- add r2, sp, 0x4
- add r5, sp, 0xC
-_08028282:
- adds r0, r3, r6
- ldrh r0, [r0]
- strh r0, [r2]
- adds r1, r5, r7
- ldrb r0, [r4]
- strb r0, [r1]
- adds r4, 0x1
- adds r3, 0x2
- adds r2, 0x2
- adds r7, 0x1
- cmp r7, 0x3
- ble _08028282
- add r2, sp, 0x4
- mov r0, r10
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- add r0, r12
- adds r0, 0x3B
- ldrb r0, [r0]
- strb r0, [r2, 0xC]
- str r2, [sp]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x10
- bl EmitSetAttributes
- ldr r0, _08028314 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _08028318 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldr r3, _08028304 @ =gUnknown_02024C2C
- ldr r2, _08028308 @ =gBankTarget
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _0802831C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802833A
- .align 2, 0
-_080282F4: .4byte gUnknown_02024BE8
-_080282F8: .4byte 0x0000ffff
-_080282FC: .4byte gBattleMons
-_08028300: .4byte gBankAttacker
-_08028304: .4byte gUnknown_02024C2C
-_08028308: .4byte gBankTarget
-_0802830C: .4byte gCurrMovePos
-_08028310: .4byte gBattleMoves
-_08028314: .4byte gActiveBank
-_08028318: .4byte gBattleTextBuff1
-_0802831C: .4byte gBattlescriptCurrInstr
-_08028320:
- ldr r3, _0802834C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802833A:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802834C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA8_copymovepermanently
-
- thumb_func_start sub_8028350
-sub_8028350: @ 8028350
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08028380 @ =gBattleMoves
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1]
- cmp r0, 0x91
- beq _0802837A
- cmp r0, 0x27
- beq _0802837A
- cmp r0, 0x4B
- beq _0802837A
- cmp r0, 0x97
- beq _0802837A
- cmp r0, 0x9B
- beq _0802837A
- cmp r0, 0x1A
- bne _08028384
-_0802837A:
- movs r0, 0x1
- b _08028386
- .align 2, 0
-_08028380: .4byte gBattleMoves
-_08028384:
- movs r0, 0
-_08028386:
- pop {r1}
- bx r1
- thumb_func_end sub_8028350
-
- thumb_func_start sub_802838C
-sub_802838C: @ 802838C
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080283AA
- cmp r1, 0xD6
- beq _080283AA
- movs r0, 0x89
- lsls r0, 1
- cmp r1, r0
- beq _080283AA
- cmp r1, 0x77
- beq _080283AA
- cmp r1, 0x76
- bne _080283AE
-_080283AA:
- movs r0, 0x1
- b _080283B0
-_080283AE:
- movs r0, 0
-_080283B0:
- pop {r1}
- bx r1
- thumb_func_end sub_802838C
-
- thumb_func_start move_weather_interaction
-move_weather_interaction: @ 80283B4
- push {lr}
- lsls r1, 16
- lsrs r2, r1, 16
- ldr r1, _0802840C @ =gBattleMoves
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0x97
- bne _080283D8
- ldr r0, _08028410 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- bne _08028418
-_080283D8:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0x91
- beq _080283FA
- cmp r0, 0x27
- beq _080283FA
- cmp r0, 0x4B
- beq _080283FA
- cmp r0, 0x97
- beq _080283FA
- cmp r0, 0x9B
- beq _080283FA
- cmp r0, 0x1A
- bne _08028418
-_080283FA:
- ldr r0, _08028414 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 20
- ands r0, r1
- cmp r0, 0
- beq _08028418
- movs r0, 0x1
- b _0802841A
- .align 2, 0
-_0802840C: .4byte gBattleMoves
-_08028410: .4byte gBattleWeather
-_08028414: .4byte gHitMarker
-_08028418:
- movs r0, 0x2
-_0802841A:
- pop {r1}
- bx r1
- thumb_func_end move_weather_interaction
-
- thumb_func_start sub_8028420
-sub_8028420: @ 8028420
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- movs r5, 0
- ldr r0, _080284B0 @ =gBankAttacker
- mov r9, r0
- movs r1, 0x58
- mov r8, r1
- ldr r7, _080284B4 @ =gUnknown_02024A8C
- movs r0, 0x84
- lsls r0, 1
- mov r10, r0
-_0802843E:
- lsls r4, r5, 1
- mov r1, r9
- ldrb r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r4, r0
- adds r0, r7
- ldrh r0, [r0]
- bl sub_802838C
- lsls r0, 24
- cmp r0, 0
- bne _0802847E
- mov r1, r9
- ldrb r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r4, r0
- adds r0, r7
- ldrh r1, [r0]
- cmp r1, r10
- beq _0802847E
- cmp r1, 0xFD
- beq _0802847E
- adds r0, r1, 0
- bl sub_8028350
- lsls r0, 24
- cmp r0, 0
- beq _0802848C
-_0802847E:
- ldr r1, _080284B8 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r1
- ldr r0, [r0]
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_0802848C:
- adds r5, 0x1
- cmp r5, 0x3
- ble _0802843E
- ldr r0, _080284B0 @ =gBankAttacker
- ldrb r0, [r0]
- adds r1, r6, 0
- movs r2, 0xFD
- bl sub_8015A98
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xF
- bne _080284C0
- ldr r1, _080284BC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08028524
- .align 2, 0
-_080284B0: .4byte gBankAttacker
-_080284B4: .4byte gUnknown_02024A8C
-_080284B8: .4byte gBitTable
-_080284BC: .4byte gBattlescriptCurrInstr
-_080284C0:
- movs r7, 0x3
- ldr r4, _08028534 @ =gBitTable
-_080284C4:
- bl Random
- adds r5, r7, 0
- ands r5, r0
- lsls r0, r5, 2
- adds r0, r4
- ldr r0, [r0]
- ands r0, r6
- cmp r0, 0
- bne _080284C4
- ldr r4, _08028538 @ =gUnknown_02024BEA
- ldr r2, _0802853C @ =gBattleMons
- lsls r1, r5, 1
- ldr r0, _08028540 @ =gBankAttacker
- ldrb r3, [r0]
- movs r0, 0x58
- muls r0, r3
- adds r1, r0
- adds r2, 0xC
- adds r1, r2
- ldrh r0, [r1]
- strh r0, [r4]
- ldr r0, _08028544 @ =gCurrMovePos
- strb r5, [r0]
- ldr r2, _08028548 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802854C @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08028550 @ =gBankTarget
- strb r0, [r1]
- ldr r3, _08028554 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08028524:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028534: .4byte gBitTable
-_08028538: .4byte gUnknown_02024BEA
-_0802853C: .4byte gBattleMons
-_08028540: .4byte gBankAttacker
-_08028544: .4byte gCurrMovePos
-_08028548: .4byte gHitMarker
-_0802854C: .4byte 0xfffffbff
-_08028550: .4byte gBankTarget
-_08028554: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028420
-
- thumb_func_start sub_8028558
-sub_8028558: @ 8028558
- ldr r1, _0802857C @ =gBattleMons
- ldr r0, _08028580 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
- adds r2, r1
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 18
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08028584 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0802857C: .4byte gBattleMons
-_08028580: .4byte gBankAttacker
-_08028584: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028558
-
- thumb_func_start b_feature_update_destiny_bond
-b_feature_update_destiny_bond: @ 8028588
- push {r4,r5,lr}
- ldr r0, _080285D8 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080285DC @ =gBankTarget
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _080285E0 @ =gBattleMons
- ldrb r2, [r4]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _080285D2
- cmp r5, r3
- beq _080285D2
- ldr r2, _080285E4 @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- bne _080285D2
- movs r0, 0x40
- orrs r1, r0
- str r1, [r2]
-_080285D2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080285D8: .4byte gBankAttacker
-_080285DC: .4byte gBankTarget
-_080285E0: .4byte gBattleMons
-_080285E4: .4byte gHitMarker
- thumb_func_end b_feature_update_destiny_bond
-
- thumb_func_start atkAB_802A458
-atkAB_802A458: @ 80285E8
- push {lr}
- bl b_feature_update_destiny_bond
- ldr r1, _080285FC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080285FC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkAB_802A458
-
- thumb_func_start atkAC_remaininghptopower
-atkAC_remaininghptopower: @ 8028600
- push {lr}
- ldr r2, _08028654 @ =gBattleMons
- ldr r0, _08028658 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- movs r2, 0x28
- ldrsh r0, [r1, r2]
- movs r2, 0x2C
- ldrsh r1, [r1, r2]
- movs r2, 0x30
- bl GetScaledHPFraction
- lsls r0, 24
- lsrs r1, r0, 24
- movs r3, 0
- ldr r0, _0802865C @ =gUnknown_081FAD26
- ldrb r2, [r0]
- cmp r1, r2
- ble _0802863A
- adds r2, r0, 0
-_0802862C:
- adds r3, 0x2
- cmp r3, 0xB
- bgt _0802863A
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r1, r0
- bgt _0802862C
-_0802863A:
- ldr r2, _08028660 @ =gDynamicBasePower
- ldr r1, _0802865C @ =gUnknown_081FAD26
- adds r0, r3, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r2]
- ldr r1, _08028664 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08028654: .4byte gBattleMons
-_08028658: .4byte gBankAttacker
-_0802865C: .4byte gUnknown_081FAD26
-_08028660: .4byte gDynamicBasePower
-_08028664: .4byte gBattlescriptCurrInstr
- thumb_func_end atkAC_remaininghptopower
-
- thumb_func_start sub_8028668
-sub_8028668: @ 8028668
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, _080287F8 @ =gLastUsedMove
- ldr r1, _080287FC @ =gBankTarget
- ldrb r2, [r1]
- lsls r0, r2, 1
- adds r0, r4
- ldrh r3, [r0]
- mov r8, r1
- cmp r3, 0
- bne _08028688
- b _08028828
-_08028688:
- ldr r0, _08028800 @ =0x0000ffff
- cmp r3, r0
- bne _08028690
- b _08028828
-_08028690:
- ldr r1, _08028804 @ =gStatuses3
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08028808 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _080286A2
- b _08028828
-_080286A2:
- movs r7, 0
- ldr r0, _0802880C @ =gBattleMons
- movs r1, 0x58
- muls r1, r2
- adds r2, r0, 0
- adds r2, 0xC
- adds r1, r2
- ldrh r1, [r1]
- cmp r3, r1
- beq _080286DA
- adds r6, r4, 0
- mov r5, r8
- adds r4, r2, 0
- movs r3, 0x58
-_080286BE:
- adds r7, 0x1
- cmp r7, 0x3
- bgt _080286DA
- ldrb r0, [r5]
- lsls r2, r0, 1
- adds r2, r6
- lsls r1, r7, 1
- muls r0, r3
- adds r1, r0
- adds r1, r4
- ldrh r0, [r2]
- ldrh r1, [r1]
- cmp r0, r1
- bne _080286BE
-_080286DA:
- cmp r7, 0x4
- bne _080286E0
- b _08028828
-_080286E0:
- mov r4, r8
- ldrb r0, [r4]
- movs r1, 0x58
- mov r9, r1
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7, r0
- ldr r1, _0802880C @ =gBattleMons
- adds r1, 0x24
- mov r10, r1
- add r0, r10
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _08028700
- b _08028828
-_08028700:
- bl Random
- movs r1, 0x3
- ands r1, r0
- adds r6, r1, 0x2
- ldrb r0, [r4]
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7, r0
- add r0, r10
- ldrb r0, [r0]
- cmp r0, r6
- bge _0802871E
- adds r6, r0, 0
-_0802871E:
- ldr r1, _08028810 @ =gBattleTextBuff1
- movs r5, 0xFD
- strb r5, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldr r2, _080287F8 @ =gLastUsedMove
- mov r3, r8
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r4, _08028814 @ =gBattleTextBuff2
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- strb r5, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- strb r0, [r4, 0x2]
- strb r0, [r4, 0x3]
- strb r6, [r4, 0x4]
- subs r0, 0x2
- strb r0, [r4, 0x5]
- mov r1, r8
- ldrb r0, [r1]
- mov r1, r9
- muls r1, r0
- adds r1, r7, r1
- add r1, r10
- ldrb r0, [r1]
- subs r0, r6
- strb r0, [r1]
- ldr r4, _08028818 @ =gActiveBank
- mov r3, r8
- ldrb r0, [r3]
- strb r0, [r4]
- ldr r1, _0802881C @ =gDisableStructs
- ldrb r3, [r4]
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, _08028820 @ =gBitTable
- lsls r0, r7, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080287D2
- mov r2, r9
- muls r2, r3
- ldr r0, _0802880C @ =gBattleMons
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _080287D2
- adds r1, r7, 0
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- mov r3, r10
- adds r0, r2, r3
- adds r0, r7
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_080287D2:
- ldr r1, _08028824 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r1, _0802880C @ =gBattleMons
- ldr r0, _080287FC @ =gBankTarget
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r7, r0
- adds r1, 0x24
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08028842
- adds r0, r2, 0
- bl CancelMultiTurnMoves
- b _08028842
- .align 2, 0
-_080287F8: .4byte gLastUsedMove
-_080287FC: .4byte gBankTarget
-_08028800: .4byte 0x0000ffff
-_08028804: .4byte gStatuses3
-_08028808: .4byte 0x000400c0
-_0802880C: .4byte gBattleMons
-_08028810: .4byte gBattleTextBuff1
-_08028814: .4byte gBattleTextBuff2
-_08028818: .4byte gActiveBank
-_0802881C: .4byte gDisableStructs
-_08028820: .4byte gBitTable
-_08028824: .4byte gBattlescriptCurrInstr
-_08028828:
- ldr r3, _08028854 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08028842:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028854: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028668
-
- thumb_func_start sub_8028858
-sub_8028858: @ 8028858
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- movs r4, 0
- str r4, [sp, 0x4]
- movs r7, 0
- ldr r0, _080288AC @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xD7
- beq _08028872
- b _08028A26
-_08028872:
- ldr r5, _080288B0 @ =gBattleCommunication
- strb r7, [r5, 0x5]
- ldr r6, _080288B4 @ =gBankAttacker
- ldrb r0, [r6]
- bl GetBankSide
- lsls r0, 24
- ldr r1, _080288B8 @ =gEnemyParty
- mov r9, r1
- cmp r0, 0
- bne _0802888C
- ldr r2, _080288BC @ =gPlayerParty
- mov r9, r2
-_0802888C:
- ldr r4, _080288C0 @ =gBattleMons
- ldrb r3, [r6]
- movs r0, 0x58
- adds r2, r3, 0
- muls r2, r0
- adds r0, r2, r4
- adds r1, r0, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0x2B
- beq _080288C4
- adds r0, r4, 0
- adds r0, 0x4C
- adds r0, r2, r0
- str r7, [r0]
- b _080288D4
- .align 2, 0
-_080288AC: .4byte gCurrentMove
-_080288B0: .4byte gBattleCommunication
-_080288B4: .4byte gBankAttacker
-_080288B8: .4byte gEnemyParty
-_080288BC: .4byte gPlayerParty
-_080288C0: .4byte gBattleMons
-_080288C4:
- ldrb r1, [r1]
- adds r0, r3, 0
- bl RecordAbilityBattle
- ldrb r0, [r5, 0x5]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r5, 0x5]
-_080288D4:
- ldr r4, _08028934 @ =gActiveBank
- ldr r0, _08028938 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r6, 0x2
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r1, _0802893C @ =0x02000000
- ldr r2, _08028940 @ =0x00016003
- adds r1, r2
- strb r0, [r1]
- strb r0, [r4]
- ldr r0, _08028944 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08028964
- ldr r0, _08028948 @ =gAbsentBankFlags
- ldrb r2, [r0]
- ldr r1, _0802894C @ =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- bne _08028964
- ldr r5, _08028950 @ =gBattleMons
- movs r0, 0x58
- adds r4, r3, 0
- muls r4, r0
- adds r0, r4, r5
- adds r1, r0, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0x2B
- beq _08028954
- adds r0, r5, 0
- adds r0, 0x4C
- adds r0, r4, r0
- str r2, [r0]
- b _08028964
- .align 2, 0
-_08028934: .4byte gActiveBank
-_08028938: .4byte gBankAttacker
-_0802893C: .4byte 0x02000000
-_08028940: .4byte 0x00016003
-_08028944: .4byte gBattleTypeFlags
-_08028948: .4byte gAbsentBankFlags
-_0802894C: .4byte gBitTable
-_08028950: .4byte gBattleMons
-_08028954:
- ldrb r1, [r1]
- adds r0, r3, 0
- bl RecordAbilityBattle
- ldr r1, _080289AC @ =gBattleCommunication
- ldrb r0, [r1, 0x5]
- orrs r0, r6
- strb r0, [r1, 0x5]
-_08028964:
- movs r6, 0
- ldr r0, _080289B0 @ =gBattleMons
- mov r8, r0
-_0802896A:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- add r4, r9
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r5, 0
- beq _08028A1E
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- beq _08028A1E
- ldr r2, _080289B4 @ =gBattlePartyID
- ldr r0, _080289B8 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r6
- bne _080289BC
- movs r0, 0x58
- muls r0, r1
- b _080289EC
- .align 2, 0
-_080289AC: .4byte gBattleCommunication
-_080289B0: .4byte gBattleMons
-_080289B4: .4byte gBattlePartyID
-_080289B8: .4byte gBankAttacker
-_080289BC:
- ldr r0, _080289F4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08028A04
- ldr r0, _080289F8 @ =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r6
- bne _08028A04
- ldr r0, _080289FC @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _08028A00 @ =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08028A04
- movs r0, 0x58
- muls r0, r3
-_080289EC:
- add r0, r8
- adds r0, 0x20
- ldrb r0, [r0]
- b _08028A10
- .align 2, 0
-_080289F4: .4byte gBattleTypeFlags
-_080289F8: .4byte gActiveBank
-_080289FC: .4byte gAbsentBankFlags
-_08028A00: .4byte gBitTable
-_08028A04:
- adds r0, r5, 0
- adds r1, r4, 0
- bl GetAbilityBySpecies
- lsls r0, 24
- lsrs r0, 24
-_08028A10:
- cmp r0, 0x2B
- beq _08028A1E
- movs r0, 0x1
- lsls r0, r6
- orrs r7, r0
- lsls r0, r7, 24
- lsrs r7, r0, 24
-_08028A1E:
- adds r6, 0x1
- cmp r6, 0x5
- ble _0802896A
- b _08028A7E
-_08028A26:
- ldr r1, _08028AB4 @ =gBattleCommunication
- movs r0, 0x4
- strb r0, [r1, 0x5]
- movs r7, 0x3F
- ldr r2, _08028AB8 @ =gBattleMons
- ldr r1, _08028ABC @ =gBankAttacker
- ldrb r0, [r1]
- movs r6, 0x58
- muls r0, r6
- adds r5, r2, 0
- adds r5, 0x4C
- adds r0, r5
- str r4, [r0]
- ldrb r0, [r1]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r3, _08028AC0 @ =gActiveBank
- strb r0, [r3]
- ldr r0, _08028AC4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08028A7E
- ldr r0, _08028AC8 @ =gAbsentBankFlags
- ldrb r2, [r0]
- ldr r1, _08028ACC @ =gBitTable
- ldrb r3, [r3]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- bne _08028A7E
- adds r0, r3, 0
- muls r0, r6
- adds r0, r5
- str r2, [r0]
-_08028A7E:
- ldr r4, _08028AC0 @ =gActiveBank
- ldr r0, _08028ABC @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- add r1, sp, 0x4
- str r1, [sp]
- movs r0, 0
- movs r1, 0x28
- adds r2, r7, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _08028AD0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028AB4: .4byte gBattleCommunication
-_08028AB8: .4byte gBattleMons
-_08028ABC: .4byte gBankAttacker
-_08028AC0: .4byte gActiveBank
-_08028AC4: .4byte gBattleTypeFlags
-_08028AC8: .4byte gAbsentBankFlags
-_08028ACC: .4byte gBitTable
-_08028AD0: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028858
-
- thumb_func_start sub_8028AD4
-sub_8028AD4: @ 8028AD4
- push {r4-r7,lr}
- ldr r7, _08028B24 @ =gBattleMons
- ldr r0, _08028B28 @ =gBankTarget
- ldrb r3, [r0]
- movs r6, 0x58
- adds r1, r3, 0
- muls r1, r6
- adds r0, r7, 0
- adds r0, 0x50
- adds r4, r1, r0
- ldr r2, [r4]
- movs r5, 0x80
- lsls r5, 21
- adds r0, r2, 0
- ands r0, r5
- cmp r0, 0
- bne _08028B06
- ldr r1, _08028B2C @ =gStatuses3
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08028B30 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _08028B38
-_08028B06:
- ldr r3, _08028B34 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08028B5C
- .align 2, 0
-_08028B24: .4byte gBattleMons
-_08028B28: .4byte gBankTarget
-_08028B2C: .4byte gStatuses3
-_08028B30: .4byte 0x000400c0
-_08028B34: .4byte gBattlescriptCurrInstr
-_08028B38:
- orrs r2, r5
- str r2, [r4]
- ldr r1, _08028B64 @ =gBattleMoveDamage
- ldr r0, _08028B68 @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _08028B54
- movs r0, 0x1
- str r0, [r1]
-_08028B54:
- ldr r1, _08028B6C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08028B5C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028B64: .4byte gBattleMoveDamage
-_08028B68: .4byte gBankAttacker
-_08028B6C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028AD4
-
- thumb_func_start sub_8028B70
-sub_8028B70: @ 8028B70
- push {r4,lr}
- ldr r4, _08028BC4 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08028BC8 @ =gSideTimer
- lsls r2, r0, 1
- adds r0, r2, r0
- lsls r0, 2
- adds r3, r0, r1
- ldrb r0, [r3, 0x6]
- cmp r0, 0x3
- bne _08028BD4
- ldr r2, _08028BCC @ =gSpecialStatuses
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r3, _08028BD0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08028BEE
- .align 2, 0
-_08028BC4: .4byte gBankAttacker
-_08028BC8: .4byte gSideTimer
-_08028BCC: .4byte gSpecialStatuses
-_08028BD0: .4byte gBattlescriptCurrInstr
-_08028BD4:
- ldr r1, _08028BF4 @ =gSideAffecting
- adds r1, r2, r1
- ldrh r2, [r1]
- movs r0, 0x10
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r3, 0x6]
- adds r0, 0x1
- strb r0, [r3, 0x6]
- ldr r1, _08028BF8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08028BEE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08028BF4: .4byte gSideAffecting
-_08028BF8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028B70
-
- thumb_func_start sub_8028BFC
-sub_8028BFC: @ 8028BFC
- ldr r1, _08028C20 @ =gBattleMons
- ldr r0, _08028C24 @ =gBankTarget
- ldrb r2, [r0]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
- adds r2, r1
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 22
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08028C28 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08028C20: .4byte gBattleMons
-_08028C24: .4byte gBankTarget
-_08028C28: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028BFC
-
- thumb_func_start atkB2_setperishsong
-atkB2_setperishsong: @ 8028C2C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r6, 0
- movs r3, 0
- ldr r0, _08028C70 @ =gNoOfAllBanks
- adds r7, r0, 0
- ldr r0, _08028C74 @ =gBankAttacker
- mov r8, r0
- ldrb r1, [r7]
- cmp r6, r1
- bge _08028C98
- movs r5, 0x20
- ldr r0, _08028C78 @ =gBattleMons
- mov r12, r0
- ldr r0, _08028C7C @ =gDisableStructs
- adds r4, r0, 0
- adds r4, 0xF
- ldr r2, _08028C80 @ =gStatuses3
-_08028C54:
- ldr r1, [r2]
- adds r0, r1, 0
- ands r0, r5
- cmp r0, 0
- bne _08028C6C
- movs r0, 0x58
- muls r0, r3
- add r0, r12
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2B
- bne _08028C84
-_08028C6C:
- adds r6, 0x1
- b _08028C8C
- .align 2, 0
-_08028C70: .4byte gNoOfAllBanks
-_08028C74: .4byte gBankAttacker
-_08028C78: .4byte gBattleMons
-_08028C7C: .4byte gDisableStructs
-_08028C80: .4byte gStatuses3
-_08028C84:
- orrs r1, r5
- str r1, [r2]
- movs r0, 0x33
- strb r0, [r4]
-_08028C8C:
- adds r4, 0x1C
- adds r2, 0x4
- adds r3, 0x1
- ldrb r0, [r7]
- cmp r3, r0
- blt _08028C54
-_08028C98:
- mov r1, r8
- ldrb r0, [r1]
- bl sub_80153D0
- ldr r0, _08028CC4 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bne _08028CCC
- ldr r3, _08028CC8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08028CD4
- .align 2, 0
-_08028CC4: .4byte gNoOfAllBanks
-_08028CC8: .4byte gBattlescriptCurrInstr
-_08028CCC:
- ldr r1, _08028CE0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08028CD4:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028CE0: .4byte gBattlescriptCurrInstr
- thumb_func_end atkB2_setperishsong
-
- thumb_func_start atkB3_rolloutdamagecalculation
-atkB3_rolloutdamagecalculation: @ 8028CE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _08028D08 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08028D18
- ldr r0, _08028D0C @ =gBankAttacker
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- ldr r1, _08028D10 @ =gBattlescriptCurrInstr
- ldr r0, _08028D14 @ =BattleScript_1D6F74
- str r0, [r1]
- b _08028E30
- .align 2, 0
-_08028D08: .4byte gBattleMoveFlags
-_08028D0C: .4byte gBankAttacker
-_08028D10: .4byte gBattlescriptCurrInstr
-_08028D14: .4byte BattleScript_1D6F74
-_08028D18:
- ldr r2, _08028E3C @ =gBattleMons
- ldr r1, _08028E40 @ =gBankAttacker
- ldrb r3, [r1]
- movs r5, 0x58
- adds r0, r3, 0
- muls r0, r5
- adds r4, r2, 0
- adds r4, 0x50
- adds r0, r4
- ldr r0, [r0]
- movs r7, 0x80
- lsls r7, 5
- ands r0, r7
- adds r6, r1, 0
- mov r9, r2
- ldr r1, _08028E44 @ =gDisableStructs
- mov r12, r1
- ldr r2, _08028E48 @ =gCurrentMove
- mov r8, r2
- cmp r0, 0
- bne _08028D8A
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- add r0, r12
- ldrb r2, [r0, 0x11]
- movs r1, 0x10
- negs r1, r1
- ands r1, r2
- movs r2, 0x5
- orrs r1, r2
- strb r1, [r0, 0x11]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r2, [r0, 0x11]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0x50
- orrs r1, r2
- strb r1, [r0, 0x11]
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r4
- ldr r0, [r1]
- orrs r0, r7
- str r0, [r1]
- ldr r1, _08028E4C @ =gLockedMove
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r1
- mov r2, r8
- ldrh r1, [r2]
- strh r1, [r0]
-_08028D8A:
- ldrb r0, [r6]
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- add r2, r12
- ldrb r3, [r2, 0x11]
- lsls r1, r3, 28
- lsrs r1, 28
- subs r1, 0x1
- movs r0, 0xF
- ands r1, r0
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x11]
- cmp r1, 0
- bne _08028DBE
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r4
- ldr r0, [r1]
- ldr r2, _08028E50 @ =0xffffefff
- ands r0, r2
- str r0, [r1]
-_08028DBE:
- ldr r3, _08028E54 @ =gDynamicBasePower
- ldr r2, _08028E58 @ =gBattleMoves
- mov r0, r8
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- strh r0, [r3]
- movs r2, 0x1
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r1, r12
- adds r4, r0, r1
- ldrb r0, [r4, 0x11]
- lsls r0, 28
- lsrs r0, 28
- movs r1, 0x5
- subs r1, r0
- ldr r7, _08028E5C @ =gBattlescriptCurrInstr
- adds r5, r3, 0
- cmp r2, r1
- bge _08028E0C
- adds r1, r5, 0
- adds r3, r4, 0
- movs r4, 0x5
-_08028DF8:
- ldrh r0, [r1]
- lsls r0, 1
- strh r0, [r1]
- adds r2, 0x1
- ldrb r0, [r3, 0x11]
- lsls r0, 28
- lsrs r0, 28
- subs r0, r4, r0
- cmp r2, r0
- blt _08028DF8
-_08028E0C:
- ldrb r1, [r6]
- movs r0, 0x58
- muls r0, r1
- mov r1, r9
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 23
- ands r0, r1
- cmp r0, 0
- beq _08028E2A
- ldrh r0, [r5]
- lsls r0, 1
- strh r0, [r5]
-_08028E2A:
- ldr r0, [r7]
- adds r0, 0x1
- str r0, [r7]
-_08028E30:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028E3C: .4byte gBattleMons
-_08028E40: .4byte gBankAttacker
-_08028E44: .4byte gDisableStructs
-_08028E48: .4byte gCurrentMove
-_08028E4C: .4byte gLockedMove
-_08028E50: .4byte 0xffffefff
-_08028E54: .4byte gDynamicBasePower
-_08028E58: .4byte gBattleMoves
-_08028E5C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkB3_rolloutdamagecalculation
-
- thumb_func_start atkB4_jumpifconfusedandattackmaxed
-atkB4_jumpifconfusedandattackmaxed: @ 8028E60
- push {r4,r5,lr}
- ldr r5, _08028EB0 @ =gBattleMons
- ldr r0, _08028EB4 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- adds r3, r1, 0
- muls r3, r0
- adds r0, r5, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- ldr r4, _08028EB8 @ =gBattlescriptCurrInstr
- cmp r0, 0
- beq _08028EBC
- ldr r2, [r4]
- ldrb r0, [r2, 0x1]
- adds r0, r3
- adds r1, r5, 0
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0xC
- bne _08028EBC
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08028EC2
- .align 2, 0
-_08028EB0: .4byte gBattleMons
-_08028EB4: .4byte gBankTarget
-_08028EB8: .4byte gBattlescriptCurrInstr
-_08028EBC:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_08028EC2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end atkB4_jumpifconfusedandattackmaxed
-
- thumb_func_start sub_8028EC8
-sub_8028EC8: @ 8028EC8
- push {r4,r5,lr}
- ldr r0, _08028EF0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08028F04
- ldr r2, _08028EF4 @ =gDisableStructs
- ldr r0, _08028EF8 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strb r1, [r0, 0x10]
- ldr r1, _08028EFC @ =gBattlescriptCurrInstr
- ldr r0, _08028F00 @ =BattleScript_1D6F74
- str r0, [r1]
- b _08028F5C
- .align 2, 0
-_08028EF0: .4byte gBattleMoveFlags
-_08028EF4: .4byte gDisableStructs
-_08028EF8: .4byte gBankAttacker
-_08028EFC: .4byte gBattlescriptCurrInstr
-_08028F00: .4byte BattleScript_1D6F74
-_08028F04:
- ldr r5, _08028F64 @ =gDisableStructs
- ldr r4, _08028F68 @ =gBankAttacker
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1, 0x10]
- cmp r0, 0x5
- beq _08028F1C
- adds r0, 0x1
- strb r0, [r1, 0x10]
-_08028F1C:
- ldr r3, _08028F6C @ =gDynamicBasePower
- ldr r2, _08028F70 @ =gBattleMoves
- ldr r0, _08028F74 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- strh r0, [r3]
- movs r2, 0x1
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, _08028F78 @ =gBattlescriptCurrInstr
- ldrb r1, [r0, 0x10]
- cmp r2, r1
- bge _08028F56
- adds r1, r3, 0
- adds r3, r0, 0
-_08028F48:
- ldrh r0, [r1]
- lsls r0, 1
- strh r0, [r1]
- adds r2, 0x1
- ldrb r0, [r3, 0x10]
- cmp r2, r0
- blt _08028F48
-_08028F56:
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
-_08028F5C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08028F64: .4byte gDisableStructs
-_08028F68: .4byte gBankAttacker
-_08028F6C: .4byte gDynamicBasePower
-_08028F70: .4byte gBattleMoves
-_08028F74: .4byte gCurrentMove
-_08028F78: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028EC8
-
- thumb_func_start atkB6_happinesstodamagecalculation
-atkB6_happinesstodamagecalculation: @ 8028F7C
- push {r4,lr}
- ldr r2, _08028FA8 @ =gBattleMoves
- ldr r0, _08028FAC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x79
- bne _08028FBC
- ldr r4, _08028FB0 @ =gDynamicBasePower
- ldr r2, _08028FB4 @ =gBattleMons
- ldr r0, _08028FB8 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2B
- ldrb r1, [r0]
- b _08028FD2
- .align 2, 0
-_08028FA8: .4byte gBattleMoves
-_08028FAC: .4byte gCurrentMove
-_08028FB0: .4byte gDynamicBasePower
-_08028FB4: .4byte gBattleMons
-_08028FB8: .4byte gBankAttacker
-_08028FBC:
- ldr r4, _08028FF0 @ =gDynamicBasePower
- ldr r2, _08028FF4 @ =gBattleMons
- ldr r0, _08028FF8 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2B
- ldrb r0, [r0]
- movs r1, 0xFF
- subs r1, r0
-_08028FD2:
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- movs r1, 0x19
- bl __divsi3
- strh r0, [r4]
- ldr r1, _08028FFC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08028FF0: .4byte gDynamicBasePower
-_08028FF4: .4byte gBattleMons
-_08028FF8: .4byte gBankAttacker
-_08028FFC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkB6_happinesstodamagecalculation
-
- thumb_func_start atkB7_presentdamagecalculation
-atkB7_presentdamagecalculation: @ 8029000
- push {r4,lr}
- bl Random
- movs r4, 0xFF
- ands r4, r0
- cmp r4, 0x65
- bgt _0802901C
- ldr r1, _08029018 @ =gDynamicBasePower
- movs r0, 0x28
- strh r0, [r1]
- b _0802905E
- .align 2, 0
-_08029018: .4byte gDynamicBasePower
-_0802901C:
- cmp r4, 0xB1
- bgt _0802902C
- ldr r1, _08029028 @ =gDynamicBasePower
- movs r0, 0x50
- strh r0, [r1]
- b _0802905E
- .align 2, 0
-_08029028: .4byte gDynamicBasePower
-_0802902C:
- cmp r4, 0xCB
- bgt _0802903C
- ldr r1, _08029038 @ =gDynamicBasePower
- movs r0, 0x78
- strh r0, [r1]
- b _0802905E
- .align 2, 0
-_08029038: .4byte gDynamicBasePower
-_0802903C:
- ldr r3, _08029068 @ =gBattleMoveDamage
- ldr r2, _0802906C @ =gBattleMons
- ldr r0, _08029070 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2C]
- lsrs r0, 2
- str r0, [r3]
- cmp r0, 0
- bne _08029058
- movs r0, 0x1
- str r0, [r3]
-_08029058:
- ldr r0, [r3]
- negs r0, r0
- str r0, [r3]
-_0802905E:
- cmp r4, 0xCB
- bgt _0802907C
- ldr r1, _08029074 @ =gBattlescriptCurrInstr
- ldr r0, _08029078 @ =BattleScript_1D6F44
- b _080290AC
- .align 2, 0
-_08029068: .4byte gBattleMoveDamage
-_0802906C: .4byte gBattleMons
-_08029070: .4byte gBankTarget
-_08029074: .4byte gBattlescriptCurrInstr
-_08029078: .4byte BattleScript_1D6F44
-_0802907C:
- ldr r2, _08029098 @ =gBattleMons
- ldr r0, _0802909C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0, 0x2C]
- ldrh r0, [r0, 0x28]
- cmp r1, r0
- bne _080290A8
- ldr r1, _080290A0 @ =gBattlescriptCurrInstr
- ldr r0, _080290A4 @ =BattleScript_1D83B5
- b _080290AC
- .align 2, 0
-_08029098: .4byte gBattleMons
-_0802909C: .4byte gBankTarget
-_080290A0: .4byte gBattlescriptCurrInstr
-_080290A4: .4byte BattleScript_1D83B5
-_080290A8:
- ldr r1, _080290B4 @ =gBattlescriptCurrInstr
- ldr r0, _080290B8 @ =BattleScript_1D839B
-_080290AC:
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080290B4: .4byte gBattlescriptCurrInstr
-_080290B8: .4byte BattleScript_1D839B
- thumb_func_end atkB7_presentdamagecalculation
-
- thumb_func_start sub_80290BC
-sub_80290BC: @ 80290BC
- push {r4-r6,lr}
- ldr r4, _080290F0 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r6, _080290F4 @ =gSideAffecting
- movs r5, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08029100
- ldr r2, _080290F8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080290FC @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- b _08029132
- .align 2, 0
-_080290F0: .4byte gBankAttacker
-_080290F4: .4byte gSideAffecting
-_080290F8: .4byte gBattleMoveFlags
-_080290FC: .4byte gBattleCommunication
-_08029100:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r0, [r1]
- movs r2, 0x20
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r2, _08029140 @ =gSideTimer
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x5
- strb r1, [r0, 0x7]
- ldr r0, _08029144 @ =gBattleCommunication
- strb r1, [r0, 0x5]
-_08029132:
- ldr r1, _08029148 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08029140: .4byte gSideTimer
-_08029144: .4byte gBattleCommunication
-_08029148: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80290BC
-
- thumb_func_start atkB9_magnitudedamagecalculation
-atkB9_magnitudedamagecalculation: @ 802914C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x4
- bgt _08029178
- ldr r1, _08029174 @ =gDynamicBasePower
- movs r0, 0xA
- strh r0, [r1]
- movs r3, 0x4
- b _080291E4
- .align 2, 0
-_08029174: .4byte gDynamicBasePower
-_08029178:
- cmp r3, 0xE
- bgt _0802918C
- ldr r1, _08029188 @ =gDynamicBasePower
- movs r0, 0x1E
- strh r0, [r1]
- movs r3, 0x5
- b _080291E4
- .align 2, 0
-_08029188: .4byte gDynamicBasePower
-_0802918C:
- cmp r3, 0x22
- bgt _080291A0
- ldr r1, _0802919C @ =gDynamicBasePower
- movs r0, 0x32
- strh r0, [r1]
- movs r3, 0x6
- b _080291E4
- .align 2, 0
-_0802919C: .4byte gDynamicBasePower
-_080291A0:
- cmp r3, 0x40
- bgt _080291B4
- ldr r1, _080291B0 @ =gDynamicBasePower
- movs r0, 0x46
- strh r0, [r1]
- movs r3, 0x7
- b _080291E4
- .align 2, 0
-_080291B0: .4byte gDynamicBasePower
-_080291B4:
- cmp r3, 0x54
- bgt _080291C8
- ldr r1, _080291C4 @ =gDynamicBasePower
- movs r0, 0x5A
- strh r0, [r1]
- movs r3, 0x8
- b _080291E4
- .align 2, 0
-_080291C4: .4byte gDynamicBasePower
-_080291C8:
- cmp r3, 0x5E
- bgt _080291DC
- ldr r1, _080291D8 @ =gDynamicBasePower
- movs r0, 0x6E
- strh r0, [r1]
- movs r3, 0x9
- b _080291E4
- .align 2, 0
-_080291D8: .4byte gDynamicBasePower
-_080291DC:
- ldr r1, _08029250 @ =gDynamicBasePower
- movs r0, 0x96
- strh r0, [r1]
- movs r3, 0xA
-_080291E4:
- ldr r1, _08029254 @ =gBattleTextBuff1
- movs r2, 0
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- strb r0, [r1, 0x2]
- movs r0, 0x2
- strb r0, [r1, 0x3]
- strb r3, [r1, 0x4]
- movs r0, 0xFF
- strb r0, [r1, 0x5]
- ldr r1, _08029258 @ =gBankTarget
- strb r2, [r1]
- ldr r0, _0802925C @ =gNoOfAllBanks
- ldrb r3, [r0]
- adds r6, r1, 0
- ldr r0, _08029260 @ =gBattlescriptCurrInstr
- mov r8, r0
- cmp r2, r3
- bcs _0802923C
- adds r4, r6, 0
- ldr r0, _08029264 @ =gBankAttacker
- ldrb r5, [r0]
- ldr r1, _08029268 @ =gBitTable
- mov r12, r1
- ldr r7, _0802926C @ =gAbsentBankFlags
-_0802921A:
- ldrb r2, [r4]
- cmp r2, r5
- beq _08029230
- ldrb r0, [r7]
- ldrb r1, [r6]
- lsls r1, 2
- add r1, r12
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- beq _0802923C
-_08029230:
- adds r0, r2, 0x1
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r3
- bcc _0802921A
-_0802923C:
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029250: .4byte gDynamicBasePower
-_08029254: .4byte gBattleTextBuff1
-_08029258: .4byte gBankTarget
-_0802925C: .4byte gNoOfAllBanks
-_08029260: .4byte gBattlescriptCurrInstr
-_08029264: .4byte gBankAttacker
-_08029268: .4byte gBitTable
-_0802926C: .4byte gAbsentBankFlags
- thumb_func_end atkB9_magnitudedamagecalculation
-
- thumb_func_start sub_8029270
-sub_8029270: @ 8029270
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _08029294 @ =gMultiHitCounter
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080292A0
- ldr r0, _08029298 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0802929C
- movs r0, 0x1
- b _080292BA
- .align 2, 0
-_08029294: .4byte gMultiHitCounter
-_08029298: .4byte gBankAttacker
-_0802929C:
- movs r0, 0
- b _080292BA
-_080292A0:
- ldr r0, _080292B4 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080292B8
- movs r0, 0x3
- b _080292BA
- .align 2, 0
-_080292B4: .4byte gBankAttacker
-_080292B8:
- movs r0, 0x2
-_080292BA:
- bl GetBankByPlayerAI
- ldr r1, _0802937C @ =gBankTarget
- strb r0, [r1]
- ldr r0, _08029380 @ =gActionForBanks
- ldr r1, _0802937C @ =gBankTarget
- mov r9, r1
- ldrb r3, [r1]
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _080293BC
- ldr r5, _08029384 @ =gBankAttacker
- ldr r0, _08029388 @ =0x02000000
- ldr r2, _0802938C @ =0x00016010
- adds r1, r3, r2
- adds r1, r0
- ldrb r2, [r5]
- mov r10, r0
- ldrb r1, [r1]
- cmp r2, r1
- bne _080293BC
- ldr r4, _08029390 @ =gBattleMons
- movs r2, 0x58
- adds r0, r3, 0
- muls r0, r2
- adds r1, r4, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x27
- ands r0, r1
- cmp r0, 0
- bne _080293BC
- ldrb r0, [r5]
- muls r0, r2
- adds r0, r4
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _080293BC
- ldr r0, _08029394 @ =gDisableStructs
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x18]
- lsls r0, 31
- cmp r0, 0
- bne _080293BC
- ldr r0, _08029398 @ =gChosenMovesByBanks
- lsls r1, r3, 1
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0xE4
- bne _080293BC
- movs r1, 0
- ldr r0, _0802939C @ =gNoOfAllBanks
- ldr r7, _080293A0 @ =gCurrentMove
- mov r8, r7
- ldr r2, _080293A4 @ =gHitMarker
- mov r12, r2
- ldrb r7, [r0]
- cmp r1, r7
- bge _0802935A
- ldr r6, _080293A8 @ =gTurnOrder
- mov r5, r9
- ldr r4, _080293AC @ =gUnknown_02024A76
- movs r3, 0xB
- adds r2, r0, 0
-_08029344:
- adds r0, r1, r6
- ldrb r0, [r0]
- ldrb r7, [r5]
- cmp r0, r7
- bne _08029352
- adds r0, r1, r4
- strb r3, [r0]
-_08029352:
- adds r1, 0x1
- ldrb r0, [r2]
- cmp r1, r0
- blt _08029344
-_0802935A:
- movs r0, 0xE4
- mov r1, r8
- strh r0, [r1]
- ldr r2, _080293B0 @ =gBattlescriptCurrInstr
- ldr r0, [r2]
- adds r0, 0x5
- str r0, [r2]
- ldr r1, _080293B4 @ =0x00016002
- add r1, r10
- movs r0, 0x1
- strb r0, [r1]
- mov r7, r12
- ldr r0, [r7]
- ldr r1, _080293B8 @ =0xfffffbff
- ands r0, r1
- str r0, [r7]
- b _080293D6
- .align 2, 0
-_0802937C: .4byte gBankTarget
-_08029380: .4byte gActionForBanks
-_08029384: .4byte gBankAttacker
-_08029388: .4byte 0x02000000
-_0802938C: .4byte 0x00016010
-_08029390: .4byte gBattleMons
-_08029394: .4byte gDisableStructs
-_08029398: .4byte gChosenMovesByBanks
-_0802939C: .4byte gNoOfAllBanks
-_080293A0: .4byte gCurrentMove
-_080293A4: .4byte gHitMarker
-_080293A8: .4byte gTurnOrder
-_080293AC: .4byte gUnknown_02024A76
-_080293B0: .4byte gBattlescriptCurrInstr
-_080293B4: .4byte 0x00016002
-_080293B8: .4byte 0xfffffbff
-_080293BC:
- ldr r3, _080293E4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_080293D6:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080293E4: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8029270
-
- thumb_func_start sub_80293E8
-sub_80293E8: @ 80293E8
- push {lr}
- ldr r2, _08029408 @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _08029414
- ldr r2, _0802940C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08029410 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08029426
- .align 2, 0
-_08029408: .4byte gBattleWeather
-_0802940C: .4byte gBattleMoveFlags
-_08029410: .4byte gBattleCommunication
-_08029414:
- movs r0, 0x20
- strh r0, [r2]
- ldr r1, _08029434 @ =gBattleCommunication
- movs r0, 0x4
- strb r0, [r1, 0x5]
- ldr r0, _08029438 @ =gWishFutureKnock
- adds r0, 0x28
- movs r1, 0x5
- strb r1, [r0]
-_08029426:
- ldr r1, _0802943C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029434: .4byte gBattleCommunication
-_08029438: .4byte gWishFutureKnock
-_0802943C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80293E8
-
- thumb_func_start atkBC_maxattackhalvehp
-atkBC_maxattackhalvehp: @ 8029440
- push {r4,r5,lr}
- ldr r5, _0802948C @ =gBattleMons
- ldr r4, _08029490 @ =gBankAttacker
- ldrb r0, [r4]
- movs r3, 0x58
- muls r0, r3
- adds r2, r0, r5
- ldrh r0, [r2, 0x2C]
- lsrs r1, r0, 1
- cmp r1, 0
- bne _08029458
- movs r1, 0x1
-_08029458:
- movs r0, 0x19
- ldrsb r0, [r2, r0]
- cmp r0, 0xB
- bgt _0802949C
- ldrh r0, [r2, 0x28]
- cmp r0, r1
- bls _0802949C
- movs r0, 0xC
- strb r0, [r2, 0x19]
- ldr r1, _08029494 @ =gBattleMoveDamage
- ldrb r0, [r4]
- muls r0, r3
- adds r0, r5
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _08029480
- movs r0, 0x1
- str r0, [r1]
-_08029480:
- ldr r1, _08029498 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _080294B6
- .align 2, 0
-_0802948C: .4byte gBattleMons
-_08029490: .4byte gBankAttacker
-_08029494: .4byte gBattleMoveDamage
-_08029498: .4byte gBattlescriptCurrInstr
-_0802949C:
- ldr r3, _080294BC @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_080294B6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080294BC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkBC_maxattackhalvehp
-
- thumb_func_start atkBD_copyfoestats
-atkBD_copyfoestats: @ 80294C0
- push {r4-r7,lr}
- movs r2, 0
- ldr r7, _080294F8 @ =gBattlescriptCurrInstr
- ldr r6, _080294FC @ =gBankAttacker
- movs r4, 0x58
- ldr r3, _08029500 @ =gUnknown_02024A98
- ldr r5, _08029504 @ =gBankTarget
-_080294CE:
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r4
- adds r1, r2, r1
- adds r1, r3
- ldrb r0, [r5]
- muls r0, r4
- adds r0, r2, r0
- adds r0, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0x7
- ble _080294CE
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080294F8: .4byte gBattlescriptCurrInstr
-_080294FC: .4byte gBankAttacker
-_08029500: .4byte gUnknown_02024A98
-_08029504: .4byte gBankTarget
- thumb_func_end atkBD_copyfoestats
-
- thumb_func_start atkBE_breakfree
-atkBE_breakfree: @ 8029508
- push {r4,r5,lr}
- ldr r1, _08029570 @ =gBattleMons
- ldr r5, _08029574 @ =gBankAttacker
- ldrb r2, [r5]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r3, r0, r1
- ldr r1, [r3]
- movs r0, 0xE0
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08029594
- ldr r0, _08029578 @ =0xffff1fff
- ands r1, r0
- str r1, [r3]
- ldr r1, _0802957C @ =gBankTarget
- ldr r2, _08029580 @ =0x02000000
- ldrb r0, [r5]
- ldr r3, _08029584 @ =0x00016020
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, _08029588 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldrb r0, [r5]
- lsls r0, 1
- subs r3, 0x1C
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r5]
- lsls r0, 1
- adds r3, 0x1
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- bl b_movescr_stack_push_cursor
- ldr r1, _0802958C @ =gBattlescriptCurrInstr
- ldr r0, _08029590 @ =gUnknown_081D92C2
- b _0802963E
- .align 2, 0
-_08029570: .4byte gBattleMons
-_08029574: .4byte gBankAttacker
-_08029578: .4byte 0xffff1fff
-_0802957C: .4byte gBankTarget
-_08029580: .4byte 0x02000000
-_08029584: .4byte 0x00016020
-_08029588: .4byte gBattleTextBuff1
-_0802958C: .4byte gBattlescriptCurrInstr
-_08029590: .4byte gUnknown_081D92C2
-_08029594:
- ldr r4, _080295C8 @ =gStatuses3
- lsls r0, r2, 2
- adds r3, r0, r4
- ldr r1, [r3]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080295D4
- movs r0, 0x5
- negs r0, r0
- ands r1, r0
- str r1, [r3]
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r4
- ldr r0, [r1]
- movs r2, 0x4
- negs r2, r2
- ands r0, r2
- str r0, [r1]
- bl b_movescr_stack_push_cursor
- ldr r1, _080295CC @ =gBattlescriptCurrInstr
- ldr r0, _080295D0 @ =gUnknown_081D92C9
- b _0802963E
- .align 2, 0
-_080295C8: .4byte gStatuses3
-_080295CC: .4byte gBattlescriptCurrInstr
-_080295D0: .4byte gUnknown_081D92C9
-_080295D4:
- adds r0, r2, 0
- bl GetBankSide
- ldr r4, _08029624 @ =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08029638
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r2, [r0]
- ldr r1, _08029628 @ =0x0000ffef
- ands r1, r2
- movs r4, 0
- strh r1, [r0]
- ldrb r0, [r5]
- bl GetBankSide
- ldr r2, _0802962C @ =gSideTimer
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- strb r4, [r1, 0x6]
- bl b_movescr_stack_push_cursor
- ldr r1, _08029630 @ =gBattlescriptCurrInstr
- ldr r0, _08029634 @ =gUnknown_081D92D0
- b _0802963E
- .align 2, 0
-_08029624: .4byte gSideAffecting
-_08029628: .4byte 0x0000ffef
-_0802962C: .4byte gSideTimer
-_08029630: .4byte gBattlescriptCurrInstr
-_08029634: .4byte gUnknown_081D92D0
-_08029638:
- ldr r1, _08029648 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_0802963E:
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08029648: .4byte gBattlescriptCurrInstr
- thumb_func_end atkBE_breakfree
-
- thumb_func_start sub_802964C
-sub_802964C: @ 802964C
- ldr r1, _08029670 @ =gBattleMons
- ldr r0, _08029674 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
- adds r2, r1
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 23
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08029678 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08029670: .4byte gBattleMons
-_08029674: .4byte gBankAttacker
-_08029678: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802964C
-
- thumb_func_start atkC0_recoverbasedonsunlight
-atkC0_recoverbasedonsunlight: @ 802967C
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, _080296E8 @ =gBankTarget
- ldr r5, _080296EC @ =gBankAttacker
- ldrb r0, [r5]
- strb r0, [r1]
- ldr r7, _080296F0 @ =gBattleMons
- ldrb r0, [r5]
- movs r6, 0x58
- muls r0, r6
- adds r0, r7
- ldrh r1, [r0, 0x28]
- ldrh r0, [r0, 0x2C]
- cmp r1, r0
- beq _0802975C
- ldr r4, _080296F4 @ =gBattleWeather
- ldrh r0, [r4]
- cmp r0, 0
- beq _080296CE
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080296CE
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080296FC
-_080296CE:
- ldr r3, _080296F8 @ =gBattleMoveDamage
- ldr r2, _080296F0 @ =gBattleMons
- ldr r0, _080296EC @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r3]
- adds r1, r3, 0
- b _08029736
- .align 2, 0
-_080296E8: .4byte gBankTarget
-_080296EC: .4byte gBankAttacker
-_080296F0: .4byte gBattleMons
-_080296F4: .4byte gBattleWeather
-_080296F8: .4byte gBattleMoveDamage
-_080296FC:
- ldrh r1, [r4]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _08029728
- ldr r4, _08029724 @ =gBattleMoveDamage
- ldrb r0, [r5]
- muls r0, r6
- adds r0, r7
- ldrh r1, [r0, 0x2C]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- movs r1, 0x1E
- bl __divsi3
- str r0, [r4]
- adds r1, r4, 0
- b _08029736
- .align 2, 0
-_08029724: .4byte gBattleMoveDamage
-_08029728:
- ldr r1, _08029754 @ =gBattleMoveDamage
- ldrb r0, [r5]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0, 0x2C]
- lsrs r0, 2
- str r0, [r1]
-_08029736:
- adds r2, r1, 0
- ldr r0, [r2]
- cmp r0, 0
- bne _08029742
- movs r0, 0x1
- str r0, [r2]
-_08029742:
- ldr r0, [r1]
- negs r0, r0
- str r0, [r1]
- ldr r1, _08029758 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08029776
- .align 2, 0
-_08029754: .4byte gBattleMoveDamage
-_08029758: .4byte gBattlescriptCurrInstr
-_0802975C:
- ldr r3, _08029780 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08029776:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029780: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC0_recoverbasedonsunlight
-
- thumb_func_start sub_8029784
-sub_8029784: @ 8029784
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r2, _08029894 @ =gBattleMons
- ldr r0, _08029898 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- adds r4, r1, 0
- muls r4, r0
- adds r4, r2
- ldrb r0, [r4, 0x14]
- mov r10, r0
- mov r7, r10
- lsls r7, 27
- adds r0, r7, 0
- lsrs r0, 27
- mov r10, r0
- movs r1, 0x2
- mov r2, r10
- ands r2, r1
- asrs r2, 1
- ldrh r7, [r4, 0x14]
- mov r9, r7
- mov r0, r9
- lsls r0, 22
- mov r9, r0
- lsrs r3, r0, 27
- adds r0, r1, 0
- ands r0, r3
- orrs r2, r0
- ldrb r7, [r4, 0x15]
- mov r8, r7
- mov r0, r8
- lsls r0, 25
- mov r8, r0
- lsrs r3, r0, 27
- adds r0, r1, 0
- ands r0, r3
- lsls r0, 1
- orrs r2, r0
- ldr r6, [r4, 0x14]
- lsls r6, 12
- lsrs r3, r6, 27
- adds r0, r1, 0
- ands r0, r3
- lsls r0, 2
- orrs r2, r0
- ldrh r5, [r4, 0x16]
- lsls r5, 23
- lsrs r3, r5, 27
- adds r0, r1, 0
- ands r0, r3
- lsls r0, 3
- orrs r2, r0
- ldrb r3, [r4, 0x17]
- lsls r3, 26
- lsrs r0, r3, 27
- ands r1, r0
- lsls r1, 4
- orrs r2, r1
- movs r1, 0x1
- adds r4, r1, 0
- mov r7, r10
- ands r4, r7
- mov r0, r9
- lsrs r0, 27
- mov r9, r0
- adds r0, r1, 0
- mov r7, r9
- ands r0, r7
- lsls r0, 1
- orrs r4, r0
- mov r0, r8
- lsrs r0, 27
- mov r8, r0
- adds r0, r1, 0
- mov r7, r8
- ands r0, r7
- lsls r0, 2
- orrs r4, r0
- lsrs r6, 27
- adds r0, r1, 0
- ands r0, r6
- lsls r0, 3
- orrs r4, r0
- lsrs r5, 27
- adds r0, r1, 0
- ands r0, r5
- lsls r0, 4
- orrs r4, r0
- lsrs r3, 27
- ands r1, r3
- lsls r1, 5
- orrs r4, r1
- ldr r5, _0802989C @ =gDynamicBasePower
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- movs r1, 0x3F
- bl __divsi3
- adds r0, 0x1E
- strh r0, [r5]
- ldr r5, _080298A0 @ =0x02000000
- lsls r0, r4, 4
- subs r0, r4
- movs r1, 0x3F
- bl __divsi3
- adds r1, r0, 0x1
- ldr r0, _080298A4 @ =0x0001601c
- adds r5, r0
- strb r1, [r5]
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, 0x8
- bls _08029876
- adds r0, r1, 0x1
- strb r0, [r5]
-_08029876:
- ldrb r0, [r5]
- movs r1, 0xC0
- orrs r0, r1
- strb r0, [r5]
- ldr r1, _080298A8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029894: .4byte gBattleMons
-_08029898: .4byte gBankAttacker
-_0802989C: .4byte gDynamicBasePower
-_080298A0: .4byte 0x02000000
-_080298A4: .4byte 0x0001601c
-_080298A8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8029784
-
- thumb_func_start atkC2_selectnexttarget
-atkC2_selectnexttarget: @ 80298AC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _08029908 @ =gBankTarget
- movs r1, 0
- strb r1, [r0]
- ldr r1, _0802990C @ =gNoOfAllBanks
- ldrb r1, [r1]
- adds r6, r0, 0
- ldr r0, _08029910 @ =gBattlescriptCurrInstr
- mov r8, r0
- cmp r1, 0
- beq _080298F6
- adds r3, r6, 0
- ldr r0, _08029914 @ =gBankAttacker
- ldrb r5, [r0]
- ldr r0, _08029918 @ =gBitTable
- mov r12, r0
- adds r4, r1, 0
- ldr r7, _0802991C @ =gAbsentBankFlags
-_080298D4:
- ldrb r2, [r3]
- cmp r2, r5
- beq _080298EA
- ldrb r0, [r7]
- ldrb r1, [r6]
- lsls r1, 2
- add r1, r12
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- beq _080298F6
-_080298EA:
- adds r0, r2, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r4
- bcc _080298D4
-_080298F6:
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029908: .4byte gBankTarget
-_0802990C: .4byte gNoOfAllBanks
-_08029910: .4byte gBattlescriptCurrInstr
-_08029914: .4byte gBankAttacker
-_08029918: .4byte gBitTable
-_0802991C: .4byte gAbsentBankFlags
- thumb_func_end atkC2_selectnexttarget
-
- thumb_func_start atkC3_setfutureattack
-atkC3_setfutureattack: @ 8029920
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- ldr r0, _08029958 @ =gWishFutureKnock
- mov r8, r0
- ldr r7, _0802995C @ =gBankTarget
- ldrb r1, [r7]
- adds r0, r1, r0
- ldrb r6, [r0]
- cmp r6, 0
- beq _08029964
- ldr r3, _08029960 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08029A2E
- .align 2, 0
-_08029958: .4byte gWishFutureKnock
-_0802995C: .4byte gBankTarget
-_08029960: .4byte gBattlescriptCurrInstr
-_08029964:
- lsls r1, 1
- mov r0, r8
- adds r0, 0x18
- adds r1, r0
- ldr r2, _08029A04 @ =gCurrentMove
- mov r9, r2
- ldrh r0, [r2]
- strh r0, [r1]
- mov r0, r8
- adds r0, 0x4
- ldrb r4, [r7]
- adds r0, r4
- ldr r5, _08029A08 @ =gBankAttacker
- ldrb r1, [r5]
- strb r1, [r0]
- ldrb r0, [r7]
- add r0, r8
- movs r1, 0x3
- strb r1, [r0]
- ldr r4, _08029A0C @ =gSideAffecting
- ldrb r0, [r7]
- bl GetBankIdentity
- movs r1, 0x1
- mov r10, r1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldrb r0, [r5]
- movs r4, 0x58
- muls r0, r4
- ldr r2, _08029A10 @ =gBattleMons
- adds r0, r2
- ldrb r1, [r7]
- muls r1, r4
- adds r1, r2
- mov r4, r9
- ldrh r2, [r4]
- str r6, [sp]
- str r6, [sp, 0x4]
- ldrb r4, [r5]
- str r4, [sp, 0x8]
- ldrb r4, [r7]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- ldrb r1, [r7]
- lsls r1, 2
- mov r2, r8
- adds r2, 0x8
- adds r1, r2
- str r0, [r1]
- ldr r1, _08029A14 @ =gProtectStructs
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _080299F2
- ldrb r4, [r7]
- lsls r4, 2
- adds r4, r2
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_080299F2:
- mov r0, r9
- ldrh r1, [r0]
- ldr r0, _08029A18 @ =0x00000161
- cmp r1, r0
- bne _08029A20
- ldr r0, _08029A1C @ =gBattleCommunication
- mov r1, r10
- strb r1, [r0, 0x5]
- b _08029A26
- .align 2, 0
-_08029A04: .4byte gCurrentMove
-_08029A08: .4byte gBankAttacker
-_08029A0C: .4byte gSideAffecting
-_08029A10: .4byte gBattleMons
-_08029A14: .4byte gProtectStructs
-_08029A18: .4byte 0x00000161
-_08029A1C: .4byte gBattleCommunication
-_08029A20:
- ldr r1, _08029A40 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
-_08029A26:
- ldr r1, _08029A44 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08029A2E:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029A40: .4byte gBattleCommunication
-_08029A44: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC3_setfutureattack
-
- thumb_func_start atkC4_802B910
-atkC4_802B910: @ 8029A48
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _08029A8C @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r7, _08029A90 @ =gEnemyParty
- cmp r0, 0
- bne _08029A62
- ldr r7, _08029A94 @ =gPlayerParty
-_08029A62:
- ldr r2, _08029A98 @ =gBattleMons
- ldr r0, _08029A9C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08029AA4
- ldr r3, _08029AA0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- b _08029C40
- .align 2, 0
-_08029A8C: .4byte gBankAttacker
-_08029A90: .4byte gEnemyParty
-_08029A94: .4byte gPlayerParty
-_08029A98: .4byte gBattleMons
-_08029A9C: .4byte gBankTarget
-_08029AA0: .4byte gBattlescriptCurrInstr
-_08029AA4:
- ldr r6, _08029BE0 @ =gBattleCommunication
- ldrb r0, [r6]
- mov r8, r0
- cmp r0, 0x5
- bls _08029AB0
- b _08029C0C
-_08029AB0:
- adds r4, r6, 0
- movs r5, 0x64
-_08029AB4:
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08029AF8
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08029AF8
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08029AF8
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x37
- bl GetMonData
- cmp r0, 0
- beq _08029B08
-_08029AF8:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r6, r4, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _08029AB4
-_08029B08:
- ldr r1, _08029BE0 @ =gBattleCommunication
- mov r9, r1
- ldrb r2, [r1]
- cmp r2, 0x5
- bhi _08029C0C
- ldr r1, _08029BE4 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r6, _08029BE8 @ =gBankAttacker
- ldrb r0, [r6]
- strb r0, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08029BEC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x9
- str r0, [r1]
- ldr r2, _08029BF0 @ =gBattleMoveDamage
- mov r8, r2
- ldr r5, _08029BF4 @ =gBaseStats
- mov r1, r9
- ldrb r0, [r1]
- movs r4, 0x64
- muls r0, r4
- adds r0, r7, r0
- movs r1, 0xB
- bl GetMonData
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r3, [r1, 0x1]
- mov r2, r8
- str r3, [r2]
- ldr r2, _08029BF8 @ =gBattleMoves
- ldr r0, _08029BFC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- muls r0, r3
- mov r1, r8
- str r0, [r1]
- mov r2, r9
- ldrb r0, [r2]
- muls r0, r4
- adds r0, r7, r0
- movs r1, 0x38
- bl GetMonData
- lsls r0, 1
- movs r1, 0x5
- bl __udivsi3
- adds r0, 0x2
- mov r2, r8
- ldr r1, [r2]
- muls r0, r1
- str r0, [r2]
- ldr r3, _08029C00 @ =gBattleMons
- ldr r1, _08029C04 @ =gBankTarget
- ldrb r2, [r1]
- movs r1, 0x58
- muls r1, r2
- adds r1, r3
- ldrh r2, [r1]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r5
- ldrb r1, [r1, 0x2]
- bl __divsi3
- mov r1, r8
- str r0, [r1]
- movs r1, 0x32
- bl __divsi3
- adds r2, r0, 0x2
- mov r0, r8
- str r2, [r0]
- ldr r1, _08029C08 @ =gProtectStructs
- ldrb r0, [r6]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _08029BD4
- lsls r0, r2, 4
- subs r0, r2
- movs r1, 0xA
- bl __divsi3
- mov r1, r8
- str r0, [r1]
-_08029BD4:
- mov r2, r9
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _08029C46
- .align 2, 0
-_08029BE0: .4byte gBattleCommunication
-_08029BE4: .4byte gBattleTextBuff1
-_08029BE8: .4byte gBankAttacker
-_08029BEC: .4byte gBattlescriptCurrInstr
-_08029BF0: .4byte gBattleMoveDamage
-_08029BF4: .4byte gBaseStats
-_08029BF8: .4byte gBattleMoves
-_08029BFC: .4byte gCurrentMove
-_08029C00: .4byte gBattleMons
-_08029C04: .4byte gBankTarget
-_08029C08: .4byte gProtectStructs
-_08029C0C:
- mov r0, r8
- cmp r0, 0
- beq _08029C2C
- ldr r3, _08029C28 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- b _08029C40
- .align 2, 0
-_08029C28: .4byte gBattlescriptCurrInstr
-_08029C2C:
- ldr r3, _08029C54 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x8]
-_08029C40:
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08029C46:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029C54: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC4_802B910
-
- thumb_func_start atkC5_hidepreattack
-atkC5_hidepreattack: @ 8029C58
- push {lr}
- ldr r0, _08029C6C @ =gCurrentMove
- ldrh r1, [r0]
- cmp r1, 0x5B
- beq _08029C98
- cmp r1, 0x5B
- bgt _08029C70
- cmp r1, 0x13
- beq _08029C7C
- b _08029CC4
- .align 2, 0
-_08029C6C: .4byte gCurrentMove
-_08029C70:
- ldr r0, _08029C8C @ =0x00000123
- cmp r1, r0
- beq _08029CB0
- adds r0, 0x31
- cmp r1, r0
- bne _08029CC4
-_08029C7C:
- ldr r2, _08029C90 @ =gStatuses3
- ldr r0, _08029C94 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x40
- b _08029CC0
- .align 2, 0
-_08029C8C: .4byte 0x00000123
-_08029C90: .4byte gStatuses3
-_08029C94: .4byte gBankAttacker
-_08029C98:
- ldr r2, _08029CA8 @ =gStatuses3
- ldr r0, _08029CAC @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x80
- b _08029CC0
- .align 2, 0
-_08029CA8: .4byte gStatuses3
-_08029CAC: .4byte gBankAttacker
-_08029CB0:
- ldr r2, _08029CD0 @ =gStatuses3
- ldr r0, _08029CD4 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 11
-_08029CC0:
- orrs r0, r2
- str r0, [r1]
-_08029CC4:
- ldr r1, _08029CD8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029CD0: .4byte gStatuses3
-_08029CD4: .4byte gBankAttacker
-_08029CD8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC5_hidepreattack
-
- thumb_func_start atkC6_unhidepostattack
-atkC6_unhidepostattack: @ 8029CDC
- push {lr}
- ldr r0, _08029CF0 @ =gCurrentMove
- ldrh r1, [r0]
- cmp r1, 0x5B
- beq _08029D20
- cmp r1, 0x5B
- bgt _08029CF4
- cmp r1, 0x13
- beq _08029D00
- b _08029D4E
- .align 2, 0
-_08029CF0: .4byte gCurrentMove
-_08029CF4:
- ldr r0, _08029D14 @ =0x00000123
- cmp r1, r0
- beq _08029D3C
- adds r0, 0x31
- cmp r1, r0
- bne _08029D4E
-_08029D00:
- ldr r2, _08029D18 @ =gStatuses3
- ldr r0, _08029D1C @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x41
- negs r2, r2
- b _08029D4A
- .align 2, 0
-_08029D14: .4byte 0x00000123
-_08029D18: .4byte gStatuses3
-_08029D1C: .4byte gBankAttacker
-_08029D20:
- ldr r2, _08029D34 @ =gStatuses3
- ldr r0, _08029D38 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x81
- negs r2, r2
- b _08029D4A
- .align 2, 0
-_08029D34: .4byte gStatuses3
-_08029D38: .4byte gBankAttacker
-_08029D3C:
- ldr r2, _08029D5C @ =gStatuses3
- ldr r0, _08029D60 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- ldr r2, _08029D64 @ =0xfffbffff
-_08029D4A:
- ands r0, r2
- str r0, [r1]
-_08029D4E:
- ldr r1, _08029D68 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029D5C: .4byte gStatuses3
-_08029D60: .4byte gBankAttacker
-_08029D64: .4byte 0xfffbffff
-_08029D68: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC6_unhidepostattack
-
- thumb_func_start atkC7_setminimize
-atkC7_setminimize: @ 8029D6C
- push {lr}
- ldr r0, _08029D9C @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _08029D90
- ldr r2, _08029DA0 @ =gStatuses3
- ldr r0, _08029DA4 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 1
- orrs r0, r2
- str r0, [r1]
-_08029D90:
- ldr r1, _08029DA8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029D9C: .4byte gHitMarker
-_08029DA0: .4byte gStatuses3
-_08029DA4: .4byte gBankAttacker
-_08029DA8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC7_setminimize
-
- thumb_func_start sub_8029DAC
-sub_8029DAC: @ 8029DAC
- push {lr}
- ldr r3, _08029DD0 @ =gBattleWeather
- ldrh r1, [r3]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08029DDC
- ldr r2, _08029DD4 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08029DD8 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08029DEA
- .align 2, 0
-_08029DD0: .4byte gBattleWeather
-_08029DD4: .4byte gBattleMoveFlags
-_08029DD8: .4byte gBattleCommunication
-_08029DDC:
- strh r2, [r3]
- ldr r0, _08029DF8 @ =gBattleCommunication
- movs r1, 0x5
- strb r1, [r0, 0x5]
- ldr r0, _08029DFC @ =gWishFutureKnock
- adds r0, 0x28
- strb r1, [r0]
-_08029DEA:
- ldr r1, _08029E00 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029DF8: .4byte gBattleCommunication
-_08029DFC: .4byte gWishFutureKnock
-_08029E00: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8029DAC
-
- thumb_func_start atkC9_jumpifattackandspecialattackcannotfall
-atkC9_jumpifattackandspecialattackcannotfall: @ 8029E04
- push {r4,lr}
- ldr r2, _08029E48 @ =gBattleMons
- ldr r0, _08029E4C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- movs r0, 0x19
- ldrsb r0, [r1, r0]
- adds r3, r2, 0
- cmp r0, 0
- bne _08029E58
- movs r0, 0x1C
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bne _08029E58
- ldr r0, _08029E50 @ =gBattleCommunication
- ldrb r0, [r0, 0x6]
- cmp r0, 0x1
- beq _08029E58
- ldr r3, _08029E54 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08029E84
- .align 2, 0
-_08029E48: .4byte gBattleMons
-_08029E4C: .4byte gBankTarget
-_08029E50: .4byte gBattleCommunication
-_08029E54: .4byte gBattlescriptCurrInstr
-_08029E58:
- ldr r4, _08029E8C @ =gActiveBank
- ldr r0, _08029E90 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r2, _08029E94 @ =gBattleMoveDamage
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0, 0x28]
- str r0, [r2]
- ldr r1, _08029E98 @ =0x00007fff
- movs r0, 0
- bl EmitHealthBarUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _08029E9C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08029E84:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08029E8C: .4byte gActiveBank
-_08029E90: .4byte gBankAttacker
-_08029E94: .4byte gBattleMoveDamage
-_08029E98: .4byte 0x00007fff
-_08029E9C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC9_jumpifattackandspecialattackcannotfall
-
- thumb_func_start atkCA_setforcedtarget
-atkCA_setforcedtarget: @ 8029EA0
- push {r4,r5,lr}
- ldr r4, _08029EE0 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- ldr r5, _08029EE4 @ =gSideTimer
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- movs r0, 0x1
- strb r0, [r1, 0x8]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r0, [r4]
- strb r0, [r1, 0x9]
- ldr r1, _08029EE8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08029EE0: .4byte gBankAttacker
-_08029EE4: .4byte gSideTimer
-_08029EE8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCA_setforcedtarget
-
- thumb_func_start atkCB_setcharge
-atkCB_setcharge: @ 8029EEC
- push {r4,lr}
- ldr r0, _08029F40 @ =gStatuses3
- ldr r3, _08029F44 @ =gBankAttacker
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 2
- orrs r0, r2
- str r0, [r1]
- ldr r4, _08029F48 @ =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r2, [r0, 0x12]
- movs r1, 0x10
- negs r1, r1
- ands r1, r2
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0, 0x12]
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r2, [r0, 0x12]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0, 0x12]
- ldr r1, _08029F4C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08029F40: .4byte gStatuses3
-_08029F44: .4byte gBankAttacker
-_08029F48: .4byte gDisableStructs
-_08029F4C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCB_setcharge
-
- thumb_func_start atkCC_callterrainattack
-atkCC_callterrainattack: @ 8029F50
- push {r4,lr}
- ldr r2, _08029FA0 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _08029FA4 @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _08029FA8 @ =gCurrentMove
- ldr r1, _08029FAC @ =gNaturePowerMoves
- ldr r0, _08029FB0 @ =gBattleTerrain
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4]
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08029FB4 @ =gBankTarget
- strb r0, [r1]
- ldr r3, _08029FB8 @ =gUnknown_081D6BBC
- ldr r2, _08029FBC @ =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- bl b_movescr_stack_push
- ldr r1, _08029FC0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08029FA0: .4byte gHitMarker
-_08029FA4: .4byte 0xfffffbff
-_08029FA8: .4byte gCurrentMove
-_08029FAC: .4byte gNaturePowerMoves
-_08029FB0: .4byte gBattleTerrain
-_08029FB4: .4byte gBankTarget
-_08029FB8: .4byte gUnknown_081D6BBC
-_08029FBC: .4byte gBattleMoves
-_08029FC0: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCC_callterrainattack
-
- thumb_func_start atkCD_cureifburnedparalysedorpoisoned
-atkCD_cureifburnedparalysedorpoisoned: @ 8029FC4
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r1, _0802A010 @ =gBattleMons
- ldr r3, _0802A014 @ =gBankAttacker
- ldrb r0, [r3]
- movs r6, 0x58
- muls r0, r6
- adds r5, r1, 0
- adds r5, 0x4C
- adds r2, r0, r5
- ldr r0, [r2]
- movs r1, 0xD8
- ands r0, r1
- cmp r0, 0
- beq _0802A020
- movs r0, 0
- str r0, [r2]
- ldr r1, _0802A018 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r4, _0802A01C @ =gActiveBank
- ldrb r0, [r3]
- strb r0, [r4]
- ldrb r0, [r4]
- muls r0, r6
- adds r0, r5
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _0802A03A
- .align 2, 0
-_0802A010: .4byte gBattleMons
-_0802A014: .4byte gBankAttacker
-_0802A018: .4byte gBattlescriptCurrInstr
-_0802A01C: .4byte gActiveBank
-_0802A020:
- ldr r3, _0802A044 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A03A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A044: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCD_cureifburnedparalysedorpoisoned
-
- thumb_func_start atkCE_settorment
-atkCE_settorment: @ 802A048
- push {lr}
- ldr r1, _0802A080 @ =gBattleMons
- ldr r0, _0802A084 @ =gBankTarget
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 24
- cmp r1, 0
- bge _0802A08C
- ldr r3, _0802A088 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A098
- .align 2, 0
-_0802A080: .4byte gBattleMons
-_0802A084: .4byte gBankTarget
-_0802A088: .4byte gBattlescriptCurrInstr
-_0802A08C:
- orrs r1, r2
- str r1, [r0]
- ldr r1, _0802A09C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A098:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A09C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCE_settorment
-
- thumb_func_start atkCF_jumpifnodamage
-atkCF_jumpifnodamage: @ 802A0A0
- push {lr}
- ldr r2, _0802A0CC @ =gProtectStructs
- ldr r0, _0802A0D0 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0802A0C0
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0802A0D8
-_0802A0C0:
- ldr r1, _0802A0D4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A0F2
- .align 2, 0
-_0802A0CC: .4byte gProtectStructs
-_0802A0D0: .4byte gBankAttacker
-_0802A0D4: .4byte gBattlescriptCurrInstr
-_0802A0D8:
- ldr r3, _0802A0F8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A0F2:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A0F8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCF_jumpifnodamage
-
- thumb_func_start atkD0_settaunt
-atkD0_settaunt: @ 802A0FC
- push {r4,lr}
- ldr r4, _0802A140 @ =gDisableStructs
- ldr r3, _0802A144 @ =gBankTarget
- ldrb r0, [r3]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r2, r1, r4
- ldrb r1, [r2, 0x13]
- lsls r0, r1, 28
- cmp r0, 0
- bne _0802A14C
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x13]
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r2, [r0, 0x13]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0, 0x13]
- ldr r1, _0802A148 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A166
- .align 2, 0
-_0802A140: .4byte gDisableStructs
-_0802A144: .4byte gBankTarget
-_0802A148: .4byte gBattlescriptCurrInstr
-_0802A14C:
- ldr r3, _0802A16C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A166:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A16C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkD0_settaunt
-
- thumb_func_start sub_802A170
-sub_802A170: @ 802A170
- push {r4,lr}
- ldr r4, _0802A1D8 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r3, _0802A1DC @ =gBankTarget
- strb r0, [r3]
- ldr r0, _0802A1E0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802A1F4
- ldr r0, _0802A1E4 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802A1E8 @ =gBitTable
- ldrb r3, [r3]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802A1F4
- ldr r1, _0802A1EC @ =gProtectStructs
- ldrb r0, [r4]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- blt _0802A1F4
- lsls r0, r3, 4
- adds r2, r0, r1
- ldrb r1, [r2]
- lsls r0, r1, 28
- cmp r0, 0
- blt _0802A1F4
- movs r0, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0802A1F0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A20E
- .align 2, 0
-_0802A1D8: .4byte gBankAttacker
-_0802A1DC: .4byte gBankTarget
-_0802A1E0: .4byte gBattleTypeFlags
-_0802A1E4: .4byte gAbsentBankFlags
-_0802A1E8: .4byte gBitTable
-_0802A1EC: .4byte gProtectStructs
-_0802A1F0: .4byte gBattlescriptCurrInstr
-_0802A1F4:
- ldr r3, _0802A214 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A20E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A214: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802A170
-
- thumb_func_start sub_802A218
-sub_802A218: @ 802A218
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _0802A30C @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802A24C
- ldr r0, _0802A310 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0802A314 @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _0802A24C
- ldr r0, _0802A318 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _0802A2EE
-_0802A24C:
- ldr r4, _0802A30C @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0802A310 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0802A314 @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _0802A290
- ldr r0, _0802A318 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _0802A290
- ldr r0, _0802A31C @ =gWishFutureKnock
- adds r0, 0x29
- adds r0, r2, r0
- ldrb r1, [r0]
- ldr r3, _0802A320 @ =gBitTable
- ldr r2, _0802A324 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802A2EE
-_0802A290:
- ldr r0, _0802A328 @ =gBattleMons
- mov r9, r0
- ldr r1, _0802A30C @ =gBankAttacker
- ldrb r4, [r1]
- movs r2, 0x58
- mov r8, r2
- mov r0, r8
- muls r0, r4
- mov r3, r9
- adds r5, r0, r3
- ldrh r3, [r5, 0x2E]
- adds r1, r3, 0
- cmp r1, 0
- bne _0802A2BE
- ldr r0, _0802A32C @ =gBankTarget
- ldrb r0, [r0]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- beq _0802A2EE
-_0802A2BE:
- cmp r1, 0xAF
- beq _0802A2EE
- ldr r7, _0802A32C @ =gBankTarget
- ldrb r0, [r7]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- mov r1, r9
- adds r2, r0, r1
- ldrh r1, [r2, 0x2E]
- cmp r1, 0xAF
- beq _0802A2EE
- adds r0, r3, 0
- subs r0, 0x79
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bls _0802A2EE
- adds r0, r1, 0
- subs r0, 0x79
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bhi _0802A334
-_0802A2EE:
- ldr r3, _0802A330 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A49A
- .align 2, 0
-_0802A30C: .4byte gBankAttacker
-_0802A310: .4byte gBattleTypeFlags
-_0802A314: .4byte 0x00000902
-_0802A318: .4byte gTrainerBattleOpponent
-_0802A31C: .4byte gWishFutureKnock
-_0802A320: .4byte gBitTable
-_0802A324: .4byte gBattlePartyID
-_0802A328: .4byte gBattleMons
-_0802A32C: .4byte gBankTarget
-_0802A330: .4byte gBattlescriptCurrInstr
-_0802A334:
- adds r0, r2, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x3C
- bne _0802A36C
- ldr r1, _0802A360 @ =gBattlescriptCurrInstr
- ldr r0, _0802A364 @ =BattleScript_NoItemSteal
- str r0, [r1]
- ldr r1, _0802A368 @ =gLastUsedAbility
- ldrb r0, [r7]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _0802A49A
- .align 2, 0
-_0802A360: .4byte gBattlescriptCurrInstr
-_0802A364: .4byte BattleScript_NoItemSteal
-_0802A368: .4byte gLastUsedAbility
-_0802A36C:
- lsls r0, r4, 1
- ldr r4, _0802A458 @ =0x020160f0
- adds r6, r0, r4
- ldrh r5, [r5, 0x2E]
- mov r10, r5
- strh r1, [r6]
- ldr r3, _0802A45C @ =gBankAttacker
- ldrb r0, [r3]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldrb r0, [r7]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- mov r3, r10
- strh r3, [r0, 0x2E]
- ldr r5, _0802A460 @ =gActiveBank
- ldr r1, _0802A45C @ =gBankAttacker
- ldrb r0, [r1]
- strb r0, [r5]
- str r6, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldr r2, _0802A45C @ =gBankAttacker
- ldrb r0, [r2]
- bl MarkBufferBankForExecution
- ldrb r0, [r7]
- strb r0, [r5]
- ldrb r0, [r7]
- mov r3, r8
- muls r3, r0
- adds r0, r3, 0
- mov r1, r9
- adds r1, 0x2E
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r0, _0802A464 @ =0xfffe9f10
- adds r4, r0
- ldrb r0, [r7]
- lsls r0, 1
- ldr r2, _0802A468 @ =0x000160e8
- adds r0, r2
- adds r0, r4
- movs r1, 0
- strb r1, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _0802A46C @ =0x000160e9
- adds r0, r1
- adds r0, r4
- movs r3, 0
- strb r3, [r0]
- ldr r3, _0802A45C @ =gBankAttacker
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- adds r0, r4
- movs r2, 0
- strb r2, [r0]
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- adds r0, r4
- strb r2, [r0]
- ldr r1, _0802A470 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r1, _0802A474 @ =gBattleTextBuff1
- movs r3, 0xFD
- strb r3, [r1]
- movs r2, 0xA
- strb r2, [r1, 0x1]
- ldrh r0, [r6]
- strb r0, [r1, 0x2]
- ldrh r0, [r6]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _0802A478 @ =gBattleTextBuff2
- strb r3, [r1]
- strb r2, [r1, 0x1]
- mov r3, r10
- strb r3, [r1, 0x2]
- mov r2, r10
- lsrs r0, r2, 8
- strb r0, [r1, 0x3]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x4]
- cmp r2, 0
- beq _0802A480
- ldrh r0, [r6]
- cmp r0, 0
- beq _0802A494
- ldr r1, _0802A47C @ =gBattleCommunication
- movs r0, 0x2
- b _0802A498
- .align 2, 0
-_0802A458: .4byte 0x020160f0
-_0802A45C: .4byte gBankAttacker
-_0802A460: .4byte gActiveBank
-_0802A464: .4byte 0xfffe9f10
-_0802A468: .4byte 0x000160e8
-_0802A46C: .4byte 0x000160e9
-_0802A470: .4byte gBattlescriptCurrInstr
-_0802A474: .4byte gBattleTextBuff1
-_0802A478: .4byte gBattleTextBuff2
-_0802A47C: .4byte gBattleCommunication
-_0802A480:
- ldrh r0, [r6]
- cmp r0, 0
- beq _0802A494
- ldr r0, _0802A490 @ =gBattleCommunication
- movs r3, 0
- strb r3, [r0, 0x5]
- b _0802A49A
- .align 2, 0
-_0802A490: .4byte gBattleCommunication
-_0802A494:
- ldr r1, _0802A4AC @ =gBattleCommunication
- movs r0, 0x1
-_0802A498:
- strb r0, [r1, 0x5]
-_0802A49A:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A4AC: .4byte gBattleCommunication
- thumb_func_end sub_802A218
-
- thumb_func_start sub_802A4B0
-sub_802A4B0: @ 802A4B0
- push {r4,lr}
- ldr r3, _0802A4F0 @ =gBattleMons
- ldr r4, _0802A4F4 @ =gBankTarget
- ldrb r0, [r4]
- movs r2, 0x58
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- ldrb r1, [r0]
- adds r0, r1, 0
- cmp r0, 0
- beq _0802A504
- cmp r0, 0x19
- beq _0802A504
- ldr r0, _0802A4F8 @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- strb r1, [r0]
- ldr r1, _0802A4FC @ =gLastUsedAbility
- ldrb r0, [r4]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, _0802A500 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A51E
- .align 2, 0
-_0802A4F0: .4byte gBattleMons
-_0802A4F4: .4byte gBankTarget
-_0802A4F8: .4byte gBankAttacker
-_0802A4FC: .4byte gLastUsedAbility
-_0802A500: .4byte gBattlescriptCurrInstr
-_0802A504:
- ldr r3, _0802A524 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A51E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A524: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802A4B0
-
- thumb_func_start atkD4_802C408
-atkD4_802C408: @ 802A528
- push {r4-r7,lr}
- ldr r7, _0802A53C @ =gBattlescriptCurrInstr
- ldr r2, [r7]
- ldrb r3, [r2, 0x1]
- cmp r3, 0
- beq _0802A540
- cmp r3, 0x1
- beq _0802A578
- b _0802A5F4
- .align 2, 0
-_0802A53C: .4byte gBattlescriptCurrInstr
-_0802A540:
- ldr r1, _0802A56C @ =gWishFutureKnock
- ldr r4, _0802A570 @ =gBankAttacker
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r5, [r4]
- adds r3, r0, r5
- ldrb r0, [r3]
- cmp r0, 0
- bne _0802A5C4
- movs r0, 0x2
- strb r0, [r3]
- ldrb r0, [r4]
- adds r1, 0x24
- adds r1, r0, r1
- ldr r2, _0802A574 @ =gBattlePartyID
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x6
- b _0802A5F2
- .align 2, 0
-_0802A56C: .4byte gWishFutureKnock
-_0802A570: .4byte gBankAttacker
-_0802A574: .4byte gBattlePartyID
-_0802A578:
- ldr r1, _0802A5DC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r4, _0802A5E0 @ =gBankTarget
- ldrb r0, [r4]
- strb r0, [r1, 0x2]
- ldr r0, _0802A5E4 @ =gWishFutureKnock
- adds r0, 0x24
- ldrb r5, [r4]
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _0802A5E8 @ =gBattleMoveDamage
- ldr r6, _0802A5EC @ =gBattleMons
- ldrb r0, [r4]
- movs r5, 0x58
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _0802A5B0
- str r3, [r1]
-_0802A5B0:
- ldr r0, [r1]
- negs r0, r0
- str r0, [r1]
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r6
- ldrh r1, [r0, 0x28]
- ldrh r0, [r0, 0x2C]
- cmp r1, r0
- bne _0802A5F0
-_0802A5C4:
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r7]
- b _0802A5F4
- .align 2, 0
-_0802A5DC: .4byte gBattleTextBuff1
-_0802A5E0: .4byte gBankTarget
-_0802A5E4: .4byte gWishFutureKnock
-_0802A5E8: .4byte gBattleMoveDamage
-_0802A5EC: .4byte gBattleMons
-_0802A5F0:
- adds r0, r2, 0x6
-_0802A5F2:
- str r0, [r7]
-_0802A5F4:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atkD4_802C408
-
- thumb_func_start sub_802A5FC
-sub_802A5FC: @ 802A5FC
- push {lr}
- ldr r1, _0802A634 @ =gStatuses3
- ldr r0, _0802A638 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 3
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0802A640
- ldr r3, _0802A63C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A64C
- .align 2, 0
-_0802A634: .4byte gStatuses3
-_0802A638: .4byte gBankAttacker
-_0802A63C: .4byte gBattlescriptCurrInstr
-_0802A640:
- orrs r1, r3
- str r1, [r2]
- ldr r1, _0802A650 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A64C:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A650: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802A5FC
-
- thumb_func_start atkD6_doubledamagedealtifdamaged
-atkD6_doubledamagedealtifdamaged: @ 802A654
- push {lr}
- ldr r3, _0802A6A4 @ =gProtectStructs
- ldr r0, _0802A6A8 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r0, r3, 0x4
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0802A674
- adds r0, r2, r3
- ldr r1, _0802A6AC @ =gBankTarget
- ldrb r0, [r0, 0xC]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0802A68C
-_0802A674:
- adds r0, r3, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0802A696
- adds r0, r2, r3
- ldr r1, _0802A6AC @ =gBankTarget
- ldrb r0, [r0, 0xD]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0802A696
-_0802A68C:
- ldr r0, _0802A6B0 @ =0x02000000
- ldr r1, _0802A6B4 @ =0x0001601f
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
-_0802A696:
- ldr r1, _0802A6B8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0802A6A4: .4byte gProtectStructs
-_0802A6A8: .4byte gBankAttacker
-_0802A6AC: .4byte gBankTarget
-_0802A6B0: .4byte 0x02000000
-_0802A6B4: .4byte 0x0001601f
-_0802A6B8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkD6_doubledamagedealtifdamaged
-
- thumb_func_start sub_802A6BC
-sub_802A6BC: @ 802A6BC
- push {r4,lr}
- ldr r1, _0802A700 @ =gStatuses3
- ldr r0, _0802A704 @ =gBankTarget
- ldrb r3, [r0]
- lsls r0, r3, 2
- adds r4, r0, r1
- ldr r2, [r4]
- movs r0, 0xC0
- lsls r0, 5
- ands r0, r2
- cmp r0, 0
- bne _0802A6E4
- ldr r1, _0802A708 @ =gBattleMons
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x4C
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802A710
-_0802A6E4:
- ldr r3, _0802A70C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A720
- .align 2, 0
-_0802A700: .4byte gStatuses3
-_0802A704: .4byte gBankTarget
-_0802A708: .4byte gBattleMons
-_0802A70C: .4byte gBattlescriptCurrInstr
-_0802A710:
- movs r0, 0x80
- lsls r0, 5
- orrs r2, r0
- str r2, [r4]
- ldr r1, _0802A728 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A720:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A728: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802A6BC
-
- thumb_func_start atkD8_setdamagetohealthdifference
-atkD8_setdamagetohealthdifference: @ 802A72C
- push {lr}
- ldr r2, _0802A768 @ =gBattleMons
- ldr r0, _0802A76C @ =gBankTarget
- ldrb r0, [r0]
- movs r1, 0x58
- muls r0, r1
- adds r3, r0, r2
- ldr r0, _0802A770 @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r1
- adds r1, r0, r2
- ldrh r0, [r3, 0x28]
- ldrh r2, [r1, 0x28]
- cmp r0, r2
- bhi _0802A778
- ldr r3, _0802A774 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A78A
- .align 2, 0
-_0802A768: .4byte gBattleMons
-_0802A76C: .4byte gBankTarget
-_0802A770: .4byte gBankAttacker
-_0802A774: .4byte gBattlescriptCurrInstr
-_0802A778:
- ldr r2, _0802A790 @ =gBattleMoveDamage
- ldrh r0, [r3, 0x28]
- ldrh r1, [r1, 0x28]
- subs r0, r1
- str r0, [r2]
- ldr r1, _0802A794 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A78A:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A790: .4byte gBattleMoveDamage
-_0802A794: .4byte gBattlescriptCurrInstr
- thumb_func_end atkD8_setdamagetohealthdifference
-
- thumb_func_start atkD9_scaledamagebyhealthratio
-atkD9_scaledamagebyhealthratio: @ 802A798
- push {r4,lr}
- ldr r4, _0802A7E4 @ =gDynamicBasePower
- ldrh r0, [r4]
- cmp r0, 0
- bne _0802A7D4
- ldr r2, _0802A7E8 @ =gBattleMoves
- ldr r0, _0802A7EC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r3, [r0, 0x1]
- ldr r2, _0802A7F0 @ =gBattleMons
- ldr r0, _0802A7F4 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- ldrh r0, [r1, 0x28]
- muls r0, r3
- ldrh r1, [r1, 0x2C]
- bl __divsi3
- strh r0, [r4]
- lsls r0, 16
- cmp r0, 0
- bne _0802A7D4
- movs r0, 0x1
- strh r0, [r4]
-_0802A7D4:
- ldr r1, _0802A7F8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A7E4: .4byte gDynamicBasePower
-_0802A7E8: .4byte gBattleMoves
-_0802A7EC: .4byte gCurrentMove
-_0802A7F0: .4byte gBattleMons
-_0802A7F4: .4byte gBankAttacker
-_0802A7F8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkD9_scaledamagebyhealthratio
-
- thumb_func_start atkDA_abilityswap
-atkDA_abilityswap: @ 802A7FC
- push {r4-r6,lr}
- ldr r5, _0802A860 @ =gBattleMons
- ldr r0, _0802A864 @ =gBankAttacker
- ldrb r0, [r0]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- adds r2, r0, 0
- adds r2, 0x20
- ldrb r1, [r2]
- cmp r1, 0
- bne _0802A824
- ldr r0, _0802A868 @ =gBankTarget
- ldrb r0, [r0]
- muls r0, r4
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802A844
-_0802A824:
- cmp r1, 0x19
- beq _0802A844
- ldr r6, _0802A868 @ =gBankTarget
- ldrb r0, [r6]
- muls r0, r4
- adds r0, r5
- adds r0, 0x20
- ldrb r3, [r0]
- cmp r3, 0x19
- beq _0802A844
- ldr r0, _0802A86C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0802A874
-_0802A844:
- ldr r3, _0802A870 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A88A
- .align 2, 0
-_0802A860: .4byte gBattleMons
-_0802A864: .4byte gBankAttacker
-_0802A868: .4byte gBankTarget
-_0802A86C: .4byte gBattleMoveFlags
-_0802A870: .4byte gBattlescriptCurrInstr
-_0802A874:
- ldrb r1, [r2]
- strb r3, [r2]
- ldrb r0, [r6]
- muls r0, r4
- adds r0, r5
- adds r0, 0x20
- strb r1, [r0]
- ldr r1, _0802A890 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A88A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A890: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDA_abilityswap
-
- thumb_func_start atkDB_imprisoneffect
-atkDB_imprisoneffect: @ 802A894
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r0, 0
- mov r8, r0
- ldr r1, _0802A8B8 @ =gStatuses3
- ldr r0, _0802A8BC @ =gBankAttacker
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _0802A8E8
- b _0802A95E
- .align 2, 0
-_0802A8B8: .4byte gStatuses3
-_0802A8BC: .4byte gBankAttacker
-_0802A8C0:
- ldr r0, _0802A8E0 @ =gStatuses3
- mov r2, r9
- ldrb r1, [r2]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 6
- orrs r0, r2
- str r0, [r1]
- ldr r1, _0802A8E4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A956
- .align 2, 0
-_0802A8E0: .4byte gStatuses3
-_0802A8E4: .4byte gBattlescriptCurrInstr
-_0802A8E8:
- adds r0, r2, 0
- bl sub_801529C
- movs r6, 0
- b _0802A94E
-_0802A8F2:
- adds r0, r6, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r8, r0
- beq _0802A948
- movs r4, 0
- ldr r7, _0802A984 @ =gBankAttacker
- mov r9, r7
- ldr r0, _0802A988 @ =gBattleMons
- mov r12, r0
- mov r1, r9
- ldrb r0, [r1]
- mov r2, r12
- adds r2, 0xC
- movs r1, 0x58
- muls r0, r1
- adds r3, r0, r2
- adds r5, r6, 0
- muls r5, r1
-_0802A91C:
- movs r2, 0
- ldrh r1, [r3]
- mov r0, r12
- adds r0, 0xC
- adds r0, r5, r0
-_0802A926:
- ldrh r7, [r0]
- cmp r1, r7
- bne _0802A930
- cmp r1, 0
- bne _0802A938
-_0802A930:
- adds r0, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- ble _0802A926
-_0802A938:
- cmp r2, 0x4
- bne _0802A944
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0802A91C
-_0802A944:
- cmp r4, 0x4
- bne _0802A8C0
-_0802A948:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0802A94E:
- ldr r0, _0802A98C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0802A8F2
-_0802A956:
- ldr r0, _0802A98C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bne _0802A978
-_0802A95E:
- ldr r3, _0802A990 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A978:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A984: .4byte gBankAttacker
-_0802A988: .4byte gBattleMons
-_0802A98C: .4byte gNoOfAllBanks
-_0802A990: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDB_imprisoneffect
-
- thumb_func_start atkDC_setgrudge
-atkDC_setgrudge: @ 802A994
- push {lr}
- ldr r1, _0802A9CC @ =gStatuses3
- ldr r0, _0802A9D0 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 7
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0802A9D8
- ldr r3, _0802A9D4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A9E4
- .align 2, 0
-_0802A9CC: .4byte gStatuses3
-_0802A9D0: .4byte gBankAttacker
-_0802A9D4: .4byte gBattlescriptCurrInstr
-_0802A9D8:
- orrs r1, r3
- str r1, [r2]
- ldr r1, _0802A9E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A9E4:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A9E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDC_setgrudge
-
- thumb_func_start atkDD_weightdamagecalculation
-atkDD_weightdamagecalculation: @ 802A9EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
- ldr r2, _0802AA50 @ =gWeightDamage
- ldrh r0, [r2]
- ldr r1, _0802AA54 @ =0x0000ffff
- cmp r0, r1
- beq _0802AA64
- adds r6, r2, 0
- ldr r0, _0802AA58 @ =gBattleMons
- mov r8, r0
- adds r7, r1, 0
- adds r4, r6, 0
-_0802AA08:
- ldr r0, _0802AA5C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- add r0, r8
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetPokedexHeightWeight
- ldrh r1, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- bhi _0802AA36
- adds r4, 0x4
- adds r5, 0x2
- ldrh r0, [r4]
- cmp r0, r7
- bne _0802AA08
-_0802AA36:
- lsls r0, r5, 1
- adds r0, r6
- ldrh r1, [r0]
- ldr r0, _0802AA54 @ =0x0000ffff
- cmp r1, r0
- beq _0802AA64
- ldr r0, _0802AA60 @ =gDynamicBasePower
- adds r1, r5, 0x1
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- strh r1, [r0]
- b _0802AA6A
- .align 2, 0
-_0802AA50: .4byte gWeightDamage
-_0802AA54: .4byte 0x0000ffff
-_0802AA58: .4byte gBattleMons
-_0802AA5C: .4byte gBankTarget
-_0802AA60: .4byte gDynamicBasePower
-_0802AA64:
- ldr r1, _0802AA7C @ =gDynamicBasePower
- movs r0, 0x78
- strh r0, [r1]
-_0802AA6A:
- ldr r1, _0802AA80 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802AA7C: .4byte gDynamicBasePower
-_0802AA80: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDD_weightdamagecalculation
-
- thumb_func_start atkDE_asistattackselect
-atkDE_asistattackselect: @ 802AA84
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0
- mov r10, r0
- ldr r0, _0802AB9C @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- ldr r0, _0802ABA0 @ =gPlayerParty
- str r0, [sp]
- cmp r1, 0
- beq _0802AAAC
- ldr r1, _0802ABA4 @ =gEnemyParty
- str r1, [sp]
-_0802AAAC:
- movs r2, 0
-_0802AAAE:
- ldr r1, _0802ABA8 @ =gBattlePartyID
- ldr r0, _0802AB9C @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- adds r1, r2, 0x1
- str r1, [sp, 0x4]
- ldrh r0, [r0]
- cmp r2, r0
- beq _0802AB54
- movs r0, 0x64
- adds r6, r2, 0
- muls r6, r0
- ldr r0, [sp]
- adds r4, r0, r6
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _0802AB54
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _0802AB54
- movs r5, 0
- ldr r1, _0802ABAC @ =0x0000ffff
- mov r8, r1
- mov r9, r6
- mov r1, r10
- lsls r0, r1, 1
- ldr r1, _0802ABB0 @ =0x02016024
- adds r6, r0, r1
-_0802AAF8:
- movs r7, 0
- adds r1, r5, 0
- adds r1, 0xD
- ldr r0, [sp]
- add r0, r9
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_802838C
- lsls r0, 24
- adds r1, r5, 0x1
- cmp r0, 0
- bne _0802AB4E
- ldr r0, _0802ABB4 @ =gUnknown_081FACFE
- ldrh r2, [r0]
- adds r3, r0, 0
- cmp r2, r8
- beq _0802AB42
- cmp r4, r2
- beq _0802AB38
- ldr r5, _0802ABAC @ =0x0000ffff
- adds r2, r3, 0
-_0802AB2A:
- adds r2, 0x2
- adds r7, 0x1
- ldrh r0, [r2]
- cmp r0, r5
- beq _0802AB42
- cmp r4, r0
- bne _0802AB2A
-_0802AB38:
- lsls r0, r7, 1
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, r8
- bne _0802AB4E
-_0802AB42:
- cmp r4, 0
- beq _0802AB4E
- strh r4, [r6]
- adds r6, 0x2
- movs r0, 0x1
- add r10, r0
-_0802AB4E:
- adds r5, r1, 0
- cmp r5, 0x3
- ble _0802AAF8
-_0802AB54:
- ldr r2, [sp, 0x4]
- cmp r2, 0x5
- ble _0802AAAE
- mov r1, r10
- cmp r1, 0
- beq _0802ABCC
- ldr r2, _0802ABB8 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802ABBC @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _0802ABC0 @ =gUnknown_02024BEA
- bl Random
- movs r1, 0xFF
- ands r1, r0
- mov r0, r10
- muls r0, r1
- asrs r0, 8
- lsls r0, 1
- ldr r1, _0802ABB0 @ =0x02016024
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4]
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _0802ABC4 @ =gBankTarget
- strb r0, [r1]
- ldr r1, _0802ABC8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802ABE6
- .align 2, 0
-_0802AB9C: .4byte gBankAttacker
-_0802ABA0: .4byte gPlayerParty
-_0802ABA4: .4byte gEnemyParty
-_0802ABA8: .4byte gBattlePartyID
-_0802ABAC: .4byte 0x0000ffff
-_0802ABB0: .4byte 0x02016024
-_0802ABB4: .4byte gUnknown_081FACFE
-_0802ABB8: .4byte gHitMarker
-_0802ABBC: .4byte 0xfffffbff
-_0802ABC0: .4byte gUnknown_02024BEA
-_0802ABC4: .4byte gBankTarget
-_0802ABC8: .4byte gBattlescriptCurrInstr
-_0802ABCC:
- ldr r3, _0802ABF8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802ABE6:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802ABF8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDE_asistattackselect
-
- thumb_func_start atkDF_setmagiccoat
-atkDF_setmagiccoat: @ 802ABFC
- push {lr}
- ldr r1, _0802AC44 @ =gBankTarget
- ldr r3, _0802AC48 @ =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r2, _0802AC4C @ =gSpecialStatuses
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r0, _0802AC50 @ =gCurrentMoveTurn
- ldrb r1, [r0]
- ldr r0, _0802AC54 @ =gNoOfAllBanks
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _0802AC5C
- ldr r3, _0802AC58 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802AC74
- .align 2, 0
-_0802AC44: .4byte gBankTarget
-_0802AC48: .4byte gBankAttacker
-_0802AC4C: .4byte gSpecialStatuses
-_0802AC50: .4byte gCurrentMoveTurn
-_0802AC54: .4byte gNoOfAllBanks
-_0802AC58: .4byte gBattlescriptCurrInstr
-_0802AC5C:
- ldr r0, _0802AC78 @ =gProtectStructs
- ldrb r1, [r3]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x10
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _0802AC7C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802AC74:
- pop {r0}
- bx r0
- .align 2, 0
-_0802AC78: .4byte gProtectStructs
-_0802AC7C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDF_setmagiccoat
-
- thumb_func_start atkE0_setstealstatchange
-atkE0_setstealstatchange: @ 802AC80
- push {lr}
- ldr r2, _0802ACC4 @ =gSpecialStatuses
- ldr r3, _0802ACC8 @ =gBankAttacker
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r0, _0802ACCC @ =gCurrentMoveTurn
- ldrb r1, [r0]
- ldr r0, _0802ACD0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _0802ACD8
- ldr r3, _0802ACD4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802ACEE
- .align 2, 0
-_0802ACC4: .4byte gSpecialStatuses
-_0802ACC8: .4byte gBankAttacker
-_0802ACCC: .4byte gCurrentMoveTurn
-_0802ACD0: .4byte gNoOfAllBanks
-_0802ACD4: .4byte gBattlescriptCurrInstr
-_0802ACD8:
- ldr r0, _0802ACF4 @ =gProtectStructs
- ldrb r1, [r3]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _0802ACF8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802ACEE:
- pop {r0}
- bx r0
- .align 2, 0
-_0802ACF4: .4byte gProtectStructs
-_0802ACF8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkE0_setstealstatchange
-
- thumb_func_start atkE1_802CBE4
-atkE1_802CBE4: @ 802ACFC
- push {r4-r6,lr}
- ldr r4, _0802ADA0 @ =0x02000000
- ldr r1, _0802ADA4 @ =0x000160dd
- adds r0, r4, r1
- ldrb r0, [r0]
- subs r1, 0xDA
- adds r4, r1
- strb r0, [r4]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, _0802ADA8 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r2]
- movs r0, 0x9
- strb r0, [r2, 0x1]
- ldr r3, _0802ADAC @ =gBattleMons
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- strb r0, [r2, 0x3]
- ldr r2, _0802ADB0 @ =gBankTarget
- ldr r1, _0802ADB4 @ =gNoOfAllBanks
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0802AD84
- adds r4, r2, 0
- ldr r6, _0802ADB8 @ =gBitTable
-_0802AD44:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- beq _0802AD66
- ldr r0, _0802ADBC @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ands r1, r0
- ldr r2, _0802ADB4 @ =gNoOfAllBanks
- cmp r1, 0
- beq _0802AD7A
-_0802AD66:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _0802ADB4 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- adds r2, r1, 0
- ldrb r1, [r2]
- cmp r0, r1
- bcc _0802AD44
-_0802AD7A:
- ldr r0, _0802ADB0 @ =gBankTarget
- ldrb r0, [r0]
- ldrb r2, [r2]
- cmp r0, r2
- bcc _0802ADC4
-_0802AD84:
- ldr r3, _0802ADC0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802ADCC
- .align 2, 0
-_0802ADA0: .4byte 0x02000000
-_0802ADA4: .4byte 0x000160dd
-_0802ADA8: .4byte gBattleTextBuff1
-_0802ADAC: .4byte gBattleMons
-_0802ADB0: .4byte gBankTarget
-_0802ADB4: .4byte gNoOfAllBanks
-_0802ADB8: .4byte gBitTable
-_0802ADBC: .4byte gAbsentBankFlags
-_0802ADC0: .4byte gBattlescriptCurrInstr
-_0802ADC4:
- ldr r1, _0802ADD4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802ADCC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802ADD4: .4byte gBattlescriptCurrInstr
- thumb_func_end atkE1_802CBE4
-
- thumb_func_start sub_802ADD8
-sub_802ADD8: @ 802ADD8
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r6, _0802AE44 @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _0802AE48 @ =gActiveBank
- strb r0, [r5]
- ldr r4, _0802AE4C @ =gBattleMons
- ldrb r0, [r5]
- movs r1, 0x58
- mov r12, r1
- mov r1, r12
- muls r1, r0
- adds r0, r1, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1E
- bne _0802AE34
- adds r4, 0x4C
- adds r1, r4
- movs r0, 0
- str r0, [r1]
- ldr r2, _0802AE50 @ =gBitTable
- ldr r1, _0802AE54 @ =0x02000000
- ldrb r3, [r5]
- ldr r7, _0802AE58 @ =0x00016064
- adds r0, r3, r7
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0]
- mov r0, r12
- muls r0, r3
- adds r0, r4
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
-_0802AE34:
- ldr r0, [r6]
- adds r0, 0x2
- str r0, [r6]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802AE44: .4byte gBattlescriptCurrInstr
-_0802AE48: .4byte gActiveBank
-_0802AE4C: .4byte gBattleMons
-_0802AE50: .4byte gBitTable
-_0802AE54: .4byte 0x02000000
-_0802AE58: .4byte 0x00016064
- thumb_func_end sub_802ADD8
-
- thumb_func_start atkE3_jumpiffainted
-atkE3_jumpiffainted: @ 802AE5C
- push {r4,lr}
- ldr r4, _0802AE98 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _0802AE9C @ =gActiveBank
- strb r0, [r1]
- ldr r2, _0802AEA0 @ =gBattleMons
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0802AEA4
- ldr r2, [r4]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0802AEAA
- .align 2, 0
-_0802AE98: .4byte gBattlescriptCurrInstr
-_0802AE9C: .4byte gActiveBank
-_0802AEA0: .4byte gBattleMons
-_0802AEA4:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_0802AEAA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atkE3_jumpiffainted
-
- thumb_func_start sub_802AEB0
-sub_802AEB0: @ 802AEB0
- push {lr}
- ldr r0, _0802AEC4 @ =gBattleTerrain
- ldrb r0, [r0]
- cmp r0, 0x7
- bhi _0802AF4C
- lsls r0, 2
- ldr r1, _0802AEC8 @ =_0802AECC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802AEC4: .4byte gBattleTerrain
-_0802AEC8: .4byte _0802AECC
- .align 2, 0
-_0802AECC:
- .4byte _0802AEEC
- .4byte _0802AEF8
- .4byte _0802AF04
- .4byte _0802AF10
- .4byte _0802AF1C
- .4byte _0802AF28
- .4byte _0802AF34
- .4byte _0802AF40
-_0802AEEC:
- ldr r1, _0802AEF4 @ =gBattleCommunication
- movs r0, 0x2
- b _0802AF50
- .align 2, 0
-_0802AEF4: .4byte gBattleCommunication
-_0802AEF8:
- ldr r1, _0802AF00 @ =gBattleCommunication
- movs r0, 0x1
- b _0802AF50
- .align 2, 0
-_0802AF00: .4byte gBattleCommunication
-_0802AF04:
- ldr r1, _0802AF0C @ =gBattleCommunication
- movs r0, 0x1B
- b _0802AF50
- .align 2, 0
-_0802AF0C: .4byte gBattleCommunication
-_0802AF10:
- ldr r1, _0802AF18 @ =gBattleCommunication
- movs r0, 0x17
- b _0802AF50
- .align 2, 0
-_0802AF18: .4byte gBattleCommunication
-_0802AF1C:
- ldr r1, _0802AF24 @ =gBattleCommunication
- movs r0, 0x16
- b _0802AF50
- .align 2, 0
-_0802AF24: .4byte gBattleCommunication
-_0802AF28:
- ldr r1, _0802AF30 @ =gBattleCommunication
- movs r0, 0x18
- b _0802AF50
- .align 2, 0
-_0802AF30: .4byte gBattleCommunication
-_0802AF34:
- ldr r1, _0802AF3C @ =gBattleCommunication
- movs r0, 0x7
- b _0802AF50
- .align 2, 0
-_0802AF3C: .4byte gBattleCommunication
-_0802AF40:
- ldr r1, _0802AF48 @ =gBattleCommunication
- movs r0, 0x8
- b _0802AF50
- .align 2, 0
-_0802AF48: .4byte gBattleCommunication
-_0802AF4C:
- ldr r1, _0802AF60 @ =gBattleCommunication
- movs r0, 0x5
-_0802AF50:
- strb r0, [r1, 0x3]
- ldr r1, _0802AF64 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0802AF60: .4byte gBattleCommunication
-_0802AF64: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802AEB0
-
- thumb_func_start sub_802AF68
-sub_802AF68: @ 802AF68
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r7, 0
- ldr r0, _0802AFB4 @ =gBaseStats
- mov r9, r0
- ldr r1, _0802AFB8 @ =gPickupItems
- mov r8, r1
-_0802AF7A:
- movs r0, 0x64
- adds r4, r7, 0
- muls r4, r0
- ldr r0, _0802AFBC @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _0802AFC0
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x17]
- b _0802AFCA
- .align 2, 0
-_0802AFB4: .4byte gBaseStats
-_0802AFB8: .4byte gPickupItems
-_0802AFBC: .4byte gPlayerParty
-_0802AFC0:
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x16]
-_0802AFCA:
- adds r4, r7, 0x1
- cmp r0, 0x35
- bne _0802B032
- cmp r5, 0
- beq _0802B032
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- beq _0802B032
- cmp r6, 0
- bne _0802B032
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _0802B032
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- mov r1, r8
- ldrh r0, [r1, 0x2]
- cmp r0, r3
- bgt _0802B020
- adds r1, 0x2
-_0802B012:
- adds r1, 0x4
- adds r2, 0x2
- cmp r2, 0x11
- bgt _0802B020
- ldrh r0, [r1]
- cmp r0, r3
- ble _0802B012
-_0802B020:
- movs r0, 0x64
- muls r0, r7
- ldr r1, _0802B04C @ =gPlayerParty
- adds r0, r1
- lsls r2, 1
- add r2, r8
- movs r1, 0xC
- bl SetMonData
-_0802B032:
- adds r7, r4, 0
- cmp r7, 0x5
- ble _0802AF7A
- ldr r1, _0802B050 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B04C: .4byte gPlayerParty
-_0802B050: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802AF68
-
- thumb_func_start atkE6_castform_transform
-atkE6_castform_transform: @ 802B054
- push {r4,lr}
- ldr r4, _0802B0A8 @ =gActiveBank
- ldr r3, _0802B0AC @ =0x02000000
- ldr r1, _0802B0B0 @ =0x00016003
- adds r0, r3, r1
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, _0802B0B4 @ =gBattleMons
- ldrb r2, [r4]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0802B086
- ldr r0, _0802B0B8 @ =0x0001609b
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x80
- orrs r0, r1
- strb r0, [r2]
-_0802B086:
- ldr r1, _0802B0B8 @ =0x0001609b
- adds r0, r3, r1
- ldrb r2, [r0]
- movs r0, 0
- movs r1, 0
- bl EmitBattleAnimation
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _0802B0BC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B0A8: .4byte gActiveBank
-_0802B0AC: .4byte 0x02000000
-_0802B0B0: .4byte 0x00016003
-_0802B0B4: .4byte gBattleMons
-_0802B0B8: .4byte 0x0001609b
-_0802B0BC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkE6_castform_transform
-
- thumb_func_start atkE7_castform_switch
-atkE7_castform_switch: @ 802B0C0
- push {r4,r5,lr}
- ldr r1, _0802B0F4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r5, _0802B0F8 @ =0x02000000
- ldr r1, _0802B0FC @ =0x00016003
- adds r0, r5, r1
- ldrb r0, [r0]
- bl castform_switch
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0802B0EC
- ldr r0, _0802B100 @ =gUnknown_081D977D
- bl b_push_move_exec
- subs r1, r4, 0x1
- ldr r2, _0802B104 @ =0x0001609b
- adds r0, r5, r2
- strb r1, [r0]
-_0802B0EC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B0F4: .4byte gBattlescriptCurrInstr
-_0802B0F8: .4byte 0x02000000
-_0802B0FC: .4byte 0x00016003
-_0802B100: .4byte gUnknown_081D977D
-_0802B104: .4byte 0x0001609b
- thumb_func_end atkE7_castform_switch
-
- thumb_func_start atkE8_settypebasedhalvers
-atkE8_settypebasedhalvers: @ 802B108
- push {r4,lr}
- movs r4, 0
- ldr r2, _0802B144 @ =gBattleMoves
- ldr r0, _0802B148 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0xC9
- bne _0802B158
- ldr r1, _0802B14C @ =gStatuses3
- ldr r0, _0802B150 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 9
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- bne _0802B17C
- orrs r1, r3
- str r1, [r2]
- ldr r0, _0802B154 @ =gBattleCommunication
- strb r4, [r0, 0x5]
- b _0802B180
- .align 2, 0
-_0802B144: .4byte gBattleMoves
-_0802B148: .4byte gCurrentMove
-_0802B14C: .4byte gStatuses3
-_0802B150: .4byte gBankAttacker
-_0802B154: .4byte gBattleCommunication
-_0802B158:
- ldr r1, _0802B18C @ =gStatuses3
- ldr r0, _0802B190 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 10
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- bne _0802B17C
- orrs r1, r3
- str r1, [r2]
- ldr r1, _0802B194 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- movs r4, 0x1
-_0802B17C:
- cmp r4, 0
- beq _0802B19C
-_0802B180:
- ldr r1, _0802B198 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802B1B6
- .align 2, 0
-_0802B18C: .4byte gStatuses3
-_0802B190: .4byte gBankAttacker
-_0802B194: .4byte gBattleCommunication
-_0802B198: .4byte gBattlescriptCurrInstr
-_0802B19C:
- ldr r3, _0802B1BC @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802B1B6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B1BC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkE8_settypebasedhalvers
-
- thumb_func_start sub_802B1C0
-sub_802B1C0: @ 802B1C0
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0802B276
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0802B276
- ldr r3, _0802B218 @ =gBattleWeather
- ldrb r0, [r3]
- ldr r2, _0802B21C @ =0x02000000
- cmp r0, 0
- beq _0802B202
- ldr r0, _0802B220 @ =0x0001601f
- adds r1, r2, r0
- movs r0, 0x2
- strb r0, [r1]
-_0802B202:
- ldrh r1, [r3]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0802B228
- ldr r0, _0802B224 @ =0x0001601c
- adds r1, r2, r0
- movs r0, 0x8B
- strb r0, [r1]
- b _0802B276
- .align 2, 0
-_0802B218: .4byte gBattleWeather
-_0802B21C: .4byte 0x02000000
-_0802B220: .4byte 0x0001601f
-_0802B224: .4byte 0x0001601c
-_0802B228:
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _0802B240
- ldr r0, _0802B23C @ =0x0001601c
- adds r1, r2, r0
- movs r0, 0x85
- strb r0, [r1]
- b _0802B276
- .align 2, 0
-_0802B23C: .4byte 0x0001601c
-_0802B240:
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0802B258
- ldr r0, _0802B254 @ =0x0001601c
- adds r1, r2, r0
- movs r0, 0x8A
- strb r0, [r1]
- b _0802B276
- .align 2, 0
-_0802B254: .4byte 0x0001601c
-_0802B258:
- movs r3, 0x80
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0802B270
- ldr r0, _0802B26C @ =0x0001601c
- adds r1, r2, r0
- movs r0, 0x8F
- strb r0, [r1]
- b _0802B276
- .align 2, 0
-_0802B26C: .4byte 0x0001601c
-_0802B270:
- ldr r1, _0802B284 @ =0x0001601c
- adds r0, r2, r1
- strb r3, [r0]
-_0802B276:
- ldr r1, _0802B288 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0802B284: .4byte 0x0001601c
-_0802B288: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B1C0
-
- thumb_func_start atkEA_recycleitem
-atkEA_recycleitem: @ 802B28C
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r7, _0802B2F0 @ =gActiveBank
- ldr r0, _0802B2F4 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r7]
- ldrb r2, [r7]
- lsls r1, r2, 1
- ldr r0, _0802B2F8 @ =0x020160cc
- adds r6, r1, r0
- ldrh r5, [r6]
- cmp r5, 0
- beq _0802B308
- ldr r4, _0802B2FC @ =gBattleMons
- movs r3, 0x58
- adds r0, r2, 0
- muls r0, r3
- adds r0, r4
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- bne _0802B308
- ldr r1, _0802B300 @ =gLastUsedItem
- strh r5, [r1]
- strh r0, [r6]
- ldrb r0, [r7]
- muls r0, r3
- adds r0, r4
- ldrh r1, [r1]
- strh r1, [r0, 0x2E]
- ldrb r0, [r7]
- muls r0, r3
- adds r1, r4, 0
- adds r1, 0x2E
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r1, _0802B304 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802B322
- .align 2, 0
-_0802B2F0: .4byte gActiveBank
-_0802B2F4: .4byte gBankAttacker
-_0802B2F8: .4byte 0x020160cc
-_0802B2FC: .4byte gBattleMons
-_0802B300: .4byte gLastUsedItem
-_0802B304: .4byte gBattlescriptCurrInstr
-_0802B308:
- ldr r3, _0802B32C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802B322:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B32C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkEA_recycleitem
-
- thumb_func_start atkEB_settypetoterrain
-atkEB_settypetoterrain: @ 802B330
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _0802B3A0 @ =gBattleMons
- mov r8, r0
- ldr r7, _0802B3A4 @ =gBankAttacker
- ldrb r0, [r7]
- movs r6, 0x58
- muls r0, r6
- mov r1, r8
- adds r3, r0, r1
- movs r0, 0x21
- adds r0, r3
- mov r12, r0
- ldr r5, _0802B3A8 @ =gTerrainToType
- ldr r4, _0802B3AC @ =gBattleTerrain
- ldrb r0, [r4]
- adds r0, r5
- ldrb r2, [r0]
- mov r1, r12
- ldrb r0, [r1]
- adds r1, r2, 0
- cmp r0, r1
- beq _0802B3B8
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- beq _0802B3B8
- mov r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- add r1, r8
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- adds r1, 0x22
- strb r0, [r1]
- ldr r1, _0802B3B0 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r1, _0802B3B4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802B3D2
- .align 2, 0
-_0802B3A0: .4byte gBattleMons
-_0802B3A4: .4byte gBankAttacker
-_0802B3A8: .4byte gTerrainToType
-_0802B3AC: .4byte gBattleTerrain
-_0802B3B0: .4byte gBattleTextBuff1
-_0802B3B4: .4byte gBattlescriptCurrInstr
-_0802B3B8:
- ldr r3, _0802B3DC @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802B3D2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B3DC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkEB_settypetoterrain
-
- thumb_func_start sub_802B3E0
-sub_802B3E0: @ 802B3E0
- push {r4,r5,lr}
- ldr r5, _0802B45C @ =gBankAttacker
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r4, _0802B460 @ =gActiveBank
- strb r0, [r4]
- ldr r0, _0802B464 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802B490
- ldr r0, _0802B468 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802B46C @ =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802B490
- ldr r0, _0802B470 @ =gActionForBanks
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802B490
- ldr r1, _0802B474 @ =gChosenMovesByBanks
- lsls r0, r3, 1
- adds r0, r1
- ldrh r2, [r0]
- cmp r2, 0xE4
- bne _0802B490
- ldr r0, _0802B478 @ =gUnknown_02024A76
- adds r0, r3, r0
- movs r1, 0xB
- strb r1, [r0]
- ldr r0, _0802B47C @ =gCurrentMove
- strh r2, [r0]
- ldr r1, _0802B480 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r1, _0802B484 @ =0x02000000
- ldr r0, _0802B488 @ =0x00016002
- adds r2, r1, r0
- movs r0, 0x1
- strb r0, [r2]
- ldrb r0, [r5]
- ldr r2, _0802B48C @ =0x000160a7
- adds r1, r2
- strb r0, [r1]
- ldrb r0, [r4]
- strb r0, [r5]
- b _0802B4AA
- .align 2, 0
-_0802B45C: .4byte gBankAttacker
-_0802B460: .4byte gActiveBank
-_0802B464: .4byte gBattleTypeFlags
-_0802B468: .4byte gAbsentBankFlags
-_0802B46C: .4byte gBitTable
-_0802B470: .4byte gActionForBanks
-_0802B474: .4byte gChosenMovesByBanks
-_0802B478: .4byte gUnknown_02024A76
-_0802B47C: .4byte gCurrentMove
-_0802B480: .4byte gBattlescriptCurrInstr
-_0802B484: .4byte 0x02000000
-_0802B488: .4byte 0x00016002
-_0802B48C: .4byte 0x000160a7
-_0802B490:
- ldr r3, _0802B4B0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802B4AA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B4B0: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B3E0
-
- thumb_func_start sub_802B4B4
-sub_802B4B4: @ 802B4B4
- push {r4,r5,lr}
- ldr r1, _0802B4DC @ =gEffectBank
- ldr r3, _0802B4E0 @ =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r2, _0802B4E4 @ =gBankTarget
- lsls r0, 24
- lsrs r0, 24
- adds r4, r1, 0
- ldrb r1, [r2]
- cmp r0, r1
- bne _0802B4F0
- ldr r0, _0802B4E8 @ =0x02000000
- ldr r5, _0802B4EC @ =0x00016003
- adds r1, r0, r5
- ldrb r1, [r1]
- strb r1, [r2]
- strb r1, [r3]
- b _0802B4FA
- .align 2, 0
-_0802B4DC: .4byte gEffectBank
-_0802B4E0: .4byte gBankAttacker
-_0802B4E4: .4byte gBankTarget
-_0802B4E8: .4byte 0x02000000
-_0802B4EC: .4byte 0x00016003
-_0802B4F0:
- ldr r0, _0802B510 @ =0x02000000
- ldr r3, _0802B514 @ =0x00016003
- adds r1, r0, r3
- ldrb r1, [r1]
- strb r1, [r2]
-_0802B4FA:
- ldrb r1, [r4]
- ldr r5, _0802B514 @ =0x00016003
- adds r0, r5
- strb r1, [r0]
- ldr r1, _0802B518 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B510: .4byte 0x02000000
-_0802B514: .4byte 0x00016003
-_0802B518: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B4B4
-
- thumb_func_start sub_802B51C
-sub_802B51C: @ 802B51C
- push {r4,lr}
- ldr r0, _0802B56C @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0802B570 @ =gSideTimer
- lsls r3, r0, 1
- adds r0, r3, r0
- lsls r0, 2
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- bne _0802B544
- ldrb r2, [r4, 0x1]
- cmp r2, 0
- beq _0802B58C
-_0802B544:
- ldr r2, _0802B574 @ =gSideAffecting
- adds r2, r3, r2
- ldrh r1, [r2]
- ldr r0, _0802B578 @ =0x0000fffe
- ands r0, r1
- movs r3, 0
- ldr r1, _0802B57C @ =0x0000fffd
- ands r0, r1
- strh r0, [r2]
- strb r3, [r4]
- strb r3, [r4, 0x1]
- ldr r0, _0802B580 @ =0x02000000
- ldr r2, _0802B584 @ =0x00016002
- adds r1, r0, r2
- movs r2, 0x1
- strb r2, [r1]
- ldr r3, _0802B588 @ =0x000160a1
- adds r0, r3
- b _0802B598
- .align 2, 0
-_0802B56C: .4byte gBankAttacker
-_0802B570: .4byte gSideTimer
-_0802B574: .4byte gSideAffecting
-_0802B578: .4byte 0x0000fffe
-_0802B57C: .4byte 0x0000fffd
-_0802B580: .4byte 0x02000000
-_0802B584: .4byte 0x00016002
-_0802B588: .4byte 0x000160a1
-_0802B58C:
- ldr r0, _0802B5A8 @ =0x02000000
- ldr r3, _0802B5AC @ =0x00016002
- adds r1, r0, r3
- strb r2, [r1]
- ldr r1, _0802B5B0 @ =0x000160a1
- adds r0, r1
-_0802B598:
- strb r2, [r0]
- ldr r1, _0802B5B4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B5A8: .4byte 0x02000000
-_0802B5AC: .4byte 0x00016002
-_0802B5B0: .4byte 0x000160a1
-_0802B5B4: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B51C
-
- thumb_func_start sub_802B5B8
-sub_802B5B8: @ 802B5B8
- push {r4-r7,lr}
- movs r4, 0
- ldr r0, _0802B5F8 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0802B5C6
- b _0802B94E
-_0802B5C6:
- ldr r5, _0802B5FC @ =gActiveBank
- ldr r0, _0802B600 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r6, _0802B604 @ =gBankTarget
- movs r1, 0x1
- eors r0, r1
- strb r0, [r6]
- ldr r0, _0802B608 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0802B614
- movs r0, 0
- movs r1, 0x5
- bl dp01_build_cmdbuf_x0D_a
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r1, _0802B60C @ =gBattlescriptCurrInstr
- ldr r0, _0802B610 @ =gUnknown_081D9F35
- b _0802B94C
- .align 2, 0
-_0802B5F8: .4byte gBattleExecBuffer
-_0802B5FC: .4byte gActiveBank
-_0802B600: .4byte gBankAttacker
-_0802B604: .4byte gBankTarget
-_0802B608: .4byte gBattleTypeFlags
-_0802B60C: .4byte gBattlescriptCurrInstr
-_0802B610: .4byte gUnknown_081D9F35
-_0802B614:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0802B63C
- movs r0, 0
- movs r1, 0x4
- bl dp01_build_cmdbuf_x0D_a
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r1, _0802B634 @ =gBattlescriptCurrInstr
- ldr r0, _0802B638 @ =gUnknown_081D9F00
- b _0802B94C
- .align 2, 0
-_0802B634: .4byte gBattlescriptCurrInstr
-_0802B638: .4byte gUnknown_081D9F00
-_0802B63C:
- ldr r0, _0802B660 @ =gLastUsedItem
- ldrh r0, [r0]
- cmp r0, 0x5
- bne _0802B66C
- ldr r0, _0802B664 @ =0x02000000
- ldr r1, _0802B668 @ =0x00016089
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 8
- subs r0, r1
- movs r1, 0x64
- bl __divsi3
- lsls r0, 24
- lsrs r5, r0, 24
- b _0802B684
- .align 2, 0
-_0802B660: .4byte gLastUsedItem
-_0802B664: .4byte 0x02000000
-_0802B668: .4byte 0x00016089
-_0802B66C:
- ldr r3, _0802B6A0 @ =gBaseStats
- ldr r2, _0802B6A4 @ =gBattleMons
- ldrb r1, [r6]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r5, [r0, 0x8]
-_0802B684:
- ldr r2, _0802B6A8 @ =gLastUsedItem
- ldrh r0, [r2]
- cmp r0, 0x5
- bhi _0802B68E
- b _0802B784
-_0802B68E:
- subs r0, 0x6
- cmp r0, 0x6
- bls _0802B696
- b _0802B78E
-_0802B696:
- lsls r0, 2
- ldr r1, _0802B6AC @ =_0802B6B0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802B6A0: .4byte gBaseStats
-_0802B6A4: .4byte gBattleMons
-_0802B6A8: .4byte gLastUsedItem
-_0802B6AC: .4byte _0802B6B0
- .align 2, 0
-_0802B6B0:
- .4byte _0802B6CC
- .4byte _0802B6FC
- .4byte _0802B70E
- .4byte _0802B73C
- .4byte _0802B76C
- .4byte _0802B72E
- .4byte _0802B72E
-_0802B6CC:
- ldr r2, _0802B6F4 @ =gBattleMons
- ldr r0, _0802B6F8 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r1, 0xB
- beq _0802B760
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xB
- beq _0802B760
- cmp r1, 0x6
- beq _0802B760
- cmp r0, 0x6
- beq _0802B760
- b _0802B72E
- .align 2, 0
-_0802B6F4: .4byte gBattleMons
-_0802B6F8: .4byte gBankTarget
-_0802B6FC:
- bl sav1_map_get_light_level
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0xA
- cmp r0, 0x5
- bne _0802B78E
- movs r4, 0x23
- b _0802B78E
-_0802B70E:
- ldr r2, _0802B734 @ =gBattleMons
- ldr r0, _0802B738 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r1, [r0]
- cmp r1, 0x27
- bhi _0802B72E
- movs r0, 0x28
- subs r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bhi _0802B78E
-_0802B72E:
- movs r4, 0xA
- b _0802B78E
- .align 2, 0
-_0802B734: .4byte gBattleMons
-_0802B738: .4byte gBankTarget
-_0802B73C:
- ldr r2, _0802B764 @ =gBattleMons
- ldr r0, _0802B768 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetNationalPokedexFlag
- lsls r0, 24
- movs r4, 0xA
- cmp r0, 0
- beq _0802B78E
-_0802B760:
- movs r4, 0x1E
- b _0802B78E
- .align 2, 0
-_0802B764: .4byte gBattleMons
-_0802B768: .4byte gBankTarget
-_0802B76C:
- ldr r0, _0802B780 @ =gBattleResults
- ldrb r0, [r0, 0x13]
- adds r0, 0xA
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x28
- bls _0802B78E
- movs r4, 0x28
- b _0802B78E
- .align 2, 0
-_0802B780: .4byte gBattleResults
-_0802B784:
- ldr r1, _0802B7F4 @ =gBallCatchBonuses
- ldrh r0, [r2]
- subs r0, 0x2
- adds r0, r1
- ldrb r4, [r0]
-_0802B78E:
- adds r0, r5, 0
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- ldr r5, _0802B7F8 @ =gBattleMons
- ldr r1, _0802B7FC @ =gBankTarget
- ldrb r1, [r1]
- movs r7, 0x58
- adds r4, r1, 0
- muls r4, r7
- adds r3, r4, r5
- ldrh r2, [r3, 0x2C]
- lsls r1, r2, 1
- adds r1, r2
- ldrh r2, [r3, 0x28]
- lsls r2, 1
- subs r2, r1, r2
- muls r0, r2
- bl __divsi3
- adds r6, r0, 0
- adds r5, 0x4C
- adds r4, r5
- ldr r4, [r4]
- movs r0, 0x27
- ands r0, r4
- cmp r0, 0
- beq _0802B7CA
- lsls r6, 1
-_0802B7CA:
- ands r4, r7
- cmp r4, 0
- beq _0802B7DC
- lsls r0, r6, 4
- subs r0, r6
- movs r1, 0xA
- bl __udivsi3
- adds r6, r0, 0
-_0802B7DC:
- ldr r1, _0802B800 @ =gLastUsedItem
- ldrh r0, [r1]
- cmp r0, 0x5
- beq _0802B81C
- cmp r0, 0x1
- bne _0802B808
- ldr r0, _0802B804 @ =gBattleResults
- ldrb r1, [r0, 0x5]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0, 0x5]
- b _0802B81C
- .align 2, 0
-_0802B7F4: .4byte gBallCatchBonuses
-_0802B7F8: .4byte gBattleMons
-_0802B7FC: .4byte gBankTarget
-_0802B800: .4byte gLastUsedItem
-_0802B804: .4byte gBattleResults
-_0802B808:
- ldr r0, _0802B860 @ =gBattleResults
- ldrh r1, [r1]
- adds r0, r1
- adds r1, r0, 0
- adds r1, 0x34
- ldrb r0, [r1]
- cmp r0, 0xFE
- bhi _0802B81C
- adds r0, 0x1
- strb r0, [r1]
-_0802B81C:
- cmp r6, 0xFE
- bls _0802B880
- movs r0, 0
- movs r1, 0x4
- bl dp01_build_cmdbuf_x0D_a
- ldr r0, _0802B864 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _0802B868 @ =gBattlescriptCurrInstr
- ldr r0, _0802B86C @ =gUnknown_081D9EC2
- str r0, [r1]
- ldr r1, _0802B870 @ =gBattlePartyID
- ldr r0, _0802B874 @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802B878 @ =gEnemyParty
- adds r0, r1
- ldr r2, _0802B87C @ =gLastUsedItem
- movs r1, 0x26
- bl SetMonData
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- beq _0802B90E
- b _0802B938
- .align 2, 0
-_0802B860: .4byte gBattleResults
-_0802B864: .4byte gActiveBank
-_0802B868: .4byte gBattlescriptCurrInstr
-_0802B86C: .4byte gUnknown_081D9EC2
-_0802B870: .4byte gBattlePartyID
-_0802B874: .4byte gBankTarget
-_0802B878: .4byte gEnemyParty
-_0802B87C: .4byte gLastUsedItem
-_0802B880:
- movs r0, 0xFF
- lsls r0, 16
- adds r1, r6, 0
- bl __udivsi3
- bl Sqrt
- lsls r0, 16
- lsrs r0, 16
- bl Sqrt
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _0802B8A8 @ =0x000ffff0
- adds r1, r6, 0
- bl __udivsi3
- adds r6, r0, 0
- movs r4, 0
- b _0802B8B2
- .align 2, 0
-_0802B8A8: .4byte 0x000ffff0
-_0802B8AC:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0802B8B2:
- cmp r4, 0x3
- bhi _0802B8C2
- bl Random
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcc _0802B8AC
-_0802B8C2:
- ldr r5, _0802B918 @ =gLastUsedItem
- ldrh r0, [r5]
- cmp r0, 0x1
- bne _0802B8CC
- movs r4, 0x4
-_0802B8CC:
- movs r0, 0
- adds r1, r4, 0
- bl dp01_build_cmdbuf_x0D_a
- ldr r0, _0802B91C @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- cmp r4, 0x4
- bne _0802B944
- ldr r1, _0802B920 @ =gBattlescriptCurrInstr
- ldr r0, _0802B924 @ =gUnknown_081D9EC2
- str r0, [r1]
- ldr r1, _0802B928 @ =gBattlePartyID
- ldr r0, _0802B92C @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802B930 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x26
- adds r2, r5, 0
- bl SetMonData
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _0802B938
-_0802B90E:
- ldr r1, _0802B934 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- b _0802B94E
- .align 2, 0
-_0802B918: .4byte gLastUsedItem
-_0802B91C: .4byte gActiveBank
-_0802B920: .4byte gBattlescriptCurrInstr
-_0802B924: .4byte gUnknown_081D9EC2
-_0802B928: .4byte gBattlePartyID
-_0802B92C: .4byte gBankTarget
-_0802B930: .4byte gEnemyParty
-_0802B934: .4byte gBattleCommunication
-_0802B938:
- ldr r1, _0802B940 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _0802B94E
- .align 2, 0
-_0802B940: .4byte gBattleCommunication
-_0802B944:
- ldr r0, _0802B954 @ =gBattleCommunication
- strb r4, [r0, 0x5]
- ldr r1, _0802B958 @ =gBattlescriptCurrInstr
- ldr r0, _0802B95C @ =gUnknown_081D9F0A
-_0802B94C:
- str r0, [r1]
-_0802B94E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B954: .4byte gBattleCommunication
-_0802B958: .4byte gBattlescriptCurrInstr
-_0802B95C: .4byte gUnknown_081D9F0A
- thumb_func_end sub_802B5B8
-
- thumb_func_start sub_802B960
-sub_802B960: @ 802B960
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- ldr r0, _0802B9C8 @ =gBattlePartyID
- mov r9, r0
- ldr r5, _0802B9CC @ =gBankAttacker
- ldrb r0, [r5]
- movs r4, 0x1
- eors r0, r4
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r6, _0802B9D0 @ =gEnemyParty
- adds r0, r6
- bl GiveMonToPlayer
- ldr r2, _0802B9D4 @ =gBattleResults
- ldr r1, _0802B9D8 @ =gBattleMons
- ldrb r0, [r5]
- eors r4, r0
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2, 0x28]
- lsls r4, 1
- add r4, r9
- ldrh r0, [r4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- adds r2, 0x2A
- movs r1, 0x2
- bl GetMonData
- ldr r1, _0802B9DC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B9C8: .4byte gBattlePartyID
-_0802B9CC: .4byte gBankAttacker
-_0802B9D0: .4byte gEnemyParty
-_0802B9D4: .4byte gBattleResults
-_0802B9D8: .4byte gBattleMons
-_0802B9DC: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B960
-
- thumb_func_start sub_802B9E0
-sub_802B9E0: @ 802B9E0
- push {r4-r6,lr}
- ldr r4, _0802BA20 @ =gBattleMons
- ldr r6, _0802BA24 @ =gBankTarget
- ldrb r0, [r6]
- movs r5, 0x58
- muls r0, r5
- adds r0, r4
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetNationalPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _0802BA2C
- ldr r3, _0802BA28 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802BA82
- .align 2, 0
-_0802BA20: .4byte gBattleMons
-_0802BA24: .4byte gBankTarget
-_0802BA28: .4byte gBattlescriptCurrInstr
-_0802BA2C:
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl GetNationalPokedexFlag
- ldrb r0, [r6]
- adds r2, r0, 0
- muls r2, r5
- adds r0, r2, r4
- ldrh r0, [r0]
- cmp r0, 0xC9
- bne _0802BA5C
- ldr r0, _0802BA88 @ =gSaveBlock2
- adds r1, r4, 0
- adds r1, 0x48
- adds r1, r2, r1
- ldr r1, [r1]
- str r1, [r0, 0x1C]
-_0802BA5C:
- ldrb r0, [r6]
- adds r2, r0, 0
- muls r2, r5
- adds r0, r2, r4
- ldrh r1, [r0]
- movs r0, 0x9A
- lsls r0, 1
- cmp r1, r0
- bne _0802BA7A
- ldr r0, _0802BA88 @ =gSaveBlock2
- adds r1, r4, 0
- adds r1, 0x48
- adds r1, r2, r1
- ldr r1, [r1]
- str r1, [r0, 0x20]
-_0802BA7A:
- ldr r1, _0802BA8C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802BA82:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802BA88: .4byte gSaveBlock2
-_0802BA8C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B9E0
-
- thumb_func_start sub_802BA90
-sub_802BA90: @ 802BA90
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r7, _0802BAA8 @ =gBattleCommunication
- ldrb r1, [r7]
- cmp r1, 0x1
- beq _0802BAC6
- cmp r1, 0x1
- bgt _0802BAAC
- cmp r1, 0
- beq _0802BAB8
- b _0802BBC4
- .align 2, 0
-_0802BAA8: .4byte gBattleCommunication
-_0802BAAC:
- cmp r1, 0x2
- beq _0802BB10
- cmp r1, 0x3
- bne _0802BAB6
- b _0802BBB0
-_0802BAB6:
- b _0802BBC4
-_0802BAB8:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- b _0802BB6E
-_0802BAC6:
- ldr r0, _0802BB04 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802BBC4
- ldr r4, _0802BB08 @ =gBattleMons
- ldr r6, _0802BB0C @ =gBankTarget
- ldrb r0, [r6]
- movs r5, 0x58
- muls r0, r5
- adds r0, r4
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r6]
- adds r2, r1, 0
- muls r2, r5
- adds r1, r4, 0
- adds r1, 0x54
- adds r1, r2, r1
- ldr r1, [r1]
- adds r4, 0x48
- adds r2, r4
- ldr r2, [r2]
- bl sub_809070C
- strb r0, [r7, 0x1]
- b _0802BB72
- .align 2, 0
-_0802BB04: .4byte gPaletteFade
-_0802BB08: .4byte gBattleMons
-_0802BB0C: .4byte gBankTarget
-_0802BB10:
- ldr r0, _0802BB7C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802BBC4
- ldr r0, _0802BB80 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802BB84 @ =sub_800F808
- cmp r1, r0
- bne _0802BBC4
- ldr r2, _0802BB88 @ =gTasks
- ldrb r1, [r7, 0x1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r4, [r0, 0x4]
- cmp r4, 0
- bne _0802BBC4
- ldr r0, _0802BB8C @ =gBattleTerrainTiles_Building
- ldr r1, _0802BB90 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0802BB94 @ =gBattleTerrainTilemap_Building
- ldr r1, _0802BB98 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0802BB9C @ =gBattleTerrainPalette_BattleTower
- movs r1, 0x20
- movs r2, 0x60
- bl LoadCompressedPalette
- ldr r1, _0802BBA0 @ =REG_BG3CNT
- ldr r2, _0802BBA4 @ =0x00005a0b
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0802BBA8 @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0802BBAC @ =0x0000fffc
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
-_0802BB6E:
- bl BeginNormalPaletteFade
-_0802BB72:
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- b _0802BBC4
- .align 2, 0
-_0802BB7C: .4byte gPaletteFade
-_0802BB80: .4byte gMain
-_0802BB84: .4byte sub_800F808
-_0802BB88: .4byte gTasks
-_0802BB8C: .4byte gBattleTerrainTiles_Building
-_0802BB90: .4byte 0x06008000
-_0802BB94: .4byte gBattleTerrainTilemap_Building
-_0802BB98: .4byte 0x0600d000
-_0802BB9C: .4byte gBattleTerrainPalette_BattleTower
-_0802BBA0: .4byte REG_BG3CNT
-_0802BBA4: .4byte 0x00005a0b
-_0802BBA8: .4byte gUnknown_030041B0
-_0802BBAC: .4byte 0x0000fffc
-_0802BBB0:
- ldr r0, _0802BBCC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802BBC4
- ldr r1, _0802BBD0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0802BBC4:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802BBCC: .4byte gPaletteFade
-_0802BBD0: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802BA90
-
- thumb_func_start sub_802BBD4
-sub_802BBD4: @ 802BBD4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, [sp, 0x20]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r12, r1
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 24
- lsrs r7, r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- mov r2, r12
- cmp r2, r7
- bgt _0802BC5A
- lsls r1, r6, 1
- ldr r0, _0802BC20 @ =0x0600c000
- adds r1, r0
- mov r9, r1
-_0802BC06:
- adds r1, r6, 0
- adds r0, r2, 0x1
- mov r10, r0
- cmp r1, r5
- bgt _0802BC54
- lsls r0, r2, 6
- mov r4, r9
- adds r3, r4, r0
-_0802BC16:
- cmp r2, r12
- bne _0802BC28
- ldr r0, _0802BC24 @ =0x00001022
- b _0802BC36
- .align 2, 0
-_0802BC20: .4byte 0x0600c000
-_0802BC24: .4byte 0x00001022
-_0802BC28:
- cmp r2, r7
- bne _0802BC34
- ldr r0, _0802BC30 @ =0x00001028
- b _0802BC36
- .align 2, 0
-_0802BC30: .4byte 0x00001028
-_0802BC34:
- ldr r0, _0802BC68 @ =0x00001025
-_0802BC36:
- cmp r1, r6
- beq _0802BC42
- adds r0, 0x1
- cmp r1, r5
- bne _0802BC42
- adds r0, 0x1
-_0802BC42:
- mov r4, r8
- cmp r4, 0
- beq _0802BC4A
- movs r0, 0
-_0802BC4A:
- strh r0, [r3]
- adds r3, 0x2
- adds r1, 0x1
- cmp r1, r5
- ble _0802BC16
-_0802BC54:
- mov r2, r10
- cmp r2, r7
- ble _0802BC06
-_0802BC5A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802BC68: .4byte 0x00001025
- thumb_func_end sub_802BBD4
-
- thumb_func_start sub_802BC6C
-sub_802BC6C: @ 802BC6C
- push {lr}
- ldr r0, _0802BC88 @ =gBattleCommunication
- ldrb r1, [r0, 0x1]
- lsls r1, 28
- movs r0, 0x90
- lsls r0, 23
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xC8
- bl sub_814A880
- pop {r0}
- bx r0
- .align 2, 0
-_0802BC88: .4byte gBattleCommunication
- thumb_func_end sub_802BC6C
-
- thumb_func_start nullsub_6
-nullsub_6: @ 802BC8C
- bx lr
- thumb_func_end nullsub_6
-
- thumb_func_start atkF3_receive_new_pokemon_maybe
-atkF3_receive_new_pokemon_maybe: @ 802BC90
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _0802BCB4 @ =gBattleCommunication
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x4
- bls _0802BCA8
- b _0802BEDA
-_0802BCA8:
- lsls r0, r1, 2
- ldr r1, _0802BCB8 @ =_0802BCBC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802BCB4: .4byte gBattleCommunication
-_0802BCB8: .4byte _0802BCBC
- .align 2, 0
-_0802BCBC:
- .4byte _0802BCD0
- .4byte _0802BCEC
- .4byte _0802BD84
- .4byte _0802BE50
- .4byte _0802BEA4
-_0802BCD0:
- bl sub_8023A80
- ldr r0, _0802BCE8 @ =gBattleCommunication
- ldrb r1, [r0]
- adds r1, 0x1
- movs r2, 0
- strb r1, [r0]
- strb r2, [r0, 0x1]
- bl sub_802BC6C
- b _0802BEDA
- .align 2, 0
-_0802BCE8: .4byte gBattleCommunication
-_0802BCEC:
- ldr r0, _0802BD60 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802BD10
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _0802BD10
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_0802BD10:
- ldr r0, _0802BD60 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802BD36
- ldr r4, _0802BD64 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _0802BD36
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_0802BD36:
- ldr r0, _0802BD60 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802BD68
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802BD64 @ =gBattleCommunication
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _0802BD7A
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x3
- bl BeginFastPaletteFade
- b _0802BEDA
- .align 2, 0
-_0802BD60: .4byte gMain
-_0802BD64: .4byte gBattleCommunication
-_0802BD68:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0802BD72
- b _0802BEDA
-_0802BD72:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802BD80 @ =gBattleCommunication
-_0802BD7A:
- movs r0, 0x4
- strb r0, [r1]
- b _0802BEDA
- .align 2, 0
-_0802BD80: .4byte gBattleCommunication
-_0802BD84:
- ldr r0, _0802BE34 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802BD92
- b _0802BEDA
-_0802BD92:
- ldr r7, _0802BE38 @ =gBattlePartyID
- ldr r0, _0802BE3C @ =gBankAttacker
- mov r10, r0
- ldrb r0, [r0]
- movs r4, 0x1
- eors r0, r4
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r1, 0x64
- mov r9, r1
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- ldr r1, _0802BE40 @ =gEnemyParty
- mov r8, r1
- add r0, r8
- movs r1, 0x2
- ldr r2, _0802BE44 @ =0x02016079
- bl GetMonData
- mov r1, r10
- ldrb r0, [r1]
- eors r0, r4
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- movs r1, 0xB
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- mov r1, r10
- ldrb r0, [r1]
- eors r0, r4
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- bl GetMonGender
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- mov r1, r10
- ldrb r0, [r1]
- eors r4, r0
- lsls r4, 1
- adds r4, r7
- ldrh r0, [r4]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- movs r1, 0
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- ldr r0, _0802BE48 @ =sub_800F808
- str r0, [sp, 0x4]
- movs r0, 0x2
- ldr r1, _0802BE44 @ =0x02016079
- adds r2, r6, 0
- adds r3, r5, 0
- bl DoNamingScreen
- ldr r1, _0802BE4C @ =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802BEDA
- .align 2, 0
-_0802BE34: .4byte gPaletteFade
-_0802BE38: .4byte gBattlePartyID
-_0802BE3C: .4byte gBankAttacker
-_0802BE40: .4byte gEnemyParty
-_0802BE44: .4byte 0x02016079
-_0802BE48: .4byte sub_800F808
-_0802BE4C: .4byte gBattleCommunication
-_0802BE50:
- ldr r0, _0802BE88 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802BE8C @ =sub_800F808
- cmp r1, r0
- bne _0802BEDA
- ldr r0, _0802BE90 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802BEDA
- ldr r2, _0802BE94 @ =gBattlePartyID
- ldr r0, _0802BE98 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x1
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802BE9C @ =gEnemyParty
- adds r0, r1
- ldr r2, _0802BEA0 @ =0x02016079
- movs r1, 0x2
- bl SetMonData
- b _0802BEC0
- .align 2, 0
-_0802BE88: .4byte gMain
-_0802BE8C: .4byte sub_800F808
-_0802BE90: .4byte gPaletteFade
-_0802BE94: .4byte gBattlePartyID
-_0802BE98: .4byte gBankAttacker
-_0802BE9C: .4byte gEnemyParty
-_0802BEA0: .4byte 0x02016079
-_0802BEA4:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _0802BEC0
- ldr r1, _0802BEBC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802BEDA
- .align 2, 0
-_0802BEBC: .4byte gBattlescriptCurrInstr
-_0802BEC0:
- ldr r3, _0802BEEC @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802BEDA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802BEEC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkF3_receive_new_pokemon_maybe
-
- thumb_func_start sub_802BEF0
-sub_802BEF0: @ 802BEF0
- ldr r2, _0802BF10 @ =gBattleMons
- ldr r0, _0802BF14 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- ldr r0, _0802BF18 @ =gBattleMoveDamage
- ldr r2, [r0]
- ldrh r0, [r1, 0x28]
- subs r0, r2
- strh r0, [r1, 0x28]
- ldr r1, _0802BF1C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0802BF10: .4byte gBattleMons
-_0802BF14: .4byte gBankAttacker
-_0802BF18: .4byte gBattleMoveDamage
-_0802BF1C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802BEF0
-
- thumb_func_start sub_802BF20
-sub_802BF20: @ 802BF20
- ldr r1, _0802BF3C @ =gBattleMons
- ldr r0, _0802BF40 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- ldr r1, _0802BF44 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0802BF3C: .4byte gBattleMons
-_0802BF40: .4byte gBankAttacker
-_0802BF44: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802BF20
-
- thumb_func_start sub_802BF48
-sub_802BF48: @ 802BF48
- ldr r1, _0802BF50 @ =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0802BF50: .4byte gFightStateTracker
- thumb_func_end sub_802BF48
-
- thumb_func_start sub_802BF54
-sub_802BF54: @ 802BF54
- ldr r1, _0802BF64 @ =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- ldr r1, _0802BF68 @ =gCurrentMoveTurn
- ldr r0, _0802BF6C @ =gNoOfAllBanks
- ldrb r0, [r0]
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0802BF64: .4byte gFightStateTracker
-_0802BF68: .4byte gCurrentMoveTurn
-_0802BF6C: .4byte gNoOfAllBanks
- thumb_func_end sub_802BF54
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_8.s b/asm/battle_8.s
deleted file mode 100644
index 366c503f2..000000000
--- a/asm/battle_8.s
+++ /dev/null
@@ -1,5222 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start OpponentHandleGetAttributes
-OpponentHandleGetAttributes: @ 8033524
- push {r4-r6,lr}
- sub sp, 0x100
- movs r6, 0
- ldr r1, _08033550 @ =gBattleBufferA
- ldr r0, _08033554 @ =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 9
- adds r1, 0x2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0
- bne _0803355C
- ldr r0, _08033558 @ =gBattlePartyID
- lsls r1, r2, 1
- adds r1, r0
- ldrb r0, [r1]
- mov r1, sp
- bl sub_8033598
- adds r6, r0, 0
- b _0803357E
- .align 2, 0
-_08033550: .4byte gBattleBufferA
-_08033554: .4byte gActiveBank
-_08033558: .4byte gBattlePartyID
-_0803355C:
- ldrb r4, [r1]
- movs r5, 0
-_08033560:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _08033576
- lsls r0, r5, 24
- lsrs r0, 24
- mov r2, sp
- adds r1, r2, r6
- bl sub_8033598
- adds r6, r0
-_08033576:
- lsrs r4, 1
- adds r5, 0x1
- cmp r5, 0x5
- ble _08033560
-_0803357E:
- lsls r1, r6, 16
- lsrs r1, 16
- movs r0, 0x1
- mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
- bl OpponentBufferExecCompleted
- add sp, 0x100
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end OpponentHandleGetAttributes
-
- thumb_func_start sub_8033598
-sub_8033598: @ 8033598
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x90
- adds r7, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- ldr r2, _080335CC @ =gBattleBufferA
- ldr r3, _080335D0 @ =gActiveBank
- ldrb r0, [r3]
- lsls r0, 9
- adds r1, r2, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3B
- bls _080335C2
- bl _08033D2E
-_080335C2:
- lsls r0, 2
- ldr r1, _080335D4 @ =_080335D8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080335CC: .4byte gBattleBufferA
-_080335D0: .4byte gActiveBank
-_080335D4: .4byte _080335D8
- .align 2, 0
-_080335D8:
- .4byte _080336C8
- .4byte _080338EC
- .4byte _080338FC
- .4byte _0803390C
- .4byte _08033974
- .4byte _08033974
- .4byte _08033974
- .4byte _08033974
- .4byte _08033990
- .4byte _080339CC
- .4byte _080339CC
- .4byte _080339CC
- .4byte _080339CC
- .4byte _08033D2E
- .4byte _08033D2E
- .4byte _08033D2E
- .4byte _08033D2E
- .4byte _080339E8
- .4byte _080339F8
- .4byte _08033A28
- .4byte _08033A38
- .4byte _08033A48
- .4byte _08033A58
- .4byte _08033A68
- .4byte _08033A78
- .4byte _08033A88
- .4byte _08033A98
- .4byte _08033AA8
- .4byte _08033AB8
- .4byte _08033AC8
- .4byte _08033AD8
- .4byte _08033AE8
- .4byte _08033B38
- .4byte _08033B48
- .4byte _08033B58
- .4byte _08033B68
- .4byte _08033B78
- .4byte _08033B88
- .4byte _08033B98
- .4byte _08033BA8
- .4byte _08033BB8
- .4byte _08033BEC
- .4byte _08033BFC
- .4byte _08033C0C
- .4byte _08033C1C
- .4byte _08033C2C
- .4byte _08033C3C
- .4byte _08033C4C
- .4byte _08033C5C
- .4byte _08033C7C
- .4byte _08033C8C
- .4byte _08033C9C
- .4byte _08033CAC
- .4byte _08033CBC
- .4byte _08033CCC
- .4byte _08033CDC
- .4byte _08033CEC
- .4byte _08033CFC
- .4byte _08033D0C
- .4byte _08033D1C
-_080336C8:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _080338DC @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x2E]
- movs r6, 0
- add r0, sp, 0x24
- mov r9, r0
- movs r1, 0x3B
- add r1, sp
- mov r10, r1
- mov r2, sp
- adds r2, 0x2B
- str r2, [sp, 0x80]
- mov r0, sp
- adds r0, 0x2A
- str r0, [sp, 0x7C]
- mov r1, sp
- adds r1, 0x68
- str r1, [sp, 0x8C]
- adds r2, 0x5
- str r2, [sp, 0x84]
- adds r0, 0x12
- str r0, [sp, 0x88]
- mov r8, r4
- add r4, sp, 0xC
-_08033714:
- adds r1, r6, 0
- adds r1, 0xD
- mov r0, r8
- bl GetMonData
- strh r0, [r4]
- adds r1, r6, 0
- adds r1, 0x11
- mov r0, r8
- bl GetMonData
- mov r2, r9
- adds r1, r2, r6
- strb r0, [r1]
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _08033714
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _080338DC @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x15
- bl GetMonData
- mov r1, r10
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- ldr r2, [sp, 0x80]
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x19
- bl GetMonData
- str r0, [sp, 0x44]
- adds r0, r4, 0
- movs r1, 0x27
- bl GetMonData
- mov r3, sp
- movs r5, 0x1F
- ands r0, r5
- ldrb r2, [r3, 0x14]
- movs r1, 0x20
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x14]
- adds r0, r4, 0
- movs r1, 0x28
- bl GetMonData
- mov r3, sp
- movs r6, 0x1F
- ands r0, r6
- lsls r0, 5
- ldrh r2, [r3, 0x14]
- ldr r1, _080338E0 @ =0xfffffc1f
- ands r1, r2
- orrs r1, r0
- strh r1, [r3, 0x14]
- adds r0, r4, 0
- movs r1, 0x29
- bl GetMonData
- mov r3, sp
- ands r0, r5
- lsls r0, 2
- ldrb r2, [r3, 0x15]
- movs r1, 0x7D
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x15]
- adds r0, r4, 0
- movs r1, 0x2A
- bl GetMonData
- movs r1, 0x1F
- ands r1, r0
- lsls r1, 15
- ldr r0, [sp, 0x14]
- ldr r2, _080338E4 @ =0xfff07fff
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x14]
- adds r0, r4, 0
- movs r1, 0x2B
- bl GetMonData
- mov r3, sp
- ands r0, r6
- lsls r0, 4
- ldrh r2, [r3, 0x16]
- ldr r1, _080338E8 @ =0xfffffe0f
- ands r1, r2
- orrs r1, r0
- strh r1, [r3, 0x16]
- adds r0, r4, 0
- movs r1, 0x2C
- bl GetMonData
- mov r3, sp
- ands r0, r5
- lsls r0, 1
- ldrb r2, [r3, 0x17]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x17]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [sp, 0x48]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- str r0, [sp, 0x4C]
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- ldr r1, [sp, 0x7C]
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x28]
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x2C]
- adds r0, r4, 0
- movs r1, 0x3B
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x2]
- adds r0, r4, 0
- movs r1, 0x3C
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x4]
- adds r0, r4, 0
- movs r1, 0x3D
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x6]
- adds r0, r4, 0
- movs r1, 0x3E
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x8]
- adds r0, r4, 0
- movs r1, 0x3F
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0xA]
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- mov r3, sp
- movs r1, 0x1
- ands r0, r1
- lsls r0, 6
- ldrb r2, [r3, 0x17]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x17]
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- mov r3, sp
- lsls r0, 7
- ldrb r2, [r3, 0x17]
- movs r1, 0x7F
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x17]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- str r0, [sp, 0x54]
- adds r0, r4, 0
- movs r1, 0x2
- ldr r2, [sp, 0x8C]
- bl GetMonData
- ldr r0, [sp, 0x84]
- ldr r1, [sp, 0x8C]
- bl StringCopy10
- adds r0, r4, 0
- movs r1, 0x7
- ldr r2, [sp, 0x88]
- bl GetMonData
- mov r2, sp
- movs r6, 0
-_080338CC:
- adds r0, r7, r6
- adds r1, r2, r6
- ldrb r1, [r1]
- strb r1, [r0]
- adds r6, 0x1
- cmp r6, 0x57
- bls _080338CC
- b _08033D2E
- .align 2, 0
-_080338DC: .4byte gEnemyParty
-_080338E0: .4byte 0xfffffc1f
-_080338E4: .4byte 0xfff07fff
-_080338E8: .4byte 0xfffffe0f
-_080338EC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080338F8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0xB
- b _08033C66
- .align 2, 0
-_080338F8: .4byte gEnemyParty
-_080338FC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033908 @ =gEnemyParty
- adds r0, r1
- movs r1, 0xC
- b _08033C66
- .align 2, 0
-_08033908: .4byte gEnemyParty
-_0803390C:
- movs r6, 0
- add r2, sp, 0x58
- mov r9, r2
- add r0, sp, 0x60
- mov r10, r0
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08033970 @ =gEnemyParty
- adds r4, r1, r0
- mov r8, r9
-_08033922:
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r4, 0
- bl GetMonData
- mov r1, r8
- strh r0, [r1]
- adds r1, r6, 0
- adds r1, 0x11
- adds r0, r4, 0
- bl GetMonData
- mov r2, r10
- adds r1, r2, r6
- strb r0, [r1]
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _08033922
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033970 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x15
- bl GetMonData
- mov r1, r9
- strb r0, [r1, 0xC]
- mov r2, r9
- movs r6, 0
-_08033960:
- adds r0, r7, r6
- adds r1, r2, r6
- ldrb r1, [r1]
- strb r1, [r0]
- adds r6, 0x1
- cmp r6, 0xF
- bls _08033960
- b _08033D2E
- .align 2, 0
-_08033970: .4byte gEnemyParty
-_08033974:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0803398C @ =gEnemyParty
- adds r0, r1
- ldrb r1, [r3]
- lsls r1, 9
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- adds r1, 0x9
- b _08033C66
- .align 2, 0
-_0803398C: .4byte gEnemyParty
-_08033990:
- movs r6, 0
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r2, _080339C8 @ =gEnemyParty
- mov r8, r2
-_0803399C:
- adds r1, r6, 0
- adds r1, 0x11
- mov r2, r8
- adds r0, r4, r2
- bl GetMonData
- adds r1, r7, r6
- strb r0, [r1]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0803399C
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080339C8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x15
- bl GetMonData
- adds r1, r7, r6
- strb r0, [r1]
- adds r6, 0x1
- b _08033D2E
- .align 2, 0
-_080339C8: .4byte gEnemyParty
-_080339CC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080339E4 @ =gEnemyParty
- adds r0, r1
- ldrb r1, [r3]
- lsls r1, 9
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- adds r1, 0x8
- b _08033D26
- .align 2, 0
-_080339E4: .4byte gEnemyParty
-_080339E8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080339F4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x1
- b _08033A02
- .align 2, 0
-_080339F4: .4byte gEnemyParty
-_080339F8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033A24 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x19
-_08033A02:
- bl GetMonData
- adds r1, r0, 0
- strb r1, [r7]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r0, 8
- strb r0, [r7, 0x1]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r0, 16
- strb r0, [r7, 0x2]
- movs r6, 0x3
- b _08033D2E
- .align 2, 0
-_08033A24: .4byte gEnemyParty
-_08033A28:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033A34 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x1A
- b _08033D26
- .align 2, 0
-_08033A34: .4byte gEnemyParty
-_08033A38:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033A44 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x1B
- b _08033D26
- .align 2, 0
-_08033A44: .4byte gEnemyParty
-_08033A48:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033A54 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x1C
- b _08033D26
- .align 2, 0
-_08033A54: .4byte gEnemyParty
-_08033A58:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033A64 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x1D
- b _08033D26
- .align 2, 0
-_08033A64: .4byte gEnemyParty
-_08033A68:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033A74 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x1E
- b _08033D26
- .align 2, 0
-_08033A74: .4byte gEnemyParty
-_08033A78:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033A84 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x1F
- b _08033D26
- .align 2, 0
-_08033A84: .4byte gEnemyParty
-_08033A88:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033A94 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x20
- b _08033D26
- .align 2, 0
-_08033A94: .4byte gEnemyParty
-_08033A98:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033AA4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x22
- b _08033D26
- .align 2, 0
-_08033AA4: .4byte gEnemyParty
-_08033AA8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033AB4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x23
- b _08033D26
- .align 2, 0
-_08033AB4: .4byte gEnemyParty
-_08033AB8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033AC4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x24
- b _08033D26
- .align 2, 0
-_08033AC4: .4byte gEnemyParty
-_08033AC8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033AD4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x25
- b _08033D26
- .align 2, 0
-_08033AD4: .4byte gEnemyParty
-_08033AD8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033AE4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x26
- b _08033D26
- .align 2, 0
-_08033AE4: .4byte gEnemyParty
-_08033AE8:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _08033B34 @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x27
- bl GetMonData
- strb r0, [r7]
- adds r0, r4, 0
- movs r1, 0x28
- bl GetMonData
- strb r0, [r7, 0x1]
- adds r0, r4, 0
- movs r1, 0x29
- bl GetMonData
- strb r0, [r7, 0x2]
- adds r0, r4, 0
- movs r1, 0x2A
- bl GetMonData
- strb r0, [r7, 0x3]
- adds r0, r4, 0
- movs r1, 0x2B
- bl GetMonData
- strb r0, [r7, 0x4]
- adds r0, r4, 0
- movs r1, 0x2C
- bl GetMonData
- strb r0, [r7, 0x5]
- movs r6, 0x6
- b _08033D2E
- .align 2, 0
-_08033B34: .4byte gEnemyParty
-_08033B38:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033B44 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x27
- b _08033D26
- .align 2, 0
-_08033B44: .4byte gEnemyParty
-_08033B48:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033B54 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x28
- b _08033D26
- .align 2, 0
-_08033B54: .4byte gEnemyParty
-_08033B58:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033B64 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x29
- b _08033D26
- .align 2, 0
-_08033B64: .4byte gEnemyParty
-_08033B68:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033B74 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2A
- b _08033D26
- .align 2, 0
-_08033B74: .4byte gEnemyParty
-_08033B78:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033B84 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2B
- b _08033D26
- .align 2, 0
-_08033B84: .4byte gEnemyParty
-_08033B88:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033B94 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2C
- b _08033D26
- .align 2, 0
-_08033B94: .4byte gEnemyParty
-_08033B98:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033BA4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0
- b _08033BC2
- .align 2, 0
-_08033BA4: .4byte gEnemyParty
-_08033BA8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033BB4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x9
- b _08033C66
- .align 2, 0
-_08033BB4: .4byte gEnemyParty
-_08033BB8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033BE8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x37
-_08033BC2:
- bl GetMonData
- adds r1, r0, 0
- strb r1, [r7]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r0, 8
- strb r0, [r7, 0x1]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r0, 16
- strb r0, [r7, 0x2]
- lsrs r0, r1, 24
- strb r0, [r7, 0x3]
- movs r6, 0x4
- b _08033D2E
- .align 2, 0
-_08033BE8: .4byte gEnemyParty
-_08033BEC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033BF8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x38
- b _08033D26
- .align 2, 0
-_08033BF8: .4byte gEnemyParty
-_08033BFC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033C08 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- b _08033C66
- .align 2, 0
-_08033C08: .4byte gEnemyParty
-_08033C0C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033C18 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x3A
- b _08033C66
- .align 2, 0
-_08033C18: .4byte gEnemyParty
-_08033C1C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033C28 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x3B
- b _08033C66
- .align 2, 0
-_08033C28: .4byte gEnemyParty
-_08033C2C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033C38 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x3C
- b _08033C66
- .align 2, 0
-_08033C38: .4byte gEnemyParty
-_08033C3C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033C48 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x3D
- b _08033C66
- .align 2, 0
-_08033C48: .4byte gEnemyParty
-_08033C4C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033C58 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x3E
- b _08033C66
- .align 2, 0
-_08033C58: .4byte gEnemyParty
-_08033C5C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033C78 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x3F
-_08033C66:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- strb r0, [r7]
- lsrs r0, 8
- strb r0, [r7, 0x1]
- movs r6, 0x2
- b _08033D2E
- .align 2, 0
-_08033C78: .4byte gEnemyParty
-_08033C7C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033C88 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x16
- b _08033D26
- .align 2, 0
-_08033C88: .4byte gEnemyParty
-_08033C8C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033C98 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x17
- b _08033D26
- .align 2, 0
-_08033C98: .4byte gEnemyParty
-_08033C9C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033CA8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x18
- b _08033D26
- .align 2, 0
-_08033CA8: .4byte gEnemyParty
-_08033CAC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033CB8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x21
- b _08033D26
- .align 2, 0
-_08033CB8: .4byte gEnemyParty
-_08033CBC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033CC8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2F
- b _08033D26
- .align 2, 0
-_08033CC8: .4byte gEnemyParty
-_08033CCC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033CD8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x30
- b _08033D26
- .align 2, 0
-_08033CD8: .4byte gEnemyParty
-_08033CDC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033CE8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x32
- b _08033D26
- .align 2, 0
-_08033CE8: .4byte gEnemyParty
-_08033CEC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033CF8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x33
- b _08033D26
- .align 2, 0
-_08033CF8: .4byte gEnemyParty
-_08033CFC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033D08 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x34
- b _08033D26
- .align 2, 0
-_08033D08: .4byte gEnemyParty
-_08033D0C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033D18 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x35
- b _08033D26
- .align 2, 0
-_08033D18: .4byte gEnemyParty
-_08033D1C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08033D40 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x36
-_08033D26:
- bl GetMonData
- strb r0, [r7]
- movs r6, 0x1
-_08033D2E:
- adds r0, r6, 0
- add sp, 0x90
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08033D40: .4byte gEnemyParty
- thumb_func_end sub_8033598
-
- thumb_func_start dp01t_01_2_read_pokmon_data_slice
-dp01t_01_2_read_pokmon_data_slice: @ 8033D44
- push {r4-r7,lr}
- sub sp, 0x58
- ldr r2, _08033DBC @ =gBattlePartyID
- ldr r5, _08033DC0 @ =gActiveBank
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- adds r4, r2, 0
- muls r4, r0
- ldr r3, _08033DC4 @ =gBattleBufferA
- lsls r1, 9
- adds r0, r3, 0x1
- adds r0, r1, r0
- ldrb r2, [r0]
- ldr r0, _08033DC8 @ =gEnemyParty
- adds r0, r2, r0
- adds r6, r4, r0
- mov r0, sp
- adds r4, r0, r2
- movs r2, 0
- adds r0, r3, 0x2
- adds r1, r0
- adds r7, r5, 0
- mov r12, r3
- ldrb r1, [r1]
- cmp r2, r1
- bcs _08033D9A
- adds r3, r0, 0
-_08033D80:
- adds r1, r4, r2
- adds r0, r6, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r5]
- lsls r0, 9
- adds r0, r3
- ldrb r0, [r0]
- cmp r2, r0
- bcc _08033D80
-_08033D9A:
- ldrb r0, [r7]
- lsls r0, 9
- mov r1, r12
- adds r1, 0x2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- adds r2, r4, 0
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
- bl OpponentBufferExecCompleted
- add sp, 0x58
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08033DBC: .4byte gBattlePartyID
-_08033DC0: .4byte gActiveBank
-_08033DC4: .4byte gBattleBufferA
-_08033DC8: .4byte gEnemyParty
- thumb_func_end dp01t_01_2_read_pokmon_data_slice
-
- thumb_func_start OpponentHandleSetAttributes
-OpponentHandleSetAttributes: @ 8033DCC
- push {r4,r5,lr}
- ldr r1, _08033DF0 @ =gBattleBufferA
- ldr r0, _08033DF4 @ =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 9
- adds r1, 0x2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0
- bne _08033DFC
- ldr r0, _08033DF8 @ =gBattlePartyID
- lsls r1, r2, 1
- adds r1, r0
- ldrb r0, [r1]
- bl sub_8033E24
- b _08033E1A
- .align 2, 0
-_08033DF0: .4byte gBattleBufferA
-_08033DF4: .4byte gActiveBank
-_08033DF8: .4byte gBattlePartyID
-_08033DFC:
- ldrb r4, [r1]
- movs r5, 0
-_08033E00:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _08033E0E
- adds r0, r5, 0
- bl sub_8033E24
-_08033E0E:
- lsrs r4, 1
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08033E00
-_08033E1A:
- bl OpponentBufferExecCompleted
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end OpponentHandleSetAttributes
-
- thumb_func_start sub_8033E24
-sub_8033E24: @ 8033E24
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x38
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r3, _08033E5C @ =gActiveBank
- ldrb r0, [r3]
- lsls r0, 9
- ldr r2, _08033E60 @ =gUnknown_02023A63
- adds r4, r0, r2
- adds r7, r4, 0
- subs r1, r2, 0x2
- adds r0, r1
- ldrb r0, [r0]
- adds r6, r3, 0
- adds r3, r2, 0
- cmp r0, 0x3B
- bls _08033E52
- bl _08034730
-_08033E52:
- lsls r0, 2
- ldr r1, _08033E64 @ =_08033E68
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08033E5C: .4byte gActiveBank
-_08033E60: .4byte gUnknown_02023A63
-_08033E64: .4byte _08033E68
- .align 2, 0
-_08033E68:
- .4byte _08033F58
- .4byte _080340F0
- .4byte _0803410C
- .4byte _08034128
- .4byte _0803417C
- .4byte _0803417C
- .4byte _0803417C
- .4byte _0803417C
- .4byte _0803419C
- .4byte _08034204
- .4byte _08034204
- .4byte _08034204
- .4byte _08034204
- .4byte _08034730
- .4byte _08034730
- .4byte _08034730
- .4byte _08034730
- .4byte _0803422C
- .4byte _08034248
- .4byte _08034264
- .4byte _08034280
- .4byte _0803429C
- .4byte _080342B8
- .4byte _080342D4
- .4byte _080342F0
- .4byte _0803430C
- .4byte _08034328
- .4byte _08034344
- .4byte _08034360
- .4byte _0803437C
- .4byte _08034398
- .4byte _080343B4
- .4byte _08034428
- .4byte _08034444
- .4byte _08034460
- .4byte _0803447C
- .4byte _08034498
- .4byte _080344B4
- .4byte _080344D0
- .4byte _080344EC
- .4byte _08034508
- .4byte _08034524
- .4byte _08034540
- .4byte _0803455C
- .4byte _08034578
- .4byte _08034594
- .4byte _080345B0
- .4byte _080345CC
- .4byte _080345E8
- .4byte _08034604
- .4byte _08034620
- .4byte _0803463C
- .4byte _08034658
- .4byte _08034674
- .4byte _08034690
- .4byte _080346AC
- .4byte _080346C8
- .4byte _080346E4
- .4byte _08034700
- .4byte _0803471C
-_08033F58:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _080340EC @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB
- adds r2, r7, 0
- bl SetMonData
- adds r2, r7, 0
- adds r2, 0x2E
- adds r0, r4, 0
- movs r1, 0xC
- bl SetMonData
- movs r0, 0
- mov r8, r0
- movs r0, 0x3B
- adds r0, r7
- mov r10, r0
- adds r0, r7, 0
- adds r0, 0x2B
- str r0, [sp, 0x20]
- adds r0, 0x19
- str r0, [sp, 0x28]
- adds r0, 0x4
- str r0, [sp, 0x2C]
- adds r0, 0x4
- str r0, [sp, 0x30]
- subs r0, 0x22
- str r0, [sp, 0x1C]
- subs r0, 0x2
- str r0, [sp, 0x18]
- adds r0, 0x4
- str r0, [sp, 0x24]
- adds r0, r7, 0x2
- str r0, [sp, 0x4]
- adds r0, r7, 0x4
- str r0, [sp, 0x8]
- adds r0, r7, 0x6
- str r0, [sp, 0xC]
- adds r0, 0x2
- str r0, [sp, 0x10]
- adds r0, 0x2
- str r0, [sp, 0x14]
- mov r9, r4
- adds r6, r7, 0
- adds r6, 0x24
- adds r4, r7, 0
- adds r4, 0xC
-_08033FBE:
- mov r1, r8
- adds r1, 0xD
- mov r0, r9
- adds r2, r4, 0
- bl SetMonData
- mov r1, r8
- adds r1, 0x11
- mov r0, r9
- adds r2, r6, 0
- bl SetMonData
- adds r6, 0x1
- adds r4, 0x2
- movs r0, 0x1
- add r8, r0
- mov r0, r8
- cmp r0, 0x3
- ble _08033FBE
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _080340EC @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x15
- mov r2, r10
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x20
- ldr r2, [sp, 0x20]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x19
- ldr r2, [sp, 0x28]
- bl SetMonData
- ldrb r0, [r7, 0x14]
- lsls r0, 27
- lsrs r0, 27
- mov r1, sp
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x27
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldrh r0, [r7, 0x14]
- lsls r0, 22
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x28
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldrb r0, [r7, 0x15]
- lsls r0, 25
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x29
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldr r0, [r7, 0x14]
- lsls r0, 12
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x2A
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldrh r0, [r7, 0x16]
- lsls r0, 23
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x2B
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldrb r0, [r7, 0x17]
- lsls r0, 26
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x2C
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0
- ldr r2, [sp, 0x2C]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x37
- ldr r2, [sp, 0x30]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x38
- ldr r2, [sp, 0x1C]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x39
- ldr r2, [sp, 0x18]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3A
- ldr r2, [sp, 0x24]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3B
- ldr r2, [sp, 0x4]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3C
- ldr r2, [sp, 0x8]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3D
- ldr r2, [sp, 0xC]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3E
- ldr r2, [sp, 0x10]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3F
- ldr r2, [sp, 0x14]
- bl SetMonData
- b _08034730
- .align 2, 0
-_080340EC: .4byte gEnemyParty
-_080340F0:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034108 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0xB
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034108: .4byte gEnemyParty
-_0803410C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034124 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0xC
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034124: .4byte gEnemyParty
-_08034128:
- movs r0, 0
- mov r8, r0
- movs r0, 0xC
- adds r0, r4
- mov r9, r0
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08034178 @ =gEnemyParty
- adds r7, r1, r0
- adds r6, r4, 0
- adds r6, 0x8
-_08034140:
- mov r1, r8
- adds r1, 0xD
- adds r0, r7, 0
- adds r2, r4, 0
- bl SetMonData
- mov r1, r8
- adds r1, 0x11
- adds r0, r7, 0
- adds r2, r6, 0
- bl SetMonData
- adds r6, 0x1
- adds r4, 0x2
- movs r0, 0x1
- add r8, r0
- mov r0, r8
- cmp r0, 0x3
- ble _08034140
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034178 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x15
- mov r2, r9
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034178: .4byte gEnemyParty
-_0803417C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034194 @ =gEnemyParty
- adds r0, r1
- ldr r3, _08034198 @ =gBattleBufferA
- ldrb r2, [r6]
- lsls r2, 9
- adds r1, r3, 0x1
- adds r1, r2, r1
- ldrb r1, [r1]
- adds r1, 0x9
- b _0803421A
- .align 2, 0
-_08034194: .4byte gEnemyParty
-_08034198: .4byte gBattleBufferA
-_0803419C:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _08034200 @ =gEnemyParty
- adds r4, r0
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- adds r0, r4, 0
- movs r1, 0x11
- str r3, [sp, 0x34]
- bl SetMonData
- ldrb r2, [r6]
- lsls r2, 9
- ldr r3, [sp, 0x34]
- adds r0, r3, 0x1
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x12
- bl SetMonData
- ldrb r2, [r6]
- lsls r2, 9
- ldr r3, [sp, 0x34]
- adds r0, r3, 0x2
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x13
- bl SetMonData
- ldrb r2, [r6]
- lsls r2, 9
- ldr r3, [sp, 0x34]
- adds r0, r3, 0x3
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x14
- bl SetMonData
- ldrb r2, [r6]
- lsls r2, 9
- ldr r3, [sp, 0x34]
- adds r0, r3, 0x4
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x15
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034200: .4byte gEnemyParty
-_08034204:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034224 @ =gEnemyParty
- adds r0, r1
- ldr r3, _08034228 @ =gBattleBufferA
- ldrb r2, [r6]
- lsls r2, 9
- adds r1, r3, 0x1
- adds r1, r2, r1
- ldrb r1, [r1]
- adds r1, 0x8
-_0803421A:
- adds r3, 0x3
- adds r2, r3
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034224: .4byte gEnemyParty
-_08034228: .4byte gBattleBufferA
-_0803422C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034244 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x1
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034244: .4byte gEnemyParty
-_08034248:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034260 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x19
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034260: .4byte gEnemyParty
-_08034264:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0803427C @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x1A
- bl SetMonData
- b _08034730
- .align 2, 0
-_0803427C: .4byte gEnemyParty
-_08034280:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034298 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x1B
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034298: .4byte gEnemyParty
-_0803429C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080342B4 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x1C
- bl SetMonData
- b _08034730
- .align 2, 0
-_080342B4: .4byte gEnemyParty
-_080342B8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080342D0 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x1D
- bl SetMonData
- b _08034730
- .align 2, 0
-_080342D0: .4byte gEnemyParty
-_080342D4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080342EC @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x1E
- bl SetMonData
- b _08034730
- .align 2, 0
-_080342EC: .4byte gEnemyParty
-_080342F0:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034308 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x1F
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034308: .4byte gEnemyParty
-_0803430C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034324 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x20
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034324: .4byte gEnemyParty
-_08034328:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034340 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x22
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034340: .4byte gEnemyParty
-_08034344:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0803435C @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x23
- bl SetMonData
- b _08034730
- .align 2, 0
-_0803435C: .4byte gEnemyParty
-_08034360:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034378 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x24
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034378: .4byte gEnemyParty
-_0803437C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034394 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x25
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034394: .4byte gEnemyParty
-_08034398:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080343B0 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x26
- bl SetMonData
- b _08034730
- .align 2, 0
-_080343B0: .4byte gEnemyParty
-_080343B4:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _08034424 @ =gEnemyParty
- adds r4, r0
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- adds r0, r4, 0
- movs r1, 0x27
- str r3, [sp, 0x34]
- bl SetMonData
- ldrb r2, [r6]
- lsls r2, 9
- ldr r3, [sp, 0x34]
- adds r0, r3, 0x1
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x28
- bl SetMonData
- ldrb r2, [r6]
- lsls r2, 9
- ldr r3, [sp, 0x34]
- adds r0, r3, 0x2
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x29
- bl SetMonData
- ldrb r2, [r6]
- lsls r2, 9
- ldr r3, [sp, 0x34]
- adds r0, r3, 0x3
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x2A
- bl SetMonData
- ldrb r2, [r6]
- lsls r2, 9
- ldr r3, [sp, 0x34]
- adds r0, r3, 0x4
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x2B
- bl SetMonData
- ldrb r2, [r6]
- lsls r2, 9
- ldr r3, [sp, 0x34]
- adds r0, r3, 0x5
- adds r2, r0
- adds r0, r4, 0
- b _080344C2
- .align 2, 0
-_08034424: .4byte gEnemyParty
-_08034428:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034440 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x27
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034440: .4byte gEnemyParty
-_08034444:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0803445C @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x28
- bl SetMonData
- b _08034730
- .align 2, 0
-_0803445C: .4byte gEnemyParty
-_08034460:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034478 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x29
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034478: .4byte gEnemyParty
-_0803447C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034494 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x2A
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034494: .4byte gEnemyParty
-_08034498:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080344B0 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x2B
- bl SetMonData
- b _08034730
- .align 2, 0
-_080344B0: .4byte gEnemyParty
-_080344B4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080344CC @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
-_080344C2:
- movs r1, 0x2C
- bl SetMonData
- b _08034730
- .align 2, 0
-_080344CC: .4byte gEnemyParty
-_080344D0:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080344E8 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0
- bl SetMonData
- b _08034730
- .align 2, 0
-_080344E8: .4byte gEnemyParty
-_080344EC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034504 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x9
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034504: .4byte gEnemyParty
-_08034508:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034520 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x37
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034520: .4byte gEnemyParty
-_08034524:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0803453C @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x38
- bl SetMonData
- b _08034730
- .align 2, 0
-_0803453C: .4byte gEnemyParty
-_08034540:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034558 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x39
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034558: .4byte gEnemyParty
-_0803455C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034574 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x3A
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034574: .4byte gEnemyParty
-_08034578:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034590 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x3B
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034590: .4byte gEnemyParty
-_08034594:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080345AC @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x3C
- bl SetMonData
- b _08034730
- .align 2, 0
-_080345AC: .4byte gEnemyParty
-_080345B0:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080345C8 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x3D
- bl SetMonData
- b _08034730
- .align 2, 0
-_080345C8: .4byte gEnemyParty
-_080345CC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080345E4 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x3E
- bl SetMonData
- b _08034730
- .align 2, 0
-_080345E4: .4byte gEnemyParty
-_080345E8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034600 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x3F
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034600: .4byte gEnemyParty
-_08034604:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0803461C @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x16
- bl SetMonData
- b _08034730
- .align 2, 0
-_0803461C: .4byte gEnemyParty
-_08034620:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034638 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x17
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034638: .4byte gEnemyParty
-_0803463C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034654 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x18
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034654: .4byte gEnemyParty
-_08034658:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034670 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x21
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034670: .4byte gEnemyParty
-_08034674:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0803468C @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x2F
- bl SetMonData
- b _08034730
- .align 2, 0
-_0803468C: .4byte gEnemyParty
-_08034690:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080346A8 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x30
- bl SetMonData
- b _08034730
- .align 2, 0
-_080346A8: .4byte gEnemyParty
-_080346AC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080346C4 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x32
- bl SetMonData
- b _08034730
- .align 2, 0
-_080346C4: .4byte gEnemyParty
-_080346C8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080346E0 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x33
- bl SetMonData
- b _08034730
- .align 2, 0
-_080346E0: .4byte gEnemyParty
-_080346E4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _080346FC @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x34
- bl SetMonData
- b _08034730
- .align 2, 0
-_080346FC: .4byte gEnemyParty
-_08034700:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034718 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x35
- bl SetMonData
- b _08034730
- .align 2, 0
-_08034718: .4byte gEnemyParty
-_0803471C:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08034740 @ =gEnemyParty
- adds r0, r1
- ldrb r2, [r6]
- lsls r2, 9
- adds r2, r3
- movs r1, 0x36
- bl SetMonData
-_08034730:
- add sp, 0x38
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08034740: .4byte gEnemyParty
- thumb_func_end sub_8033E24
-
- thumb_func_start sub_8034744
-sub_8034744: @ 8034744
- push {r4-r7,lr}
- ldr r1, _080347A8 @ =gBattlePartyID
- ldr r7, _080347AC @ =gActiveBank
- ldrb r2, [r7]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- adds r3, r1, 0
- muls r3, r0
- ldr r4, _080347B0 @ =gBattleBufferA
- lsls r2, 9
- adds r0, r4, 0x1
- adds r0, r2, r0
- ldrb r0, [r0]
- ldr r1, _080347B4 @ =gEnemyParty
- adds r0, r1
- adds r5, r3, r0
- movs r3, 0
- adds r0, r4, 0x2
- adds r2, r0
- ldrb r2, [r2]
- cmp r3, r2
- bcs _0803479C
- adds r6, r4, 0
- adds r2, r7, 0
- adds r4, r0, 0
-_0803477A:
- adds r1, r5, r3
- ldrb r0, [r2]
- lsls r0, 9
- adds r0, 0x3
- adds r0, r3, r0
- adds r0, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- ldrb r0, [r2]
- lsls r0, 9
- adds r0, r4
- ldrb r0, [r0]
- cmp r3, r0
- bcc _0803477A
-_0803479C:
- bl OpponentBufferExecCompleted
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080347A8: .4byte gBattlePartyID
-_080347AC: .4byte gActiveBank
-_080347B0: .4byte gBattleBufferA
-_080347B4: .4byte gEnemyParty
- thumb_func_end sub_8034744
-
- thumb_func_start OpponentHandleLoadPokeSprite
-OpponentHandleLoadPokeSprite: @ 80347B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r6, _080348E8 @ =gActiveBank
- ldrb r0, [r6]
- lsls r0, 1
- ldr r1, _080348EC @ =gBattlePartyID
- adds r0, r1
- ldrh r0, [r0]
- movs r7, 0x64
- muls r0, r7
- ldr r2, _080348F0 @ =gEnemyParty
- mov r10, r2
- add r0, r10
- movs r1, 0xB
- bl GetMonData
- mov r8, r0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldrb r1, [r6]
- lsls r0, r1, 1
- ldr r2, _080348EC @ =gBattlePartyID
- adds r0, r2
- ldrh r0, [r0]
- muls r0, r7
- add r0, r10
- bl sub_8031794
- ldrb r0, [r6]
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r8
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _080348F4 @ =gUnknown_02024E8C
- mov r9, r0
- ldrb r0, [r6]
- movs r1, 0x2
- bl sub_8077ABC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldrb r0, [r6]
- bl sub_8077F68
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r6]
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- mov r0, r9
- adds r1, r5, 0
- adds r2, r4, 0
- bl CreateSprite
- ldr r4, _080348F8 @ =gObjectBankIDs
- ldrb r1, [r6]
- adds r1, r4
- strb r0, [r1]
- ldr r5, _080348FC @ =gSprites
- ldrb r0, [r6]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08034900 @ =0x0000ff10
- strh r1, [r0, 0x24]
- ldrb r2, [r6]
- adds r0, r2, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x2E]
- ldrb r0, [r6]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r8
- strh r1, [r0, 0x32]
- ldrb r3, [r6]
- adds r0, r3, r4
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r2, [r6]
- adds r4, r2, r4
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08034904 @ =gBattleMonForms
- adds r2, r1
- ldrb r1, [r2]
- bl StartSpriteAnim
- ldrb r4, [r6]
- lsls r0, r4, 1
- ldr r2, _080348EC @ =gBattlePartyID
- adds r0, r2
- ldrh r0, [r0]
- muls r0, r7
- add r0, r10
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8032984
- ldr r1, _08034908 @ =gBattleBankFunc
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0803490C @ =sub_8033018
- str r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080348E8: .4byte gActiveBank
-_080348EC: .4byte gBattlePartyID
-_080348F0: .4byte gEnemyParty
-_080348F4: .4byte gUnknown_02024E8C
-_080348F8: .4byte gObjectBankIDs
-_080348FC: .4byte gSprites
-_08034900: .4byte 0x0000ff10
-_08034904: .4byte gBattleMonForms
-_08034908: .4byte gBattleBankFunc
-_0803490C: .4byte sub_8033018
- thumb_func_end OpponentHandleLoadPokeSprite
-
- thumb_func_start OpponentHandleSendOutPoke
-OpponentHandleSendOutPoke: @ 8034910
- push {r4,lr}
- ldr r1, _08034948 @ =gBattlePartyID
- ldr r4, _0803494C @ =gActiveBank
- ldrb r0, [r4]
- lsls r2, r0, 1
- adds r2, r1
- ldr r3, _08034950 @ =gBattleBufferA
- lsls r0, 9
- adds r1, r3, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r2]
- ldrb r0, [r4]
- lsls r1, r0, 9
- adds r3, 0x2
- adds r1, r3
- ldrb r1, [r1]
- bl sub_803495C
- ldr r1, _08034954 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08034958 @ =sub_80333D4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08034948: .4byte gBattlePartyID
-_0803494C: .4byte gActiveBank
-_08034950: .4byte gBattleBufferA
-_08034954: .4byte gBattleBankFunc
-_08034958: .4byte sub_80333D4
- thumb_func_end OpponentHandleSendOutPoke
-
- thumb_func_start sub_803495C
-sub_803495C: @ 803495C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl sub_8032AA8
- ldr r0, _08034AB8 @ =gBattlePartyID
- lsls r4, r6, 1
- adds r4, r0
- ldr r0, _08034ABC @ =gBattleBufferA
- lsls r1, r6, 9
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- strh r0, [r4]
- ldrh r0, [r4]
- movs r1, 0x64
- mov r9, r1
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- ldr r5, _08034AC0 @ =gEnemyParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- mov r8, r0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r0, _08034AC4 @ =sub_80312F0
- bl CreateInvisibleSpriteWithCallback
- ldr r1, _08034AC8 @ =gUnknown_0300434C
- mov r10, r1
- add r10, r6
- mov r1, r10
- strb r0, [r1]
- ldrh r0, [r4]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- adds r0, r5
- adds r1, r6, 0
- bl sub_8031794
- adds r0, r6, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r8
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08034ACC @ =gUnknown_02024E8C
- mov r9, r0
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_8077ABC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- bl sub_8077F68
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- mov r0, r9
- adds r1, r5, 0
- adds r2, r4, 0
- bl CreateSprite
- ldr r4, _08034AD0 @ =gObjectBankIDs
- adds r4, r6, r4
- strb r0, [r4]
- ldr r5, _08034AD4 @ =gSprites
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r6, [r0, 0x2E]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r8
- strh r1, [r0, 0x32]
- mov r0, r10
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r4]
- strh r1, [r0, 0x30]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r6, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08034AD8 @ =gBattleMonForms
- adds r6, r1
- ldrb r1, [r6]
- bl StartSpriteAnim
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08034ADC @ =SpriteCallbackDummy
- str r1, [r0]
- movs r0, 0
- movs r1, 0xFE
- bl sub_8046400
- mov r1, r10
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x2E]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08034AB8: .4byte gBattlePartyID
-_08034ABC: .4byte gBattleBufferA
-_08034AC0: .4byte gEnemyParty
-_08034AC4: .4byte sub_80312F0
-_08034AC8: .4byte gUnknown_0300434C
-_08034ACC: .4byte gUnknown_02024E8C
-_08034AD0: .4byte gObjectBankIDs
-_08034AD4: .4byte gSprites
-_08034AD8: .4byte gBattleMonForms
-_08034ADC: .4byte SpriteCallbackDummy
- thumb_func_end sub_803495C
-
- thumb_func_start OpponentHandleReturnPokeToBall
-OpponentHandleReturnPokeToBall: @ 8034AE0
- push {r4-r6,lr}
- ldr r1, _08034B10 @ =gBattleBufferA
- ldr r6, _08034B14 @ =gActiveBank
- ldrb r2, [r6]
- lsls r0, r2, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r3, [r0]
- cmp r3, 0
- bne _08034B24
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _08034B18 @ =0x02017810
- adds r0, r1
- strb r3, [r0, 0x4]
- ldr r1, _08034B1C @ =gBattleBankFunc
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08034B20 @ =sub_8034B74
- str r1, [r0]
- b _08034B60
- .align 2, 0
-_08034B10: .4byte gBattleBufferA
-_08034B14: .4byte gActiveBank
-_08034B18: .4byte 0x02017810
-_08034B1C: .4byte gBattleBankFunc
-_08034B20: .4byte sub_8034B74
-_08034B24:
- ldr r5, _08034B68 @ =gObjectBankIDs
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08034B6C @ =gSprites
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldrb r0, [r6]
- bl sub_8032A08
- ldr r1, _08034B70 @ =gHealthboxIDs
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl OpponentBufferExecCompleted
-_08034B60:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08034B68: .4byte gObjectBankIDs
-_08034B6C: .4byte gSprites
-_08034B70: .4byte gHealthboxIDs
- thumb_func_end OpponentHandleReturnPokeToBall
-
- thumb_func_start sub_8034B74
-sub_8034B74: @ 8034B74
- push {r4,r5,lr}
- ldr r5, _08034B90 @ =gActiveBank
- ldrb r2, [r5]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r4, _08034B94 @ =0x02017810
- adds r3, r0, r4
- ldrb r0, [r3, 0x4]
- cmp r0, 0
- beq _08034B98
- cmp r0, 0x1
- beq _08034BC4
- b _08034BEC
- .align 2, 0
-_08034B90: .4byte gActiveBank
-_08034B94: .4byte 0x02017810
-_08034B98:
- lsls r0, r2, 2
- adds r1, r4, 0
- subs r1, 0x10
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08034BB4
- adds r0, r2, 0
- adds r1, r2, 0
- movs r3, 0x5
- bl move_anim_start_t4
-_08034BB4:
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- movs r0, 0x1
- strb r0, [r1, 0x4]
- b _08034BEC
-_08034BC4:
- ldrb r1, [r3]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08034BEC
- strb r0, [r3, 0x4]
- ldrb r2, [r5]
- adds r0, r2, 0
- adds r1, r2, 0
- movs r3, 0x2
- bl move_anim_start_t4
- ldr r1, _08034BF4 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08034BF8 @ =sub_8033160
- str r1, [r0]
-_08034BEC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08034BF4: .4byte gBattleBankFunc
-_08034BF8: .4byte sub_8033160
- thumb_func_end sub_8034B74
-
- thumb_func_start OpponentHandleTrainerThrow
-OpponentHandleTrainerThrow: @ 8034BFC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- ldr r3, _08034C18 @ =gTrainerBattleOpponent
- ldrh r1, [r3]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08034C1C
- bl GetSecretBaseTrainerPicIndex
- b _08034C42
- .align 2, 0
-_08034C18: .4byte gTrainerBattleOpponent
-_08034C1C:
- ldr r0, _08034C30 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08034C34
- bl get_trainer_class_pic_index
- b _08034C42
- .align 2, 0
-_08034C30: .4byte gBattleTypeFlags
-_08034C34:
- movs r0, 0x80
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _08034C48
- bl sub_8135FBC
-_08034C42:
- lsls r0, 24
- lsrs r0, 24
- b _08034C56
-_08034C48:
- ldr r2, _08034D88 @ =gTrainers
- ldrh r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x3]
-_08034C56:
- mov r9, r0
- ldr r0, _08034D8C @ =gActiveBank
- mov r8, r0
- ldrb r1, [r0]
- mov r0, r9
- bl sub_8031A6C
- mov r1, r8
- ldrb r0, [r1]
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r9
- bl GetMonSpriteTemplate_803C5A0
- ldr r5, _08034D90 @ =gUnknown_02024E8C
- ldr r1, _08034D94 @ =gTrainerFrontPicCoords
- mov r2, r9
- lsls r0, r2, 2
- adds r0, r1
- ldrb r0, [r0]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r0, 0xA0
- lsls r0, 14
- adds r4, r0
- asrs r4, 16
- mov r1, r8
- ldrb r0, [r1]
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- movs r1, 0xB0
- adds r2, r4, 0
- bl CreateSprite
- ldr r5, _08034D98 @ =gObjectBankIDs
- mov r2, r8
- ldrb r1, [r2]
- adds r1, r5
- strb r0, [r1]
- ldr r4, _08034D9C @ =gSprites
- ldrb r0, [r2]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _08034DA0 @ =0x0000ff10
- strh r1, [r0, 0x24]
- ldrb r0, [r2]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x2
- strh r1, [r0, 0x2E]
- ldr r0, _08034DA4 @ =gTrainerFrontPicPaletteTable
- mov r1, r9
- lsls r6, r1, 3
- adds r0, r6, r0
- ldrh r0, [r0, 0x4]
- bl IndexOfSpritePaletteTag
- mov r2, r8
- ldrb r1, [r2]
- adds r1, r5
- ldrb r1, [r1]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r4
- lsls r0, 4
- ldrb r3, [r2, 0x5]
- movs r1, 0xF
- ands r1, r3
- orrs r1, r0
- strb r1, [r2, 0x5]
- mov r1, r8
- ldrb r0, [r1]
- adds r0, r5
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x4]
- lsls r0, 22
- lsrs r0, 22
- strh r0, [r1, 0x38]
- ldr r0, _08034DA8 @ =gTrainerFrontPicTable
- adds r6, r0
- ldrh r0, [r6, 0x6]
- bl GetSpriteTileStartByTag
- mov r2, r8
- ldrb r1, [r2]
- adds r1, r5
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldr r2, _08034DAC @ =0x000003ff
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _08034DB0 @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- mov r1, r8
- ldrb r0, [r1]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r2, r9
- strh r2, [r0, 0x6]
- mov r1, r8
- ldrb r0, [r1]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, _08034DB4 @ =sub_80313A0
- str r1, [r0]
- ldr r1, _08034DB8 @ =gBattleBankFunc
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08034DBC @ =sub_8032B4C
- str r1, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08034D88: .4byte gTrainers
-_08034D8C: .4byte gActiveBank
-_08034D90: .4byte gUnknown_02024E8C
-_08034D94: .4byte gTrainerFrontPicCoords
-_08034D98: .4byte gObjectBankIDs
-_08034D9C: .4byte gSprites
-_08034DA0: .4byte 0x0000ff10
-_08034DA4: .4byte gTrainerFrontPicPaletteTable
-_08034DA8: .4byte gTrainerFrontPicTable
-_08034DAC: .4byte 0x000003ff
-_08034DB0: .4byte 0xfffffc00
-_08034DB4: .4byte sub_80313A0
-_08034DB8: .4byte gBattleBankFunc
-_08034DBC: .4byte sub_8032B4C
- thumb_func_end OpponentHandleTrainerThrow
-
- thumb_func_start OpponentHandleTrainerSlide
-OpponentHandleTrainerSlide: @ 8034DC0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- ldr r3, _08034DDC @ =gTrainerBattleOpponent
- ldrh r1, [r3]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08034DE0
- bl GetSecretBaseTrainerPicIndex
- b _08034E06
- .align 2, 0
-_08034DDC: .4byte gTrainerBattleOpponent
-_08034DE0:
- ldr r0, _08034DF4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08034DF8
- bl get_trainer_class_pic_index
- b _08034E06
- .align 2, 0
-_08034DF4: .4byte gBattleTypeFlags
-_08034DF8:
- movs r0, 0x80
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _08034E0C
- bl sub_8135FBC
-_08034E06:
- lsls r0, 24
- lsrs r0, 24
- b _08034E1A
-_08034E0C:
- ldr r2, _08034F4C @ =gTrainers
- ldrh r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x3]
-_08034E1A:
- mov r9, r0
- ldr r0, _08034F50 @ =gActiveBank
- mov r8, r0
- ldrb r1, [r0]
- mov r0, r9
- bl sub_8031A6C
- mov r1, r8
- ldrb r0, [r1]
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r9
- bl GetMonSpriteTemplate_803C5A0
- ldr r0, _08034F54 @ =gUnknown_02024E8C
- ldr r2, _08034F58 @ =gTrainerFrontPicCoords
- mov r3, r9
- lsls r1, r3, 2
- adds r1, r2
- ldrb r1, [r1]
- movs r2, 0x8
- subs r2, r1
- lsls r2, 18
- movs r1, 0xA0
- lsls r1, 14
- adds r2, r1
- asrs r2, 16
- movs r1, 0xB0
- movs r3, 0x1E
- bl CreateSprite
- ldr r5, _08034F5C @ =gObjectBankIDs
- mov r2, r8
- ldrb r1, [r2]
- adds r1, r5
- strb r0, [r1]
- ldr r4, _08034F60 @ =gSprites
- ldrb r0, [r2]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x60
- strh r1, [r0, 0x24]
- ldrb r0, [r2]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x20]
- adds r1, 0x20
- strh r1, [r0, 0x20]
- ldrb r0, [r2]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _08034F64 @ =0x0000fffe
- strh r1, [r0, 0x2E]
- ldr r0, _08034F68 @ =gTrainerFrontPicPaletteTable
- mov r3, r9
- lsls r6, r3, 3
- adds r0, r6, r0
- ldrh r0, [r0, 0x4]
- bl IndexOfSpritePaletteTag
- mov r2, r8
- ldrb r1, [r2]
- adds r1, r5
- ldrb r1, [r1]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r4
- lsls r0, 4
- ldrb r3, [r2, 0x5]
- movs r1, 0xF
- ands r1, r3
- orrs r1, r0
- strb r1, [r2, 0x5]
- mov r3, r8
- ldrb r0, [r3]
- adds r0, r5
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x4]
- lsls r0, 22
- lsrs r0, 22
- strh r0, [r1, 0x38]
- ldr r0, _08034F6C @ =gTrainerFrontPicTable
- adds r6, r0
- ldrh r0, [r6, 0x6]
- bl GetSpriteTileStartByTag
- mov r2, r8
- ldrb r1, [r2]
- adds r1, r5
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldr r2, _08034F70 @ =0x000003ff
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _08034F74 @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r1, r9
- strh r1, [r0, 0x6]
- ldrb r0, [r3]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, _08034F78 @ =sub_80313A0
- str r1, [r0]
- ldr r1, _08034F7C @ =gBattleBankFunc
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08034F80 @ =sub_8032B84
- str r1, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08034F4C: .4byte gTrainers
-_08034F50: .4byte gActiveBank
-_08034F54: .4byte gUnknown_02024E8C
-_08034F58: .4byte gTrainerFrontPicCoords
-_08034F5C: .4byte gObjectBankIDs
-_08034F60: .4byte gSprites
-_08034F64: .4byte 0x0000fffe
-_08034F68: .4byte gTrainerFrontPicPaletteTable
-_08034F6C: .4byte gTrainerFrontPicTable
-_08034F70: .4byte 0x000003ff
-_08034F74: .4byte 0xfffffc00
-_08034F78: .4byte sub_80313A0
-_08034F7C: .4byte gBattleBankFunc
-_08034F80: .4byte sub_8032B84
- thumb_func_end OpponentHandleTrainerSlide
-
- thumb_func_start OpponentHandleTrainerSlideBack
-OpponentHandleTrainerSlideBack: @ 8034F84
- push {r4-r6,lr}
- ldr r6, _08035014 @ =gObjectBankIDs
- ldr r4, _08035018 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _0803501C @ =gSprites
- adds r0, r5
- bl oamt_add_pos2_onto_pos1
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x23
- strh r1, [r0, 0x2E]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x8C
- lsls r1, 1
- strh r1, [r0, 0x32]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0x36]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08035020 @ =sub_8078B34
- str r1, [r0]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08035024 @ =SpriteCallbackDummy
- bl oamt_set_x3A_32
- ldr r1, _08035028 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0803502C @ =sub_8032BBC
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08035014: .4byte gObjectBankIDs
-_08035018: .4byte gActiveBank
-_0803501C: .4byte gSprites
-_08035020: .4byte sub_8078B34
-_08035024: .4byte SpriteCallbackDummy
-_08035028: .4byte gBattleBankFunc
-_0803502C: .4byte sub_8032BBC
- thumb_func_end OpponentHandleTrainerSlideBack
-
- thumb_func_start sub_8035030
-sub_8035030: @ 8035030
- push {r4,r5,lr}
- ldr r5, _08035074 @ =gActiveBank
- ldrb r2, [r5]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r4, _08035078 @ =0x02017810
- adds r3, r0, r4
- ldrb r0, [r3, 0x4]
- cmp r0, 0
- bne _0803507C
- lsls r0, r2, 2
- adds r1, r4, 0
- subs r1, 0x10
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08035062
- adds r0, r2, 0
- adds r1, r2, 0
- movs r3, 0x5
- bl move_anim_start_t4
-_08035062:
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1, 0x4]
- adds r0, 0x1
- strb r0, [r1, 0x4]
- b _080350B8
- .align 2, 0
-_08035074: .4byte gActiveBank
-_08035078: .4byte 0x02017810
-_0803507C:
- ldrb r1, [r3]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080350B8
- strb r0, [r3, 0x4]
- movs r0, 0x10
- movs r1, 0x3F
- bl PlaySE12WithPanning
- ldr r2, _080350C0 @ =gSprites
- ldr r1, _080350C4 @ =gObjectBankIDs
- ldrb r0, [r5]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _080350C8 @ =sub_8010384
- str r1, [r0]
- ldr r1, _080350CC @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _080350D0 @ =sub_803311C
- str r1, [r0]
-_080350B8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080350C0: .4byte gSprites
-_080350C4: .4byte gObjectBankIDs
-_080350C8: .4byte sub_8010384
-_080350CC: .4byte gBattleBankFunc
-_080350D0: .4byte sub_803311C
- thumb_func_end sub_8035030
-
- thumb_func_start sub_80350D4
-sub_80350D4: @ 80350D4
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_80350D4
-
- thumb_func_start sub_80350E0
-sub_80350E0: @ 80350E0
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_80350E0
-
- thumb_func_start OpponentHandleBallThrow
-OpponentHandleBallThrow: @ 80350EC
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end OpponentHandleBallThrow
-
- thumb_func_start OpponentHandlePause
-OpponentHandlePause: @ 80350F8
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end OpponentHandlePause
-
- thumb_func_start OpponentHandleMoveAnimation
-OpponentHandleMoveAnimation: @ 8035104
- push {r4-r6,lr}
- ldr r6, _080351E8 @ =gActiveBank
- ldrb r0, [r6]
- bl mplay_80342A4
- lsls r0, 24
- cmp r0, 0
- beq _08035116
- b _08035226
-_08035116:
- ldr r0, _080351EC @ =gBattleBufferA
- mov r12, r0
- ldrb r2, [r6]
- lsls r2, 9
- adds r0, 0x1
- adds r0, r2, r0
- ldrb r0, [r0]
- mov r1, r12
- adds r1, 0x2
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- ldr r5, _080351F0 @ =gUnknown_0202F7C4
- mov r1, r12
- adds r1, 0x3
- adds r2, r1
- ldrb r1, [r2]
- strb r1, [r5]
- ldr r4, _080351F4 @ =gMovePowerMoveAnim
- ldrb r2, [r6]
- lsls r2, 9
- mov r1, r12
- adds r1, 0x4
- adds r1, r2, r1
- ldrb r3, [r1]
- mov r1, r12
- adds r1, 0x5
- adds r2, r1
- ldrb r1, [r2]
- lsls r1, 8
- orrs r3, r1
- strh r3, [r4]
- ldr r4, _080351F8 @ =gMoveDmgMoveAnim
- ldrb r2, [r6]
- lsls r2, 9
- mov r1, r12
- adds r1, 0x6
- adds r1, r2, r1
- ldrb r3, [r1]
- mov r1, r12
- adds r1, 0x7
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 8
- orrs r3, r1
- mov r1, r12
- adds r1, 0x8
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 16
- orrs r3, r1
- mov r1, r12
- adds r1, 0x9
- adds r2, r1
- ldrb r1, [r2]
- lsls r1, 24
- orrs r3, r1
- str r3, [r4]
- ldr r3, _080351FC @ =gHappinessMoveAnim
- ldrb r1, [r6]
- lsls r1, 9
- mov r2, r12
- adds r2, 0xA
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r3]
- ldr r4, _08035200 @ =gWeatherMoveAnim
- ldrb r2, [r6]
- lsls r2, 9
- mov r1, r12
- adds r1, 0xC
- adds r1, r2, r1
- ldrb r3, [r1]
- mov r1, r12
- adds r1, 0xD
- adds r2, r1
- ldrb r1, [r2]
- lsls r1, 8
- orrs r3, r1
- strh r3, [r4]
- ldr r3, _08035204 @ =gDisableStructMoveAnim
- ldrb r2, [r6]
- lsls r2, 9
- mov r1, r12
- adds r1, 0x10
- adds r2, r1
- str r2, [r3]
- ldr r3, _08035208 @ =gPID_perBank
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r3
- ldr r2, [r2]
- str r2, [r1]
- ldrb r1, [r5]
- bl sub_8031720
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0803520C
- bl OpponentBufferExecCompleted
- b _08035226
- .align 2, 0
-_080351E8: .4byte gActiveBank
-_080351EC: .4byte gBattleBufferA
-_080351F0: .4byte gUnknown_0202F7C4
-_080351F4: .4byte gMovePowerMoveAnim
-_080351F8: .4byte gMoveDmgMoveAnim
-_080351FC: .4byte gHappinessMoveAnim
-_08035200: .4byte gWeatherMoveAnim
-_08035204: .4byte gDisableStructMoveAnim
-_08035208: .4byte gPID_perBank
-_0803520C:
- ldrb r1, [r6]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0803522C @ =0x02017810
- adds r0, r1
- strb r2, [r0, 0x4]
- ldr r1, _08035230 @ =gBattleBankFunc
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08035234 @ =sub_8035238
- str r1, [r0]
-_08035226:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0803522C: .4byte 0x02017810
-_08035230: .4byte gBattleBankFunc
-_08035234: .4byte sub_8035238
- thumb_func_end OpponentHandleMoveAnimation
-
- thumb_func_start sub_8035238
-sub_8035238: @ 8035238
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r2, _0803527C @ =gBattleBufferA
- ldr r5, _08035280 @ =gActiveBank
- ldrb r3, [r5]
- lsls r1, r3, 9
- adds r0, r2, 0x1
- mov r9, r0
- adds r0, r1, r0
- ldrb r4, [r0]
- adds r6, r2, 0x2
- mov r8, r6
- adds r0, r1, r6
- ldrb r0, [r0]
- lsls r0, 8
- orrs r4, r0
- adds r2, 0xB
- adds r1, r2
- ldrb r7, [r1]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- ldr r6, _08035284 @ =0x02017810
- adds r0, r6
- ldrb r2, [r0, 0x4]
- cmp r2, 0x1
- beq _080352C6
- cmp r2, 0x1
- bgt _08035288
- cmp r2, 0
- beq _08035292
- b _08035390
- .align 2, 0
-_0803527C: .4byte gBattleBufferA
-_08035280: .4byte gActiveBank
-_08035284: .4byte 0x02017810
-_08035288:
- cmp r2, 0x2
- beq _080352EC
- cmp r2, 0x3
- beq _08035358
- b _08035390
-_08035292:
- lsls r1, r3, 2
- adds r0, r6, 0
- subs r0, 0x10
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0xC
- ands r0, r2
- cmp r0, 0x4
- bne _080352B6
- movs r0, 0x8
- orrs r0, r2
- strb r0, [r1]
- ldrb r2, [r5]
- adds r0, r2, 0
- adds r1, r2, 0
- movs r3, 0x5
- bl move_anim_start_t4
-_080352B6:
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- movs r0, 0x1
- strb r0, [r1, 0x4]
- b _08035390
-_080352C6:
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _08035390
- movs r0, 0
- bl sub_80326EC
- adds r0, r4, 0
- bl ExecuteMoveAnim
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- movs r0, 0x2
- strb r0, [r1, 0x4]
- b _08035390
-_080352EC:
- ldr r0, _08035348 @ =gAnimScriptCallback
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _0803534C @ =gAnimScriptActive
- ldrb r0, [r0]
- cmp r0, 0
- bne _08035390
- movs r0, 0x1
- bl sub_80326EC
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r4, r6, 0
- subs r4, 0x10
- adds r0, r4
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08035334
- cmp r7, 0x1
- bhi _08035334
- adds r0, r2, 0
- adds r1, r2, 0
- movs r3, 0x6
- bl move_anim_start_t4
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r4
- ldrb r2, [r0]
- movs r1, 0x9
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_08035334:
- ldr r0, _08035350 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08035354 @ =0x02017810
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0, 0x4]
- b _08035390
- .align 2, 0
-_08035348: .4byte gAnimScriptCallback
-_0803534C: .4byte gAnimScriptActive
-_08035350: .4byte gActiveBank
-_08035354: .4byte 0x02017810
-_08035358:
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08035390
- bl sub_8031F24
- ldrb r0, [r5]
- lsls r2, r0, 9
- mov r3, r9
- adds r1, r2, r3
- ldrb r1, [r1]
- add r2, r8
- ldrb r2, [r2]
- lsls r2, 8
- orrs r1, r2
- bl sub_80324BC
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strb r4, [r0, 0x4]
- bl OpponentBufferExecCompleted
-_08035390:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8035238
-
- thumb_func_start OpponentHandlePrintString
-OpponentHandlePrintString: @ 803539C
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080353E0 @ =gUnknown_030042A4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080353E4 @ =gUnknown_030042A0
- strh r1, [r0]
- ldr r4, _080353E8 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 9
- ldr r1, _080353EC @ =gUnknown_02023A62
- adds r0, r1
- ldrh r0, [r0]
- bl BufferStringBattle
- ldr r0, _080353F0 @ =gUnknown_03004210
- ldr r1, _080353F4 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _080353F8 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _080353FC @ =sub_80331D0
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080353E0: .4byte gUnknown_030042A4
-_080353E4: .4byte gUnknown_030042A0
-_080353E8: .4byte gActiveBank
-_080353EC: .4byte gUnknown_02023A62
-_080353F0: .4byte gUnknown_03004210
-_080353F4: .4byte gDisplayedStringBattle
-_080353F8: .4byte gBattleBankFunc
-_080353FC: .4byte sub_80331D0
- thumb_func_end OpponentHandlePrintString
-
- thumb_func_start OpponentHandlePrintStringPlayerOnly
-OpponentHandlePrintStringPlayerOnly: @ 8035400
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end OpponentHandlePrintStringPlayerOnly
-
- thumb_func_start sub_803540C
-sub_803540C: @ 803540C
- push {lr}
- bl sub_8036B0C
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_803540C
-
- thumb_func_start sub_803541C
-sub_803541C: @ 803541C
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_803541C
-
- thumb_func_start sub_8035428
-sub_8035428: @ 8035428
- push {r4-r6,lr}
- ldr r6, _0803545C @ =gActiveBank
- ldrb r0, [r6]
- lsls r0, 9
- ldr r1, _08035460 @ =gUnknown_02023A64
- adds r5, r0, r1
- ldr r0, _08035464 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x93
- lsls r0, 3
- ands r0, r1
- cmp r0, 0
- beq _080354F8
- bl BattleAI_SetupAIData
- bl BattleAI_GetAIActionToUse
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- beq _08035468
- cmp r4, 0x5
- bne _08035474
- movs r0, 0x1
- movs r1, 0x4
- b _0803546C
- .align 2, 0
-_0803545C: .4byte gActiveBank
-_08035460: .4byte gUnknown_02023A64
-_08035464: .4byte gBattleTypeFlags
-_08035468:
- movs r0, 0x1
- movs r1, 0x3
-_0803546C:
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- b _080354E0
-_08035474:
- ldr r3, _080354E8 @ =gBattleMoves
- lsls r0, r4, 1
- adds r2, r5, r0
- ldrh r1, [r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x6]
- movs r0, 0x12
- ands r0, r1
- cmp r0, 0
- beq _08035494
- ldr r1, _080354EC @ =gBankTarget
- ldrb r0, [r6]
- strb r0, [r1]
-_08035494:
- ldrh r1, [r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r1, [r0, 0x6]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080354CE
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r5, _080354EC @ =gBankTarget
- strb r0, [r5]
- ldr r0, _080354F0 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _080354F4 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _080354CE
- movs r0, 0x2
- bl GetBankByPlayerAI
- strb r0, [r5]
-_080354CE:
- ldr r0, _080354EC @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 8
- orrs r4, r0
- movs r0, 0x1
- movs r1, 0xA
- adds r2, r4, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_080354E0:
- bl OpponentBufferExecCompleted
- b _0803558A
- .align 2, 0
-_080354E8: .4byte gBattleMoves
-_080354EC: .4byte gBankTarget
-_080354F0: .4byte gAbsentBankFlags
-_080354F4: .4byte gBitTable
-_080354F8:
- movs r6, 0x3
-_080354FA:
- bl Random
- adds r4, r0, 0
- ands r4, r6
- lsls r0, r4, 1
- adds r0, r5, r0
- ldrh r2, [r0]
- cmp r2, 0
- beq _080354FA
- ldr r1, _08035534 @ =gBattleMoves
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x6]
- movs r0, 0x12
- ands r0, r1
- cmp r0, 0
- beq _0803553C
- ldr r0, _08035538 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 8
- orrs r4, r0
- movs r0, 0x1
- movs r1, 0xA
- adds r2, r4, 0
- bl dp01_build_cmdbuf_x21_a_bb
- b _08035586
- .align 2, 0
-_08035534: .4byte gBattleMoves
-_08035538: .4byte gActiveBank
-_0803553C:
- ldr r0, _0803556C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08035570
- bl Random
- movs r1, 0x2
- ands r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r1, 0
- bl GetBankByPlayerAI
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 16
- orrs r2, r4
- movs r0, 0x1
- movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
- b _08035586
- .align 2, 0
-_0803556C: .4byte gBattleTypeFlags
-_08035570:
- movs r0, 0
- bl GetBankByPlayerAI
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 16
- orrs r2, r4
- movs r0, 0x1
- movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
-_08035586:
- bl OpponentBufferExecCompleted
-_0803558A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8035428
-
- thumb_func_start sub_8035590
-sub_8035590: @ 8035590
- push {lr}
- ldr r1, _080355B4 @ =0x02000000
- ldr r0, _080355B8 @ =gActiveBank
- ldrb r0, [r0]
- lsrs r0, 1
- lsls r0, 1
- ldr r2, _080355BC @ =0x000160d4
- adds r0, r2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- bl dp01_build_cmdbuf_x23_aa_0
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_080355B4: .4byte 0x02000000
-_080355B8: .4byte gActiveBank
-_080355BC: .4byte 0x000160d4
- thumb_func_end sub_8035590
-
- thumb_func_start sub_80355C0
-sub_80355C0: @ 80355C0
- push {r4-r6,lr}
- ldr r6, _08035604 @ =0x02000000
- ldr r5, _08035608 @ =gActiveBank
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 25
- ldr r1, _0803560C @ =0x000160c8
- adds r0, r1
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _08035664
- bl sub_8036CD4
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bne _0803568A
- ldr r0, _08035610 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08035614
- movs r0, 0x1
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- b _08035628
- .align 2, 0
-_08035604: .4byte 0x02000000
-_08035608: .4byte gActiveBank
-_0803560C: .4byte 0x000160c8
-_08035610: .4byte gBattleTypeFlags
-_08035614:
- movs r0, 0x1
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0x3
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r5, r0, 24
-_08035628:
- movs r4, 0
- b _0803562E
-_0803562C:
- adds r4, 0x1
-_0803562E:
- cmp r4, 0x5
- bgt _0803568A
- movs r0, 0x64
- muls r0, r4
- ldr r1, _0803565C @ =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0803562C
- ldr r1, _08035660 @ =gBattlePartyID
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- beq _0803562C
- lsls r0, r5, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- beq _0803562C
- b _0803568A
- .align 2, 0
-_0803565C: .4byte gEnemyParty
-_08035660: .4byte gBattlePartyID
-_08035664:
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 25
- ldr r2, _080356B0 @ =0x000160c8
- adds r0, r2
- adds r0, r6
- ldrb r4, [r0]
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 25
- ldr r1, _080356B0 @ =0x000160c8
- adds r0, r1
- adds r0, r6
- movs r1, 0x6
- strb r1, [r0]
-_0803568A:
- ldr r1, _080356B4 @ =0x02000000
- ldr r0, _080356B8 @ =gActiveBank
- ldrb r0, [r0]
- ldr r2, _080356BC @ =0x00016068
- adds r0, r2
- adds r0, r1
- strb r4, [r0]
- lsls r1, r4, 24
- lsrs r1, 24
- movs r0, 0x1
- movs r2, 0
- bl dp01_build_cmdbuf_x22_a_three_bytes
- bl OpponentBufferExecCompleted
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080356B0: .4byte 0x000160c8
-_080356B4: .4byte 0x02000000
-_080356B8: .4byte gActiveBank
-_080356BC: .4byte 0x00016068
- thumb_func_end sub_80355C0
-
- thumb_func_start sub_80356C0
-sub_80356C0: @ 80356C0
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_80356C0
-
- thumb_func_start OpponentHandleHealthBarUpdate
-OpponentHandleHealthBarUpdate: @ 80356CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- movs r0, 0
- bl load_gfxc_health_bar
- ldr r3, _08035744 @ =gBattleBufferA
- ldr r0, _08035748 @ =gActiveBank
- mov r9, r0
- ldrb r4, [r0]
- lsls r2, r4, 9
- adds r0, r3, 0x3
- adds r0, r2, r0
- ldrb r1, [r0]
- lsls r1, 8
- adds r3, 0x2
- adds r2, r3
- ldrb r0, [r2]
- orrs r0, r1
- lsls r0, 16
- asrs r7, r0, 16
- ldr r0, _0803574C @ =0x00007fff
- cmp r7, r0
- beq _0803575C
- ldr r6, _08035750 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r6
- ldrh r0, [r0]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _08035754 @ =gEnemyParty
- adds r0, r4
- movs r1, 0x3A
- bl GetMonData
- mov r8, r0
- mov r1, r9
- ldrb r0, [r1]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r4
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- mov r1, r9
- ldrb r0, [r1]
- ldr r1, _08035758 @ =gHealthboxIDs
- adds r1, r0, r1
- ldrb r1, [r1]
- str r7, [sp]
- mov r2, r8
- bl sub_8043D84
- b _08035786
- .align 2, 0
-_08035744: .4byte gBattleBufferA
-_08035748: .4byte gActiveBank
-_0803574C: .4byte 0x00007fff
-_08035750: .4byte gBattlePartyID
-_08035754: .4byte gEnemyParty
-_08035758: .4byte gHealthboxIDs
-_0803575C:
- ldr r1, _080357A4 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080357A8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x3A
- bl GetMonData
- adds r2, r0, 0
- mov r1, r9
- ldrb r0, [r1]
- ldr r1, _080357AC @ =gHealthboxIDs
- adds r1, r0, r1
- ldrb r1, [r1]
- str r7, [sp]
- movs r3, 0
- bl sub_8043D84
-_08035786:
- ldr r1, _080357B0 @ =gBattleBankFunc
- ldr r0, _080357B4 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _080357B8 @ =sub_80330C8
- str r1, [r0]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080357A4: .4byte gBattlePartyID
-_080357A8: .4byte gEnemyParty
-_080357AC: .4byte gHealthboxIDs
-_080357B0: .4byte gBattleBankFunc
-_080357B4: .4byte gActiveBank
-_080357B8: .4byte sub_80330C8
- thumb_func_end OpponentHandleHealthBarUpdate
-
- thumb_func_start OpponentHandleExpBarUpdate
-OpponentHandleExpBarUpdate: @ 80357BC
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end OpponentHandleExpBarUpdate
-
- thumb_func_start OpponentHandleStatusIconUpdate
-OpponentHandleStatusIconUpdate: @ 80357C8
- push {r4,lr}
- ldr r4, _08035820 @ =gActiveBank
- ldrb r0, [r4]
- bl mplay_80342A4
- lsls r0, 24
- cmp r0, 0
- bne _08035818
- ldr r0, _08035824 @ =gHealthboxIDs
- ldrb r1, [r4]
- adds r0, r1, r0
- ldrb r0, [r0]
- ldr r2, _08035828 @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0803582C @ =gEnemyParty
- adds r1, r2
- movs r2, 0x9
- bl sub_8045A5C
- ldrb r0, [r4]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r0, _08035830 @ =0x02017810
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, _08035834 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08035838 @ =sub_8033494
- str r1, [r0]
-_08035818:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08035820: .4byte gActiveBank
-_08035824: .4byte gHealthboxIDs
-_08035828: .4byte gBattlePartyID
-_0803582C: .4byte gEnemyParty
-_08035830: .4byte 0x02017810
-_08035834: .4byte gBattleBankFunc
-_08035838: .4byte sub_8033494
- thumb_func_end OpponentHandleStatusIconUpdate
-
- thumb_func_start OpponentHandleStatusAnimation
-OpponentHandleStatusAnimation: @ 803583C
- push {r4,r5,lr}
- ldr r5, _08035894 @ =gActiveBank
- ldrb r0, [r5]
- bl mplay_80342A4
- lsls r0, 24
- cmp r0, 0
- bne _0803588C
- ldr r4, _08035898 @ =gBattleBufferA
- ldrb r3, [r5]
- lsls r3, 9
- adds r0, r4, 0x1
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r1, r4, 0x2
- adds r1, r3, r1
- ldrb r1, [r1]
- adds r2, r4, 0x3
- adds r2, r3, r2
- ldrb r2, [r2]
- lsls r2, 8
- orrs r1, r2
- adds r2, r4, 0x4
- adds r2, r3, r2
- ldrb r2, [r2]
- lsls r2, 16
- orrs r1, r2
- adds r4, 0x5
- adds r3, r4
- ldrb r2, [r3]
- lsls r2, 24
- orrs r1, r2
- bl move_anim_start_t2_for_situation
- ldr r1, _0803589C @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _080358A0 @ =sub_8033494
- str r1, [r0]
-_0803588C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08035894: .4byte gActiveBank
-_08035898: .4byte gBattleBufferA
-_0803589C: .4byte gBattleBankFunc
-_080358A0: .4byte sub_8033494
- thumb_func_end OpponentHandleStatusAnimation
-
- thumb_func_start OpponentHandleStatusXor
-OpponentHandleStatusXor: @ 80358A4
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end OpponentHandleStatusXor
-
- thumb_func_start sub_80358B0
-sub_80358B0: @ 80358B0
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_80358B0
-
- thumb_func_start OpponentHandleDMATransfer
-OpponentHandleDMATransfer: @ 80358BC
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end OpponentHandleDMATransfer
-
- thumb_func_start sub_80358C8
-sub_80358C8: @ 80358C8
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_80358C8
-
- thumb_func_start sub_80358D4
-sub_80358D4: @ 80358D4
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_80358D4
-
- thumb_func_start sub_80358E0
-sub_80358E0: @ 80358E0
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_80358E0
-
- thumb_func_start sub_80358EC
-sub_80358EC: @ 80358EC
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_80358EC
-
- thumb_func_start sub_80358F8
-sub_80358F8: @ 80358F8
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_80358F8
-
- thumb_func_start sub_8035904
-sub_8035904: @ 8035904
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8035904
-
- thumb_func_start sub_8035910
-sub_8035910: @ 8035910
- push {lr}
- ldr r2, _08035928 @ =gUnknown_020238C8
- ldrb r1, [r2]
- movs r0, 0x80
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08035928: .4byte gUnknown_020238C8
- thumb_func_end sub_8035910
-
- thumb_func_start sub_803592C
-sub_803592C: @ 803592C
- push {lr}
- ldr r3, _08035958 @ =gUnknown_020238C8
- ldr r1, _0803595C @ =gBattleBufferA
- ldr r0, _08035960 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0x7F
- ands r1, r0
- ldrb r2, [r3]
- movs r0, 0x80
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08035958: .4byte gUnknown_020238C8
-_0803595C: .4byte gBattleBufferA
-_08035960: .4byte gActiveBank
- thumb_func_end sub_803592C
-
- thumb_func_start sub_8035964
-sub_8035964: @ 8035964
- push {lr}
- ldr r2, _08035978 @ =gUnknown_020238C8
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08035978: .4byte gUnknown_020238C8
- thumb_func_end sub_8035964
-
- thumb_func_start sub_803597C
-sub_803597C: @ 803597C
- push {lr}
- ldr r3, _080359A0 @ =gUnknown_020238C8
- ldr r1, [r3]
- lsls r1, 24
- lsrs r1, 31
- movs r0, 0x1
- eors r1, r0
- lsls r1, 7
- ldrb r2, [r3]
- movs r0, 0x7F
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_080359A0: .4byte gUnknown_020238C8
- thumb_func_end sub_803597C
-
- thumb_func_start OpponentHandleHitAnimation
-OpponentHandleHitAnimation: @ 80359A4
- push {r4,lr}
- ldr r3, _080359CC @ =gSprites
- ldr r2, _080359D0 @ =gObjectBankIDs
- ldr r4, _080359D4 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _080359D8
- bl OpponentBufferExecCompleted
- b _08035A02
- .align 2, 0
-_080359CC: .4byte gSprites
-_080359D0: .4byte gObjectBankIDs
-_080359D4: .4byte gActiveBank
-_080359D8:
- ldr r1, _08035A08 @ =gDoingBattleAnim
- movs r0, 0x1
- strb r0, [r1]
- 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
- strh r1, [r0, 0x30]
- ldrb r0, [r4]
- bl sub_8047858
- ldr r1, _08035A0C @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08035A10 @ =bx_blink_t7
- str r1, [r0]
-_08035A02:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08035A08: .4byte gDoingBattleAnim
-_08035A0C: .4byte gBattleBankFunc
-_08035A10: .4byte bx_blink_t7
- thumb_func_end OpponentHandleHitAnimation
-
- thumb_func_start sub_8035A14
-sub_8035A14: @ 8035A14
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8035A14
-
- thumb_func_start OpponentHandleEffectivenessSound
-OpponentHandleEffectivenessSound: @ 8035A20
- push {r4,lr}
- ldr r4, _08035A5C @ =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- movs r3, 0x3F
- cmp r0, 0
- bne _08035A34
- movs r3, 0xC0
-_08035A34:
- ldr r2, _08035A60 @ =gBattleBufferA
- ldrb r1, [r4]
- lsls r1, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- lsls r1, r3, 24
- asrs r1, 24
- bl PlaySE12WithPanning
- bl OpponentBufferExecCompleted
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08035A5C: .4byte gActiveBank
-_08035A60: .4byte gBattleBufferA
- thumb_func_end OpponentHandleEffectivenessSound
-
- thumb_func_start sub_8035A64
-sub_8035A64: @ 8035A64
- push {lr}
- ldr r2, _08035A8C @ =gBattleBufferA
- ldr r0, _08035A90 @ =gActiveBank
- ldrb r1, [r0]
- lsls r1, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- bl PlayFanfare
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08035A8C: .4byte gBattleBufferA
-_08035A90: .4byte gActiveBank
- thumb_func_end sub_8035A64
-
- thumb_func_start OpponentHandleFaintingCry
-OpponentHandleFaintingCry: @ 8035A94
- push {lr}
- ldr r1, _08035AC4 @ =gBattlePartyID
- ldr r0, _08035AC8 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08035ACC @ =gEnemyParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x19
- movs r2, 0x5
- bl PlayCry3
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08035AC4: .4byte gBattlePartyID
-_08035AC8: .4byte gActiveBank
-_08035ACC: .4byte gEnemyParty
- thumb_func_end OpponentHandleFaintingCry
-
- thumb_func_start dp01t_2E_7_battle_intro
-dp01t_2E_7_battle_intro: @ 8035AD0
- push {lr}
- ldr r1, _08035AF8 @ =gBattleBufferA
- ldr r0, _08035AFC @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- bl sub_80E43C0
- ldr r2, _08035B00 @ =gUnknown_02024DE8
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08035AF8: .4byte gBattleBufferA
-_08035AFC: .4byte gActiveBank
-_08035B00: .4byte gUnknown_02024DE8
- thumb_func_end dp01t_2E_7_battle_intro
-
- thumb_func_start sub_8035B04
-sub_8035B04: @ 8035B04
- push {r4-r6,lr}
- ldr r5, _08035BE0 @ =gObjectBankIDs
- ldr r6, _08035BE4 @ =gActiveBank
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08035BE8 @ =gSprites
- adds r0, r4
- bl oamt_add_pos2_onto_pos1
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x23
- strh r1, [r0, 0x2E]
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x8C
- lsls r1, 1
- strh r1, [r0, 0x32]
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0x36]
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08035BEC @ =sub_8078B34
- str r1, [r0]
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _08035BF0 @ =sub_8035C10
- bl oamt_set_x3A_32
- ldr r0, _08035BF4 @ =sub_8035C44
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _08035BF8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- ldrb r0, [r6]
- strh r0, [r1, 0x8]
- ldrb r3, [r6]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- ldr r2, _08035BFC @ =0x02017810
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08035BC2
- ldr r0, _08035C00 @ =gUnknown_02024E68
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- ldr r1, _08035C04 @ =sub_8044CA0
- str r1, [r0]
-_08035BC2:
- adds r2, 0x30
- ldrb r0, [r2, 0x9]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x9]
- ldr r1, _08035C08 @ =gBattleBankFunc
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08035C0C @ =nullsub_45
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08035BE0: .4byte gObjectBankIDs
-_08035BE4: .4byte gActiveBank
-_08035BE8: .4byte gSprites
-_08035BEC: .4byte sub_8078B34
-_08035BF0: .4byte sub_8035C10
-_08035BF4: .4byte sub_8035C44
-_08035BF8: .4byte gTasks
-_08035BFC: .4byte 0x02017810
-_08035C00: .4byte gUnknown_02024E68
-_08035C04: .4byte sub_8044CA0
-_08035C08: .4byte gBattleBankFunc
-_08035C0C: .4byte nullsub_45
- thumb_func_end sub_8035B04
-
- thumb_func_start sub_8035C10
-sub_8035C10: @ 8035C10
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x6]
- bl sub_8031B74
- ldrh r0, [r4, 0x38]
- ldr r1, _08035C3C @ =0x000003ff
- ands r1, r0
- ldrh r2, [r4, 0x4]
- ldr r0, _08035C40 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08035C3C: .4byte 0x000003ff
-_08035C40: .4byte 0xfffffc00
- thumb_func_end sub_8035C10
-
- thumb_func_start sub_8035C44
-sub_8035C44: @ 8035C44
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r7, _08035C9C @ =gActiveBank
- ldrb r0, [r7]
- mov r9, r0
- ldr r1, _08035CA0 @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x8]
- strb r0, [r7]
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _08035C7E
- ldr r0, _08035CA4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08035CB0
-_08035C7E:
- ldr r0, _08035CA8 @ =gBattleBufferA
- ldrb r1, [r7]
- lsls r2, r1, 9
- adds r0, 0x1
- adds r2, r0
- ldr r0, _08035CAC @ =gBattlePartyID
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
- strb r0, [r2]
- ldrb r0, [r7]
- movs r1, 0
- bl sub_803495C
- b _08035CF0
- .align 2, 0
-_08035C9C: .4byte gActiveBank
-_08035CA0: .4byte gTasks
-_08035CA4: .4byte gBattleTypeFlags
-_08035CA8: .4byte gBattleBufferA
-_08035CAC: .4byte gBattlePartyID
-_08035CB0:
- ldr r4, _08035D14 @ =gBattleBufferA
- ldrb r0, [r7]
- lsls r1, r0, 9
- adds r4, 0x1
- adds r1, r4
- ldr r6, _08035D18 @ =gBattlePartyID
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- movs r1, 0
- bl sub_803495C
- ldrb r0, [r7]
- movs r5, 0x2
- eors r0, r5
- strb r0, [r7]
- ldrb r0, [r7]
- lsls r1, r0, 9
- adds r1, r4
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- movs r1, 0
- bl sub_803495C
- ldrb r0, [r7]
- eors r0, r5
- strb r0, [r7]
-_08035CF0:
- ldr r1, _08035D1C @ =gBattleBankFunc
- ldr r2, _08035D20 @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08035D24 @ =sub_8032E2C
- str r1, [r0]
- mov r0, r9
- strb r0, [r2]
- mov r0, r8
- bl DestroyTask
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08035D14: .4byte gBattleBufferA
-_08035D18: .4byte gBattlePartyID
-_08035D1C: .4byte gBattleBankFunc
-_08035D20: .4byte gActiveBank
-_08035D24: .4byte sub_8032E2C
- thumb_func_end sub_8035C44
-
- thumb_func_start dp01t_30_7_0803D67C
-dp01t_30_7_0803D67C: @ 8035D28
- push {r4-r6,lr}
- ldr r1, _08035D50 @ =gBattleBufferA
- ldr r0, _08035D54 @ =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08035D58
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08035D58
- bl OpponentBufferExecCompleted
- b _08035E12
- .align 2, 0
-_08035D50: .4byte gBattleBufferA
-_08035D54: .4byte gActiveBank
-_08035D58:
- ldr r3, _08035DA8 @ =gActiveBank
- ldrb r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r4, _08035DAC @ =0x02017810
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- ldr r1, _08035DB0 @ =gBattleBufferA
- ldrb r2, [r3]
- lsls r0, r2, 9
- adds r1, 0x2
- adds r0, r1
- ldrb r0, [r0]
- adds r6, r3, 0
- cmp r0, 0
- beq _08035DBC
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r4
- ldrb r2, [r3, 0x1]
- lsls r1, r2, 26
- lsrs r0, r1, 27
- cmp r0, 0x1
- bhi _08035DB4
- adds r0, 0x1
- movs r1, 0x1F
- ands r0, r1
- lsls r0, 1
- movs r1, 0x3F
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x1]
- b _08035E12
- .align 2, 0
-_08035DA8: .4byte gActiveBank
-_08035DAC: .4byte 0x02017810
-_08035DB0: .4byte gBattleBufferA
-_08035DB4:
- movs r0, 0x3F
- negs r0, r0
- ands r0, r2
- strb r0, [r3, 0x1]
-_08035DBC:
- adds r5, r6, 0
- ldrb r0, [r5]
- lsls r3, r0, 9
- ldr r4, _08035E18 @ =gUnknown_02023A64
- adds r1, r3, r4
- subs r2, r4, 0x3
- adds r2, r3, r2
- ldrb r2, [r2]
- subs r4, 0x2
- adds r3, r4
- ldrb r3, [r3]
- bl sub_8044804
- ldr r2, _08035E1C @ =gUnknown_02024E68
- ldrb r1, [r5]
- adds r1, r2
- movs r2, 0
- strb r0, [r1]
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r3, _08035E20 @ =0x02017810
- adds r0, r3
- strb r2, [r0, 0x5]
- ldrb r1, [r5]
- lsls r0, r1, 9
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _08035E06
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x5D
- strb r1, [r0, 0x5]
-_08035E06:
- ldr r0, _08035E24 @ =gBattleBankFunc
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r0
- ldr r0, _08035E28 @ =sub_8035E2C
- str r0, [r1]
-_08035E12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08035E18: .4byte gUnknown_02023A64
-_08035E1C: .4byte gUnknown_02024E68
-_08035E20: .4byte 0x02017810
-_08035E24: .4byte gBattleBankFunc
-_08035E28: .4byte sub_8035E2C
- thumb_func_end dp01t_30_7_0803D67C
-
- thumb_func_start sub_8035E2C
-sub_8035E2C: @ 8035E2C
- push {r4,lr}
- ldr r4, _08035E64 @ =gActiveBank
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r3, _08035E68 @ =0x02017810
- adds r0, r3
- ldrb r1, [r0, 0x5]
- adds r2, r1, 0x1
- strb r2, [r0, 0x5]
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x5C
- bls _08035E5C
- ldrb r0, [r4]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- movs r0, 0
- strb r0, [r1, 0x5]
- bl OpponentBufferExecCompleted
-_08035E5C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08035E64: .4byte gActiveBank
-_08035E68: .4byte 0x02017810
- thumb_func_end sub_8035E2C
-
- thumb_func_start sub_8035E6C
-sub_8035E6C: @ 8035E6C
- push {lr}
- ldr r0, _08035EA4 @ =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- ldr r1, _08035EA8 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08035E9A
- ldr r2, _08035EAC @ =gTasks
- ldr r0, _08035EB0 @ =gUnknown_02024E68
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldr r1, _08035EB4 @ =sub_8044CA0
- str r1, [r0]
-_08035E9A:
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08035EA4: .4byte gActiveBank
-_08035EA8: .4byte 0x02017810
-_08035EAC: .4byte gTasks
-_08035EB0: .4byte gUnknown_02024E68
-_08035EB4: .4byte sub_8044CA0
- thumb_func_end sub_8035E6C
-
- thumb_func_start sub_8035EB8
-sub_8035EB8: @ 8035EB8
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8035EB8
-
- thumb_func_start OpponentHandleSpriteInvisibility
-OpponentHandleSpriteInvisibility: @ 8035EC4
- push {r4,lr}
- ldr r4, _08035F14 @ =gActiveBank
- ldrb r0, [r4]
- bl sub_8078874
- lsls r0, 24
- cmp r0, 0
- beq _08035F0A
- ldr r3, _08035F18 @ =gSprites
- ldr r0, _08035F1C @ =gObjectBankIDs
- ldrb r1, [r4]
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldr r0, _08035F20 @ =gBattleBufferA
- lsls r1, 9
- adds r0, 0x1
- adds r1, r0
- adds r2, 0x3E
- movs r0, 0x1
- ldrb r1, [r1]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- bl sub_8031F88
-_08035F0A:
- bl OpponentBufferExecCompleted
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08035F14: .4byte gActiveBank
-_08035F18: .4byte gSprites
-_08035F1C: .4byte gObjectBankIDs
-_08035F20: .4byte gBattleBufferA
- thumb_func_end OpponentHandleSpriteInvisibility
-
- thumb_func_start OpponentHandleBattleAnimation
-OpponentHandleBattleAnimation: @ 8035F24
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, _08035F68 @ =gActiveBank
- ldrb r0, [r6]
- bl mplay_80342A4
- lsls r0, 24
- cmp r0, 0
- bne _08035F7C
- ldr r5, _08035F6C @ =gBattleBufferA
- ldrb r2, [r6]
- lsls r1, r2, 9
- adds r0, r5, 0x1
- adds r0, r1, r0
- ldrb r3, [r0]
- adds r0, r5, 0x2
- adds r0, r1, r0
- ldrb r4, [r0]
- adds r5, 0x3
- adds r1, r5
- ldrb r0, [r1]
- lsls r0, 8
- orrs r4, r0
- str r4, [sp]
- adds r0, r2, 0
- adds r1, r2, 0
- bl move_anim_start_t3
- lsls r0, 24
- cmp r0, 0
- beq _08035F70
- bl OpponentBufferExecCompleted
- b _08035F7C
- .align 2, 0
-_08035F68: .4byte gActiveBank
-_08035F6C: .4byte gBattleBufferA
-_08035F70:
- ldr r0, _08035F84 @ =gBattleBankFunc
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r0
- ldr r0, _08035F88 @ =sub_80334C0
- str r0, [r1]
-_08035F7C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08035F84: .4byte gBattleBankFunc
-_08035F88: .4byte sub_80334C0
- thumb_func_end OpponentHandleBattleAnimation
-
- thumb_func_start OpponentHandleLinkStandbyMsg
-OpponentHandleLinkStandbyMsg: @ 8035F8C
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end OpponentHandleLinkStandbyMsg
-
- thumb_func_start OpponentHandleResetActionMoveSelection
-OpponentHandleResetActionMoveSelection: @ 8035F98
- push {lr}
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end OpponentHandleResetActionMoveSelection
-
- thumb_func_start sub_8035FA4
-sub_8035FA4: @ 8035FA4
- push {lr}
- ldr r0, _08035FD8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0x2
- bne _08035FCE
- ldr r2, _08035FDC @ =gMain
- ldr r0, _08035FE0 @ =0x0000043d
- adds r3, r2, r0
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldr r0, _08035FE4 @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r2, 0x8]
- bl SetMainCallback2
-_08035FCE:
- bl OpponentBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08035FD8: .4byte gBattleTypeFlags
-_08035FDC: .4byte gMain
-_08035FE0: .4byte 0x0000043d
-_08035FE4: .4byte gPreBattleCallback1
- thumb_func_end sub_8035FA4
-
- thumb_func_start nullsub_46
-nullsub_46: @ 8035FE8
- bx lr
- thumb_func_end nullsub_46
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_9.s b/asm/battle_9.s
index fffb56dc9..1c5431afc 100644
--- a/asm/battle_9.s
+++ b/asm/battle_9.s
@@ -136,7 +136,7 @@ _080360D8:
ldrh r1, [r4]
mov r3, r8
ldrb r2, [r3]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
@@ -211,7 +211,7 @@ _0803617C:
beq _080361BC
ldrh r1, [r5]
ldrb r2, [r7]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
@@ -693,7 +693,7 @@ _08036550:
ldrh r1, [r5]
mov r3, r9
ldrb r2, [r3]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
@@ -770,7 +770,7 @@ _080365F2:
ldrh r1, [r5]
mov r3, r9
ldrb r2, [r3]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
@@ -1061,7 +1061,7 @@ _08036850:
adds r0, r1
ldrh r0, [r0]
adds r1, r4, 0
- bl ai_rate_move
+ bl AI_TypeCalc
ldr r1, [sp]
ands r1, r0
cmp r1, 0
@@ -1096,7 +1096,7 @@ _0803688E:
beq _080368CA
ldrh r1, [r5]
ldrb r2, [r7]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
diff --git a/asm/battle_anim_807B69C.s b/asm/battle_anim_807B69C.s
deleted file mode 100644
index e34f47f1c..000000000
--- a/asm/battle_anim_807B69C.s
+++ /dev/null
@@ -1,960 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start unref_sub_807B69C
-unref_sub_807B69C: @ 807B69C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0807B740 @ =gObjectBankIDs
- adds r0, r4, r0
- ldrb r6, [r0]
- ldr r0, _0807B744 @ =sub_807B7E0
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _0807B748 @ =gBattleAnimPicTable + (136 * 8)
- bl LoadCompressedObjectPic
- ldr r0, _0807B74C @ =gBattleAnimPaletteTable + (136 * 8)
- bl LoadCompressedObjectPalette
- ldr r1, _0807B750 @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r1
- strh r4, [r1, 0x8]
- cmp r5, 0
- beq _0807B75C
- movs r0, 0x1F
- strh r0, [r1, 0xA]
- movs r5, 0
- lsls r0, r6, 4
- ldr r7, _0807B754 @ =gSprites
- adds r0, r6
- lsls r0, 2
- adds r6, r0, r7
-_0807B6F0:
- movs r0, 0x20
- ldrsh r1, [r6, r0]
- ldrh r2, [r6, 0x22]
- adds r2, 0x20
- lsls r2, 16
- asrs r2, 16
- ldr r0, _0807B758 @ =gSpriteTemplate_83931F8
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r3, r0, r7
- lsls r0, r5, 1
- adds r0, r5
- lsls r1, r0, 4
- adds r0, r1
- strh r0, [r3, 0x2E]
- movs r0, 0xFF
- lsls r0, 8
- strh r0, [r3, 0x30]
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- cmp r5, 0x4
- bls _0807B734
- movs r0, 0x15
- strh r0, [r3, 0x3A]
-_0807B734:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _0807B6F0
- b _0807B7BC
- .align 2, 0
-_0807B740: .4byte gObjectBankIDs
-_0807B744: .4byte sub_807B7E0
-_0807B748: .4byte gBattleAnimPicTable + (136 * 8)
-_0807B74C: .4byte gBattleAnimPaletteTable + (136 * 8)
-_0807B750: .4byte gTasks
-_0807B754: .4byte gSprites
-_0807B758: .4byte gSpriteTemplate_83931F8
-_0807B75C:
- movs r0, 0xF8
- lsls r0, 7
- strh r0, [r1, 0xA]
- movs r5, 0
- lsls r0, r6, 4
- ldr r7, _0807B7D8 @ =gSprites
- adds r0, r6
- lsls r0, 2
- adds r6, r0, r7
-_0807B76E:
- movs r2, 0x20
- ldrsh r1, [r6, r2]
- ldrh r2, [r6, 0x22]
- subs r2, 0x20
- lsls r2, 16
- asrs r2, 16
- ldr r0, _0807B7DC @ =gSpriteTemplate_83931F8
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r3, r0, r7
- lsls r0, r5, 1
- adds r0, r5
- lsls r1, r0, 4
- adds r0, r1
- strh r0, [r3, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r3, 0x30]
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- cmp r5, 0x4
- bls _0807B7B2
- movs r0, 0x15
- strh r0, [r3, 0x3A]
-_0807B7B2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _0807B76E
-_0807B7BC:
- ldr r0, _0807B7D8 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0807B7D8: .4byte gSprites
-_0807B7DC: .4byte gSpriteTemplate_83931F8
- thumb_func_end unref_sub_807B69C
-
- thumb_func_start sub_807B7E0
-sub_807B7E0: @ 807B7E0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0807B838 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0xC]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x2
- bne _0807B866
- movs r0, 0
- strh r0, [r4, 0xC]
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 20
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 16
- ldrb r2, [r4, 0x10]
- ldrh r3, [r4, 0xA]
- movs r1, 0x10
- bl BlendPalette
- ldrh r2, [r4, 0x12]
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0807B83C
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _0807B86A
- movs r0, 0x1
- eors r0, r2
- strh r0, [r4, 0x12]
- b _0807B86A
- .align 2, 0
-_0807B838: .4byte gTasks
-_0807B83C:
- ldrh r1, [r4, 0x10]
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bge _0807B86A
- strh r1, [r4, 0x10]
- movs r0, 0x1
- eors r0, r2
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _0807B86A
- adds r0, r5, 0
- bl DestroyTask
- b _0807B86A
-_0807B866:
- adds r0, r1, 0x1
- strh r0, [r4, 0xC]
-_0807B86A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_807B7E0
-
- thumb_func_start sub_807B870
-sub_807B870: @ 807B870
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x3A]
- movs r3, 0x3A
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _0807B89C
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r3]
- ldr r1, _0807B898 @ =sub_807B8A4
- str r1, [r2, 0x1C]
- adds r0, r2, 0
- bl _call_via_r1
- b _0807B8A0
- .align 2, 0
-_0807B898: .4byte sub_807B8A4
-_0807B89C:
- subs r0, r1, 0x1
- strh r0, [r2, 0x3A]
-_0807B8A0:
- pop {r0}
- bx r0
- thumb_func_end sub_807B870
-
- thumb_func_start sub_807B8A4
-sub_807B8A4: @ 807B8A4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- bgt _0807B8D0
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1D
- b _0807B8D6
-_0807B8D0:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1F
-_0807B8D6:
- strb r0, [r1]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x34
- bne _0807B918
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0807B912
- adds r0, r4, 0
- bl DestroySpriteAndFreeResources
- b _0807B918
-_0807B912:
- adds r0, r4, 0
- bl DestroySprite
-_0807B918:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_807B8A4
-
- thumb_func_start sub_807B920
-sub_807B920: @ 807B920
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _0807B9B0 @ =gBattleAnimEnemyMonIndex
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 8
- ldr r1, _0807B9B4 @ =0xffe00000
- adds r0, r1
- lsrs r5, r0, 16
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 8
- ldr r2, _0807B9B8 @ =0xffdc0000
- adds r0, r2
- lsrs r4, r0, 16
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0807B95E
- lsls r0, r5, 16
- ldr r1, _0807B9BC @ =0xfffa0000
- adds r0, r1
- lsrs r5, r0, 16
-_0807B95E:
- ldr r1, _0807B9C0 @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r2, 0x80
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0807B9C4 @ =gSpriteTemplate_83931E0
- lsls r1, r5, 16
- asrs r1, 16
- lsls r2, r4, 16
- asrs r2, 16
- movs r3, 0x4
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _0807B9C8 @ =gSprites
- adds r0, r1
- ldr r1, _0807B9CC @ =gSubspriteTables_83931D8
- bl SetSubspriteTables
- ldr r1, _0807B9D0 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x26]
- ldr r1, _0807B9D4 @ =sub_807B9D8
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807B9B0: .4byte gBattleAnimEnemyMonIndex
-_0807B9B4: .4byte 0xffe00000
-_0807B9B8: .4byte 0xffdc0000
-_0807B9BC: .4byte 0xfffa0000
-_0807B9C0: .4byte REG_BLDCNT
-_0807B9C4: .4byte gSpriteTemplate_83931E0
-_0807B9C8: .4byte gSprites
-_0807B9CC: .4byte gSubspriteTables_83931D8
-_0807B9D0: .4byte gTasks
-_0807B9D4: .4byte sub_807B9D8
- thumb_func_end sub_807B920
-
- thumb_func_start sub_807B9D8
-sub_807B9D8: @ 807B9D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807BA04 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- adds r2, r0, 0
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _0807BA0C
- ldr r0, _0807BA08 @ =sub_807BA24
- str r0, [r1]
- movs r0, 0
- strh r0, [r1, 0xA]
- b _0807BA1C
- .align 2, 0
-_0807BA04: .4byte gTasks
-_0807BA08: .4byte sub_807BA24
-_0807BA0C:
- lsls r0, r2, 24
- lsrs r0, 24
- ldr r2, _0807BA20 @ =REG_BLDALPHA
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- strh r1, [r2]
-_0807BA1C:
- pop {r0}
- bx r0
- .align 2, 0
-_0807BA20: .4byte REG_BLDALPHA
- thumb_func_end sub_807B9D8
-
- thumb_func_start sub_807BA24
-sub_807BA24: @ 807BA24
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0807BABC @ =0x0000271a
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0807BAC0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0xA]
- adds r1, r0, 0x1
- strh r1, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- ble _0807BAB4
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0807BAB4
- ldr r3, _0807BAC4 @ =gPlttBufferFaded
- lsls r2, 4
- mov r12, r2
- ldr r1, _0807BAC8 @ =0x0000010d
- add r1, r12
- lsls r1, 1
- adds r1, r3
- ldrh r4, [r1]
- movs r2, 0x87
- lsls r2, 1
- add r2, r12
- lsls r2, 1
- adds r2, r3
- ldrh r0, [r2]
- strh r0, [r1]
- ldr r0, _0807BACC @ =0x0000010f
- add r0, r12
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- strh r1, [r2]
- strh r4, [r0]
- strh r6, [r5, 0xC]
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- strh r0, [r5, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0807BAB4
- strh r6, [r5, 0xE]
- strh r6, [r5, 0xA]
- ldrh r0, [r5, 0x10]
- adds r0, 0x1
- strh r0, [r5, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _0807BAB4
- movs r0, 0x9
- strh r0, [r5, 0xA]
- ldr r0, _0807BAD0 @ =sub_807BAD4
- str r0, [r5]
-_0807BAB4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BABC: .4byte 0x0000271a
-_0807BAC0: .4byte gTasks
-_0807BAC4: .4byte gPlttBufferFaded
-_0807BAC8: .4byte 0x0000010d
-_0807BACC: .4byte 0x0000010f
-_0807BAD0: .4byte sub_807BAD4
- thumb_func_end sub_807BA24
-
- thumb_func_start sub_807BAD4
-sub_807BAD4: @ 807BAD4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807BB04 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r0, [r2, 0xA]
- subs r0, 0x1
- adds r3, r0, 0
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0807BB0C
- ldr r0, _0807BB08 @ =sub_807BB24
- str r0, [r2]
- movs r0, 0
- strh r0, [r2, 0xA]
- b _0807BB1C
- .align 2, 0
-_0807BB04: .4byte gTasks
-_0807BB08: .4byte sub_807BB24
-_0807BB0C:
- lsls r0, r3, 24
- lsrs r0, 24
- ldr r2, _0807BB20 @ =REG_BLDALPHA
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- strh r1, [r2]
-_0807BB1C:
- pop {r0}
- bx r0
- .align 2, 0
-_0807BB20: .4byte REG_BLDALPHA
- thumb_func_end sub_807BAD4
-
- thumb_func_start sub_807BB24
-sub_807BB24: @ 807BB24
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- ldr r1, _0807BB64 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x25
- bne _0807BB6C
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _0807BB68 @ =gSprites
- adds r4, r0
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- b _0807BB7E
- .align 2, 0
-_0807BB64: .4byte gTasks
-_0807BB68: .4byte gSprites
-_0807BB6C:
- cmp r0, 0x27
- bne _0807BB7E
- ldr r0, _0807BB84 @ =REG_BLDCNT
- strh r3, [r0]
- adds r0, 0x2
- strh r3, [r0]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0807BB7E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BB84: .4byte REG_BLDCNT
- thumb_func_end sub_807BB24
-
- thumb_func_start sub_807BB88
-sub_807BB88: @ 807BB88
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r3, 0
- ldr r0, _0807BBA8 @ =0x02017840
- ldrh r0, [r0]
- subs r0, 0xF
- cmp r0, 0x2B
- bls _0807BB9C
- b _0807BD20
-_0807BB9C:
- lsls r0, 2
- ldr r1, _0807BBAC @ =_0807BBB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807BBA8: .4byte 0x02017840
-_0807BBAC: .4byte _0807BBB0
- .align 2, 0
-_0807BBB0:
- .4byte _0807BC60
- .4byte _0807BC66
- .4byte _0807BC6C
- .4byte _0807BC72
- .4byte _0807BC78
- .4byte _0807BC7E
- .4byte _0807BC84
- .4byte _0807BC8A
- .4byte _0807BC90
- .4byte _0807BC96
- .4byte _0807BC9C
- .4byte _0807BCA2
- .4byte _0807BCA8
- .4byte _0807BCAE
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BCB4
- .4byte _0807BCB8
- .4byte _0807BCBC
- .4byte _0807BCC0
- .4byte _0807BCC4
- .4byte _0807BCC8
- .4byte _0807BCCC
- .4byte _0807BCD0
- .4byte _0807BCD8
- .4byte _0807BCE0
- .4byte _0807BCE8
- .4byte _0807BCF0
- .4byte _0807BCF8
- .4byte _0807BD00
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD08
- .4byte _0807BD0C
- .4byte _0807BD10
- .4byte _0807BD18
-_0807BC60:
- movs r5, 0
- movs r2, 0
- b _0807BD28
-_0807BC66:
- movs r5, 0
- movs r2, 0x1
- b _0807BD28
-_0807BC6C:
- movs r5, 0
- movs r2, 0x3
- b _0807BD28
-_0807BC72:
- movs r5, 0
- movs r2, 0x5
- b _0807BD28
-_0807BC78:
- movs r5, 0
- movs r2, 0x6
- b _0807BD28
-_0807BC7E:
- movs r5, 0
- movs r2, 0x2
- b _0807BD28
-_0807BC84:
- movs r5, 0
- movs r2, 0x4
- b _0807BD28
-_0807BC8A:
- movs r5, 0x1
- movs r2, 0
- b _0807BD28
-_0807BC90:
- movs r5, 0x1
- movs r2, 0x1
- b _0807BD28
-_0807BC96:
- movs r5, 0x1
- movs r2, 0x3
- b _0807BD28
-_0807BC9C:
- movs r5, 0x1
- movs r2, 0x5
- b _0807BD28
-_0807BCA2:
- movs r5, 0x1
- movs r2, 0x6
- b _0807BD28
-_0807BCA8:
- movs r5, 0x1
- movs r2, 0x2
- b _0807BD28
-_0807BCAE:
- movs r5, 0x1
- movs r2, 0x4
- b _0807BD28
-_0807BCB4:
- movs r5, 0
- b _0807BCD2
-_0807BCB8:
- movs r5, 0
- b _0807BCDA
-_0807BCBC:
- movs r5, 0
- b _0807BCE2
-_0807BCC0:
- movs r5, 0
- b _0807BCEA
-_0807BCC4:
- movs r5, 0
- b _0807BCF2
-_0807BCC8:
- movs r5, 0
- b _0807BCFA
-_0807BCCC:
- movs r5, 0
- b _0807BD02
-_0807BCD0:
- movs r5, 0x1
-_0807BCD2:
- movs r2, 0
- movs r3, 0x1
- b _0807BD28
-_0807BCD8:
- movs r5, 0x1
-_0807BCDA:
- movs r2, 0x1
- movs r3, 0x1
- b _0807BD28
-_0807BCE0:
- movs r5, 0x1
-_0807BCE2:
- movs r2, 0x3
- movs r3, 0x1
- b _0807BD28
-_0807BCE8:
- movs r5, 0x1
-_0807BCEA:
- movs r2, 0x5
- movs r3, 0x1
- b _0807BD28
-_0807BCF0:
- movs r5, 0x1
-_0807BCF2:
- movs r2, 0x6
- movs r3, 0x1
- b _0807BD28
-_0807BCF8:
- movs r5, 0x1
-_0807BCFA:
- movs r2, 0x2
- movs r3, 0x1
- b _0807BD28
-_0807BD00:
- movs r5, 0x1
-_0807BD02:
- movs r2, 0x4
- movs r3, 0x1
- b _0807BD28
-_0807BD08:
- movs r5, 0
- b _0807BD12
-_0807BD0C:
- movs r5, 0
- b _0807BD1A
-_0807BD10:
- movs r5, 0x1
-_0807BD12:
- movs r2, 0xFF
- movs r3, 0
- b _0807BD28
-_0807BD18:
- movs r5, 0x1
-_0807BD1A:
- movs r2, 0xFF
- movs r3, 0x1
- b _0807BD28
-_0807BD20:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _0807BD4A
-_0807BD28:
- ldr r0, _0807BD50 @ =gBattleAnimArgs
- movs r1, 0
- strh r5, [r0]
- strh r2, [r0, 0x2]
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- strh r3, [r0, 0x8]
- ldr r1, _0807BD54 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0807BD58 @ =sub_80E32E0
- str r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
-_0807BD4A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BD50: .4byte gBattleAnimArgs
-_0807BD54: .4byte gTasks
-_0807BD58: .4byte sub_80E32E0
- thumb_func_end sub_807BB88
-
- thumb_func_start move_anim_start_t2
-move_anim_start_t2: @ 807BD5C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0807BD98 @ =gBattleAnimPlayerMonIndex
- strb r4, [r0]
- ldr r0, _0807BD9C @ =gBattleAnimEnemyMonIndex
- strb r4, [r0]
- ldr r0, _0807BDA0 @ =gBattleAnims_StatusConditions
- movs r2, 0
- bl DoMoveAnim
- ldr r0, _0807BDA4 @ =sub_807BDAC
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807BDA8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BD98: .4byte gBattleAnimPlayerMonIndex
-_0807BD9C: .4byte gBattleAnimEnemyMonIndex
-_0807BDA0: .4byte gBattleAnims_StatusConditions
-_0807BDA4: .4byte sub_807BDAC
-_0807BDA8: .4byte gTasks
- thumb_func_end move_anim_start_t2
-
- thumb_func_start sub_807BDAC
-sub_807BDAC: @ 807BDAC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0807BDF0 @ =gAnimScriptCallback
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _0807BDF4 @ =gAnimScriptActive
- ldrb r0, [r0]
- cmp r0, 0
- bne _0807BDEA
- ldr r1, _0807BDF8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r0, _0807BDFC @ =0x02017810
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_0807BDEA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BDF0: .4byte gAnimScriptCallback
-_0807BDF4: .4byte gAnimScriptActive
-_0807BDF8: .4byte gTasks
-_0807BDFC: .4byte 0x02017810
- thumb_func_end sub_807BDAC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s
index f2f127690..a50b089db 100644
--- a/asm/battle_anim_81258BC.s
+++ b/asm/battle_anim_81258BC.s
@@ -9,7 +9,7 @@
thumb_func_start unref_sub_812AECC
unref_sub_812AECC: @ 812AECC
push {lr}
- bl sub_812613C
+ bl RunMysteryEventScript
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
diff --git a/asm/battle_records.s b/asm/battle_records.s
deleted file mode 100644
index cfe822acc..000000000
--- a/asm/battle_records.s
+++ /dev/null
@@ -1,868 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_810FF78
-sub_810FF78: @ 810FF78
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r2, _0810FFA4 @ =0x01000008
- mov r0, sp
- adds r1, r4, 0
- bl CpuSet
- movs r0, 0xFF
- strb r0, [r4]
- movs r0, 0
- strh r0, [r4, 0x8]
- strh r0, [r4, 0xA]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xE]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810FFA4: .4byte 0x01000008
- thumb_func_end sub_810FF78
-
- thumb_func_start InitLinkBattleRecords_
-InitLinkBattleRecords_: @ 810FFA8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0x4
-_0810FFAE:
- adds r0, r4, 0
- bl sub_810FF78
- adds r4, 0x10
- subs r5, 0x1
- cmp r5, 0
- bge _0810FFAE
- movs r0, 0x17
- movs r1, 0
- bl SetGameStat
- movs r0, 0x18
- movs r1, 0
- bl SetGameStat
- movs r0, 0x19
- movs r1, 0
- bl SetGameStat
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end InitLinkBattleRecords_
-
- thumb_func_start sub_810FFDC
-sub_810FFDC: @ 810FFDC
- adds r1, r0, 0
- ldrh r0, [r1, 0xA]
- ldrh r2, [r1, 0xC]
- adds r0, r2
- ldrh r1, [r1, 0xE]
- adds r0, r1
- bx lr
- thumb_func_end sub_810FFDC
-
- thumb_func_start sub_810FFEC
-sub_810FFEC: @ 810FFEC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- lsls r2, 16
- lsrs r7, r2, 16
- movs r5, 0
- ldr r6, _08110024 @ =gStringVar1
- adds r4, r0, 0
-_0810FFFE:
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x7
- bl memcpy
- movs r0, 0xFF
- strb r0, [r6, 0x7]
- adds r0, r6, 0
- mov r1, r8
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- bne _08110028
- ldrh r0, [r4, 0x8]
- cmp r0, r7
- bne _08110028
- adds r0, r5, 0
- b _08110032
- .align 2, 0
-_08110024: .4byte gStringVar1
-_08110028:
- adds r4, 0x10
- adds r5, 0x1
- cmp r5, 0x4
- ble _0810FFFE
- movs r0, 0x5
-_08110032:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810FFEC
-
- thumb_func_start sub_811003C
-sub_811003C: @ 811003C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r8, r0
- movs r0, 0x4
-_0811004A:
- subs r2, r0, 0x1
- mov r9, r2
- cmp r2, 0
- blt _081100A4
- lsls r0, 4
- mov r1, r8
- adds r6, r1, r0
- lsls r0, r2, 4
- adds r5, r0, r1
-_0811005C:
- adds r0, r6, 0
- str r2, [sp, 0x10]
- bl sub_810FFDC
- adds r4, r0, 0
- adds r0, r5, 0
- bl sub_810FFDC
- ldr r2, [sp, 0x10]
- cmp r4, r0
- ble _08110096
- mov r1, sp
- adds r0, r6, 0
- ldm r0!, {r3,r4,r7}
- stm r1!, {r3,r4,r7}
- ldr r0, [r0]
- str r0, [r1]
- adds r1, r6, 0
- adds r0, r5, 0
- ldm r0!, {r3,r4,r7}
- stm r1!, {r3,r4,r7}
- ldr r0, [r0]
- str r0, [r1]
- adds r1, r5, 0
- mov r0, sp
- ldm r0!, {r3,r4,r7}
- stm r1!, {r3,r4,r7}
- ldr r0, [r0]
- str r0, [r1]
-_08110096:
- subs r5, 0x10
- movs r0, 0x1
- negs r0, r0
- add r9, r0
- mov r1, r9
- cmp r1, 0
- bge _0811005C
-_081100A4:
- adds r0, r2, 0
- cmp r0, 0
- bgt _0811004A
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811003C
-
- thumb_func_start sub_81100B8
-sub_81100B8: @ 81100B8
- push {lr}
- adds r2, r0, 0
- cmp r1, 0x2
- beq _081100E8
- cmp r1, 0x2
- bgt _081100CA
- cmp r1, 0x1
- beq _081100D0
- b _08110112
-_081100CA:
- cmp r1, 0x3
- beq _08110100
- b _08110112
-_081100D0:
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _081100E4 @ =0x0000270f
- cmp r0, r1
- bls _08110112
- strh r1, [r2, 0xA]
- b _08110112
- .align 2, 0
-_081100E4: .4byte 0x0000270f
-_081100E8:
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _081100FC @ =0x0000270f
- cmp r0, r1
- bls _08110112
- strh r1, [r2, 0xC]
- b _08110112
- .align 2, 0
-_081100FC: .4byte 0x0000270f
-_08110100:
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08110118 @ =0x0000270f
- cmp r0, r1
- bls _08110112
- strh r1, [r2, 0xE]
-_08110112:
- pop {r0}
- bx r0
- .align 2, 0
-_08110118: .4byte 0x0000270f
- thumb_func_end sub_81100B8
-
- thumb_func_start sub_811011C
-sub_811011C: @ 811011C
- push {r4,lr}
- cmp r0, 0x2
- beq _08110136
- cmp r0, 0x2
- bgt _0811012C
- cmp r0, 0x1
- beq _08110132
- b _0811014E
-_0811012C:
- cmp r0, 0x3
- beq _0811013A
- b _0811014E
-_08110132:
- movs r4, 0x17
- b _0811013C
-_08110136:
- movs r4, 0x18
- b _0811013C
-_0811013A:
- movs r4, 0x19
-_0811013C:
- adds r0, r4, 0
- bl GetGameStat
- ldr r1, _08110154 @ =0x0000270e
- cmp r0, r1
- bhi _0811014E
- adds r0, r4, 0
- bl IncrementGameStat
-_0811014E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110154: .4byte 0x0000270e
- thumb_func_end sub_811011C
-
- thumb_func_start sub_8110158
-sub_8110158: @ 8110158
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r5, r0, 0
- adds r7, r1, 0
- mov r10, r3
- ldr r0, [sp, 0x20]
- lsls r2, 16
- lsrs r2, 16
- mov r9, r2
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, r10
- bl sub_811011C
- adds r0, r5, 0
- bl sub_811003C
- adds r0, r5, 0
- adds r1, r7, 0
- mov r2, r9
- bl sub_810FFEC
- adds r6, r0, 0
- cmp r6, 0x5
- bne _081101CC
- movs r6, 0x4
- adds r4, r5, 0
- adds r4, 0x40
- adds r0, r4, 0
- bl sub_810FF78
- mov r0, r8
- cmp r0, 0x1
- bne _081101BA
- movs r0, 0xFC
- strb r0, [r4]
- movs r0, 0x15
- strb r0, [r4, 0x1]
- adds r0, r5, 0
- adds r0, 0x42
- adds r1, r7, 0
- movs r2, 0x5
- bl StringCopyN
- b _081101C4
-_081101BA:
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0x7
- bl StringCopyN
-_081101C4:
- lsls r0, r6, 4
- adds r0, r5, r0
- mov r1, r9
- strh r1, [r0, 0x8]
-_081101CC:
- lsls r0, r6, 4
- adds r0, r5, r0
- mov r1, r10
- bl sub_81100B8
- adds r0, r5, 0
- bl sub_811003C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8110158
-
- thumb_func_start InitLinkBattleRecords
-InitLinkBattleRecords: @ 81101EC
- push {lr}
- ldr r0, _081101F8 @ =gSaveBlock1 + 0x30B8
- bl InitLinkBattleRecords_
- pop {r0}
- bx r0
- .align 2, 0
-_081101F8: .4byte gSaveBlock1 + 0x30B8
- thumb_func_end InitLinkBattleRecords
-
- thumb_func_start sub_81101FC
-sub_81101FC: @ 81101FC
- push {lr}
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 3
- ldr r0, _08110220 @ =gTrainerCards + 0x14
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08110224 @ =0x0000270f
- cmp r0, r2
- bls _0811021A
- strh r2, [r1]
-_0811021A:
- pop {r0}
- bx r0
- .align 2, 0
-_08110220: .4byte gTrainerCards + 0x14
-_08110224: .4byte 0x0000270f
- thumb_func_end sub_81101FC
-
- thumb_func_start sub_8110228
-sub_8110228: @ 8110228
- push {lr}
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 3
- ldr r0, _0811024C @ =gTrainerCards + 0x16
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08110250 @ =0x0000270f
- cmp r0, r2
- bls _08110246
- strh r2, [r1]
-_08110246:
- pop {r0}
- bx r0
- .align 2, 0
-_0811024C: .4byte gTrainerCards + 0x16
-_08110250: .4byte 0x0000270f
- thumb_func_end sub_8110228
-
- thumb_func_start sub_8110254
-sub_8110254: @ 8110254
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _08110268 @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0811026C
- cmp r0, 0x2
- beq _0811027A
- b _08110288
- .align 2, 0
-_08110268: .4byte gBattleOutcome
-_0811026C:
- eors r0, r4
- bl sub_81101FC
- adds r0, r4, 0
- bl sub_8110228
- b _08110288
-_0811027A:
- movs r0, 0x1
- eors r0, r4
- bl sub_8110228
- adds r0, r4, 0
- bl sub_81101FC
-_08110288:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8110254
-
- thumb_func_start sub_8110290
-sub_8110290: @ 8110290
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl sub_8110254
- ldr r0, _081102D4 @ =gSaveBlock1 + 0x30B8
- lsls r2, r4, 3
- subs r2, r4
- lsls r2, 3
- ldr r3, _081102D8 @ =gTrainerCards + 0x30
- adds r1, r2, r3
- subs r3, 0x30
- adds r2, r3
- ldrh r2, [r2, 0xE]
- ldr r3, _081102DC @ =gBattleOutcome
- ldrb r3, [r3]
- ldr r6, _081102E0 @ =gLinkPlayers
- ldr r5, _081102E4 @ =gLinkPlayerMapObjects
- lsls r4, 2
- adds r4, r5
- ldrb r5, [r4, 0x1]
- lsls r4, r5, 3
- subs r4, r5
- lsls r4, 2
- adds r4, r6
- ldrb r4, [r4, 0x1A]
- str r4, [sp]
- bl sub_8110158
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081102D4: .4byte gSaveBlock1 + 0x30B8
-_081102D8: .4byte gTrainerCards + 0x30
-_081102DC: .4byte gBattleOutcome
-_081102E0: .4byte gLinkPlayers
-_081102E4: .4byte gLinkPlayerMapObjects
- thumb_func_end sub_8110290
-
- thumb_func_start PrintLinkBattleWinsLossesDraws
-PrintLinkBattleWinsLossesDraws: @ 81102E8
- push {r4,lr}
- ldr r4, _08110338 @ =gStringVar1
- movs r0, 0x17
- bl GetGameStat
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN_DigitWidth6
- ldr r4, _0811033C @ =gStringVar2
- movs r0, 0x18
- bl GetGameStat
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN_DigitWidth6
- ldr r4, _08110340 @ =gStringVar3
- movs r0, 0x19
- bl GetGameStat
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN_DigitWidth6
- ldr r0, _08110344 @ =gOtherText_WinRecord
- movs r1, 0x3
- movs r2, 0x3
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110338: .4byte gStringVar1
-_0811033C: .4byte gStringVar2
-_08110340: .4byte gStringVar3
-_08110344: .4byte gOtherText_WinRecord
- thumb_func_end PrintLinkBattleWinsLossesDraws
-
- thumb_func_start PrintLinkBattleRecord
-PrintLinkBattleRecord: @ 8110348
- push {r4-r7,lr}
- sub sp, 0x10
- adds r7, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- ldrh r0, [r7, 0xA]
- cmp r0, 0
- bne _081103C0
- ldr r0, [r7, 0xC]
- cmp r0, 0
- bne _081103C0
- mov r0, sp
- movs r2, 0xFC
- strb r2, [r0]
- mov r1, sp
- movs r0, 0x14
- strb r0, [r1, 0x1]
- movs r0, 0x6
- strb r0, [r1, 0x2]
- mov r0, sp
- strb r2, [r0, 0x3]
- movs r0, 0x11
- strb r0, [r1, 0x4]
- movs r0, 0x1
- strb r0, [r1, 0x5]
- mov r4, sp
- adds r4, 0x6
- ldr r1, _081103B8 @ =gOtherText_SevenDashes
- adds r0, r4, 0
- bl StringCopy
- mov r0, sp
- movs r1, 0x3
- adds r2, r6, 0
- bl MenuPrint
- ldr r1, _081103BC @ =gOtherText_FourDashes
- adds r0, r4, 0
- bl StringCopy
- mov r0, sp
- movs r1, 0xB
- adds r2, r6, 0
- bl MenuPrint
- mov r0, sp
- movs r1, 0x11
- adds r2, r6, 0
- bl MenuPrint
- mov r0, sp
- movs r1, 0x17
- adds r2, r6, 0
- bl MenuPrint
- b _0811042E
- .align 2, 0
-_081103B8: .4byte gOtherText_SevenDashes
-_081103BC: .4byte gOtherText_FourDashes
-_081103C0:
- ldr r4, _08110438 @ =gStringVar1
- adds r0, r4, 0
- movs r1, 0x8
- bl StringFillWithTerminator
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0x7
- bl StringCopyN
- adds r0, r4, 0
- movs r1, 0x3
- adds r2, r6, 0
- bl MenuPrint
- movs r0, 0xFC
- strb r0, [r4]
- movs r0, 0x14
- strb r0, [r4, 0x1]
- movs r0, 0x6
- strb r0, [r4, 0x2]
- adds r5, r4, 0x3
- ldrh r1, [r7, 0xA]
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- movs r1, 0xB
- adds r2, r6, 0
- bl MenuPrint
- ldrh r1, [r7, 0xC]
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- movs r1, 0x11
- adds r2, r6, 0
- bl MenuPrint
- ldrh r1, [r7, 0xE]
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x4
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- movs r1, 0x17
- adds r2, r6, 0
- bl MenuPrint
-_0811042E:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08110438: .4byte gStringVar1
- thumb_func_end PrintLinkBattleRecord
-
-.section .text_8110494
-
- thumb_func_start sub_8110494
-sub_8110494: @ 8110494
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _081104B4 @ =gSaveBlock2 + 0xA8
- ldr r2, _081104B8 @ =0x000004ae
- adds r1, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x6
- bhi _081104E0
- lsls r0, 2
- ldr r1, _081104BC @ =_081104C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081104B4: .4byte gSaveBlock2 + 0xA8
-_081104B8: .4byte 0x000004ae
-_081104BC: .4byte _081104C0
- .align 2, 0
-_081104C0:
- .4byte _081104E0
- .4byte _081104E0
- .4byte _081104DC
- .4byte _081104DC
- .4byte _081104E0
- .4byte _081104E0
- .4byte _081104DC
-_081104DC:
- movs r0, 0x1
- b _081104E2
-_081104E0:
- movs r0, 0
-_081104E2:
- pop {r1}
- bx r1
- thumb_func_end sub_8110494
-
- thumb_func_start sub_81104E8
-sub_81104E8: @ 81104E8
- push {r4-r6,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r2, 24
- adds r5, r2, 0
- lsls r3, 24
- lsrs r3, 24
- adds r6, r3, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl MenuPrint
- ldr r0, _0811052C @ =0x0000270f
- cmp r4, r0
- bls _0811050A
- adds r4, r0, 0
-_0811050A:
- ldr r0, _08110530 @ =gStringVar1
- adds r1, r4, 0
- movs r2, 0x18
- movs r3, 0x1
- bl sub_8072C14
- ldr r0, _08110534 @ =gOtherText_WinStreak
- adds r1, r5, 0x7
- lsls r1, 24
- lsrs r1, 24
- adds r2, r6, 0
- bl MenuPrint
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811052C: .4byte 0x0000270f
-_08110530: .4byte gStringVar1
-_08110534: .4byte gOtherText_WinStreak
- thumb_func_end sub_81104E8
-
- thumb_func_start sub_8110538
-sub_8110538: @ 8110538
- push {r4,lr}
- adds r4, r1, 0
- adds r3, r2, 0
- lsls r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r1, _08110564 @ =gSaveBlock2 + 0xA8
- lsrs r0, 23
- movs r2, 0x97
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _08110568 @ =gOtherText_Record
- adds r2, r4, 0
- bl sub_81104E8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110564: .4byte gSaveBlock2 + 0xA8
-_08110568: .4byte gOtherText_Record
- thumb_func_end sub_8110538
-
- thumb_func_start sub_811056C
-sub_811056C: @ 811056C
- push {lr}
- lsls r0, 24
- ldr r1, _08110588 @ =gSaveBlock2
- lsrs r0, 23
- ldr r2, _0811058C @ =0x00000574
- adds r1, r2
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _08110590 @ =0x0000270f
- cmp r0, r1
- bls _08110584
- adds r0, r1, 0
-_08110584:
- pop {r1}
- bx r1
- .align 2, 0
-_08110588: .4byte gSaveBlock2
-_0811058C: .4byte 0x00000574
-_08110590: .4byte 0x0000270f
- thumb_func_end sub_811056C
-
- thumb_func_start sub_8110594
-sub_8110594: @ 8110594
- push {r4-r7,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r7, r2, 24
- adds r0, r4, 0
- bl sub_811056C
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- bl sub_8110494
- cmp r0, 0x1
- bne _081105CC
- ldr r0, _081105C8 @ =gOtherText_Current
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_81104E8
- b _081105D8
- .align 2, 0
-_081105C8: .4byte gOtherText_Current
-_081105CC:
- ldr r0, _081105E0 @ =gOtherText_Prev
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_81104E8
-_081105D8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081105E0: .4byte gOtherText_Prev
- thumb_func_end sub_8110594
-
- thumb_func_start ShowBattleTowerRecords
-ShowBattleTowerRecords: @ 81105E4
- push {r4,lr}
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0x1B
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _08110658 @ =gOtherText_BattleTowerResults
- movs r1, 0x3
- movs r2, 0x2
- movs r3, 0xC8
- bl sub_8072BD8
- ldr r0, _0811065C @ =gOtherText_Lv50
- movs r1, 0x5
- movs r2, 0x6
- bl MenuPrint
- ldr r0, _08110660 @ =gOtherText_Lv100
- movs r1, 0x5
- movs r2, 0xC
- bl MenuPrint
- movs r4, 0x5
-_08110614:
- lsls r1, r4, 24
- lsrs r1, 24
- movs r0, 0xAE
- movs r2, 0xA
- bl sub_8071F60
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x19
- bls _08110614
- movs r0, 0
- movs r1, 0xA
- movs r2, 0x6
- bl sub_8110594
- movs r0, 0
- movs r1, 0xA
- movs r2, 0x8
- bl sub_8110538
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0xC
- bl sub_8110594
- movs r0, 0x1
- movs r1, 0xA
- movs r2, 0xE
- bl sub_8110538
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110658: .4byte gOtherText_BattleTowerResults
-_0811065C: .4byte gOtherText_Lv50
-_08110660: .4byte gOtherText_Lv100
- thumb_func_end ShowBattleTowerRecords
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 7e5d19c24..68804ca21 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -1215,7 +1215,7 @@ sub_8083958: @ 8083958
ldrb r1, [r0]
movs r0, 0x1
eors r0, r1
- bl sub_8110290
+ bl UpdateLinkBattleRecords
_0808397E:
ldr r0, _08083998 @ =gMain
ldr r1, _0808399C @ =sub_805465C
diff --git a/asm/crt0.s b/asm/crt0.s
index 121b11744..049392be9 100644
--- a/asm/crt0.s
+++ b/asm/crt0.s
@@ -1,4 +1,6 @@
.include "constants/gba_constants.inc"
+ .include "constants/misc_constants.inc"
+ .include "constants/version.inc"
.syntax unified
@@ -47,10 +49,15 @@ GPIOPortReadEnable: @ 80000C8
.4byte 0xFFFFFFFF
.4byte 0xFFFFFFFF
.4byte 0xFFFFFFFF
- .4byte 2
- .4byte 5
+ .4byte GAME_VERSION
+ .4byte GAME_LANGUAGE
+ .ifdef SAPPHIRE
+ .ascii "pokemon sapphire version"
+ .space 8
+ .else
.ascii "pokemon ruby version"
.space 12
+ .endif
.4byte gMonFrontPicTable
.4byte gMonBackPicTable
.4byte gMonPaletteTable
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index c34212a24..6b85e1e76 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -10730,105 +10730,4 @@ _080EB3F6:
bx r1
thumb_func_end sub_80EB37C
- thumb_func_start sub_80EB3FC
-sub_80EB3FC: @ 80EB3FC
- push {r4-r7,lr}
- adds r5, r0, 0
- lsls r6, r1, 16
- lsrs r4, r6, 16
- adds r7, r4, 0
- adds r0, r4, 0
- bl sub_80EB37C
- lsls r0, 24
- cmp r0, 0
- beq _080EB420
- ldr r1, _080EB41C @ =gOtherText_ThreeQuestions
- adds r0, r5, 0
- bl StringCopy
- b _080EB4A6
- .align 2, 0
-_080EB41C: .4byte gOtherText_ThreeQuestions
-_080EB420:
- ldr r0, _080EB43C @ =0x0000ffff
- cmp r4, r0
- beq _080EB4A0
- lsrs r1, r6, 25
- ldr r2, _080EB440 @ =0x000001ff
- ands r2, r7
- cmp r1, 0x13
- bgt _080EB444
- cmp r1, 0x12
- bge _080EB458
- cmp r1, 0
- beq _080EB448
- b _080EB468
- .align 2, 0
-_080EB43C: .4byte 0x0000ffff
-_080EB440: .4byte 0x000001ff
-_080EB444:
- cmp r1, 0x15
- bne _080EB468
-_080EB448:
- movs r0, 0xB
- adds r1, r2, 0
- muls r1, r0
- ldr r0, _080EB454 @ =gSpeciesNames
- adds r1, r0
- b _080EB498
- .align 2, 0
-_080EB454: .4byte gSpeciesNames
-_080EB458:
- movs r0, 0xD
- adds r1, r2, 0
- muls r1, r0
- ldr r0, _080EB464 @ =gMoveNames
- adds r1, r0
- b _080EB498
- .align 2, 0
-_080EB464: .4byte gMoveNames
-_080EB468:
- ldr r0, _080EB4AC @ =gEasyChatGroupWords
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- subs r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _080EB4B0 @ =0x0000ffff
- cmp r2, r0
- beq _080EB498
- adds r3, r0, 0
-_080EB47E:
- ldrb r0, [r1]
- adds r1, 0x1
- subs r2, 0x1
- cmp r0, 0xFF
- beq _080EB490
-_080EB488:
- ldrb r0, [r1]
- adds r1, 0x1
- cmp r0, 0xFF
- bne _080EB488
-_080EB490:
- lsls r0, r2, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bne _080EB47E
-_080EB498:
- adds r0, r5, 0
- bl StringCopy
- adds r5, r0, 0
-_080EB4A0:
- movs r0, 0xFF
- strb r0, [r5]
- adds r0, r5, 0
-_080EB4A6:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080EB4AC: .4byte gEasyChatGroupWords
-_080EB4B0: .4byte 0x0000ffff
- thumb_func_end sub_80EB3FC
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s
deleted file mode 100644
index e882e7030..000000000
--- a/asm/field_fadetransition.s
+++ /dev/null
@@ -1,1221 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start task_mpl_807DD60
-task_mpl_807DD60: @ 80809CC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r2, _080809F0 @ =gTasks
- adds r4, r0, r2
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08080A06
- cmp r0, 0x1
- bgt _080809F4
- cmp r0, 0
- beq _080809FA
- b _08080A36
- .align 2, 0
-_080809F0: .4byte gTasks
-_080809F4:
- cmp r0, 0x2
- beq _08080A24
- b _08080A36
-_080809FA:
- bl sub_8083664
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- b _08080A1C
-_08080A06:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _08080A36
- bl pal_fill_for_map_transition
-_08080A1C:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08080A36
-_08080A24:
- bl sub_8080E70
- cmp r0, 0x1
- bne _08080A36
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_08080A36:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end task_mpl_807DD60
-
- thumb_func_start sub_8080A3C
-sub_8080A3C: @ 8080A3C
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053E90
- bl palette_bg_fill_black
- ldr r0, _08080A58 @ =task_mpl_807DD60
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080A58: .4byte task_mpl_807DD60
- thumb_func_end sub_8080A3C
-
- thumb_func_start sub_8080A5C
-sub_8080A5C: @ 8080A5C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08080A80 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08080A90
- cmp r0, 0x1
- bgt _08080A84
- cmp r0, 0
- beq _08080A8A
- b _08080ABC
- .align 2, 0
-_08080A80: .4byte gTasks
-_08080A84:
- cmp r0, 0x2
- beq _08080AA6
- b _08080ABC
-_08080A8A:
- bl sub_80084A4
- b _08080A9E
-_08080A90:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08080ABC
- bl pal_fill_for_map_transition
-_08080A9E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08080ABC
-_08080AA6:
- bl sub_8080E70
- cmp r0, 0x1
- bne _08080ABC
- bl sub_8007B14
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_08080ABC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8080A5C
-
- thumb_func_start sub_8080AC4
-sub_8080AC4: @ 8080AC4
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053E90
- bl palette_bg_fill_black
- ldr r0, _08080AE0 @ =sub_8080A5C
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080AE0: .4byte sub_8080A5C
- thumb_func_end sub_8080AC4
-
- thumb_func_start sub_8080AE4
-sub_8080AE4: @ 8080AE4
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08080B1C
- ldr r1, _08080B18 @ =sub_8080B9C
- b _08080B2E
- .align 2, 0
-_08080B18: .4byte sub_8080B9C
-_08080B1C:
- adds r0, r4, 0
- bl MetatileBehavior_IsNonAnimDoor
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08080B40 @ =task_map_chg_seq_0807E2CC
- cmp r0, 0x1
- bne _08080B2E
- ldr r1, _08080B44 @ =task_map_chg_seq_0807E20C
-_08080B2E:
- adds r0, r1, 0
- movs r1, 0xA
- bl CreateTask
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08080B40: .4byte task_map_chg_seq_0807E2CC
-_08080B44: .4byte task_map_chg_seq_0807E20C
- thumb_func_end sub_8080AE4
-
- thumb_func_start mapldr_default
-mapldr_default: @ 8080B48
- push {lr}
- bl sub_8053E90
- bl pal_fill_for_map_transition
- bl sub_8080AE4
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- thumb_func_end mapldr_default
-
- thumb_func_start sub_8080B60
-sub_8080B60: @ 8080B60
- push {lr}
- bl sub_8053E90
- bl pal_fill_black
- bl sub_8080AE4
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- thumb_func_end sub_8080B60
-
- thumb_func_start sub_8080B78
-sub_8080B78: @ 8080B78
- push {lr}
- bl sub_8053E90
- bl pal_fill_for_map_transition
- movs r0, 0x2E
- bl PlaySE
- ldr r0, _08080B98 @ =task_map_chg_seq_0807E2CC
- movs r1, 0xA
- bl CreateTask
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .align 2, 0
-_08080B98: .4byte task_map_chg_seq_0807E2CC
- thumb_func_end sub_8080B78
-
- thumb_func_start sub_8080B9C
-sub_8080B9C: @ 8080B9C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08080BC8 @ =gTasks
- adds r5, r0, r1
- adds r6, r5, 0
- adds r6, 0xC
- adds r7, r5, 0
- adds r7, 0xE
- movs r2, 0x8
- ldrsh r0, [r5, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bhi _08080CAE
- lsls r0, 2
- ldr r1, _08080BCC @ =_08080BD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08080BC8: .4byte gTasks
-_08080BCC: .4byte _08080BD0
- .align 2, 0
-_08080BD0:
- .4byte _08080BE4
- .4byte _08080C08
- .4byte _08080C40
- .4byte _08080C84
- .4byte _08080CA4
-_08080BE4:
- movs r0, 0
- bl sub_8080958
- bl FreezeMapObjects
- adds r0, r6, 0
- adds r1, r7, 0
- bl PlayerGetDestCoords
- movs r1, 0
- ldrsh r0, [r6, r1]
- movs r2, 0
- ldrsh r1, [r7, r2]
- bl FieldSetDoorOpened
- movs r0, 0x1
- strh r0, [r5, 0x8]
- b _08080CAE
-_08080C08:
- bl sub_8080E70
- cmp r0, 0
- beq _08080CAE
- movs r0, 0x1
- bl sub_8080958
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08080C3C @ =gMapObjects
- adds r0, r1
- movs r1, 0x8
- bl FieldObjectSetSpecialAnim
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _08080CAE
- .align 2, 0
-_08080C3C: .4byte gMapObjects
-_08080C40:
- bl walkrun_is_standing_still
- lsls r0, 24
- cmp r0, 0
- beq _08080CAE
- movs r1, 0
- ldrsh r0, [r6, r1]
- movs r2, 0
- ldrsh r1, [r7, r2]
- bl FieldAnimateDoorClose
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08080C80 @ =gMapObjects
- adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _08080CAE
- .align 2, 0
-_08080C80: .4byte gMapObjects
-_08080C84:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- blt _08080C9A
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _08080CAE
-_08080C9A:
- bl UnfreezeMapObjects
- movs r0, 0x4
- strh r0, [r5, 0x8]
- b _08080CAE
-_08080CA4:
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
-_08080CAE:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8080B9C
-
- thumb_func_start task_map_chg_seq_0807E20C
-task_map_chg_seq_0807E20C: @ 8080CB4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08080CE0 @ =gTasks
- adds r5, r0, r1
- adds r6, r5, 0
- adds r6, 0xC
- adds r7, r5, 0
- adds r7, 0xE
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _08080D06
- cmp r0, 0x1
- bgt _08080CE4
- cmp r0, 0
- beq _08080CEE
- b _08080D6E
- .align 2, 0
-_08080CE0: .4byte gTasks
-_08080CE4:
- cmp r0, 0x2
- beq _08080D50
- cmp r0, 0x3
- beq _08080D64
- b _08080D6E
-_08080CEE:
- movs r0, 0
- bl sub_8080958
- bl FreezeMapObjects
- adds r0, r6, 0
- adds r1, r7, 0
- bl PlayerGetDestCoords
- movs r0, 0x1
- strh r0, [r5, 0x8]
- b _08080D6E
-_08080D06:
- bl sub_8080E70
- cmp r0, 0
- beq _08080D6E
- movs r0, 0x1
- bl sub_8080958
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08080D4C @ =gMapObjects
- adds r4, r0
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- bl GetGoSpeed0AnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetSpecialAnim
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _08080D6E
- .align 2, 0
-_08080D4C: .4byte gMapObjects
-_08080D50:
- bl walkrun_is_standing_still
- lsls r0, 24
- cmp r0, 0
- beq _08080D6E
- bl UnfreezeMapObjects
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _08080D6E
-_08080D64:
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
-_08080D6E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task_map_chg_seq_0807E20C
-
- thumb_func_start task_map_chg_seq_0807E2CC
-task_map_chg_seq_0807E2CC: @ 8080D74
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08080D94 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08080D98
- cmp r0, 0x1
- beq _08080DA8
- b _08080DBE
- .align 2, 0
-_08080D94: .4byte gTasks
-_08080D98:
- bl FreezeMapObjects
- bl ScriptContext2_Enable
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08080DBE
-_08080DA8:
- bl sub_8080E70
- cmp r0, 0
- beq _08080DBE
- bl UnfreezeMapObjects
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_08080DBE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end task_map_chg_seq_0807E2CC
-
- thumb_func_start sub_8080DC4
-sub_8080DC4: @ 8080DC4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8080E70
- cmp r0, 0x1
- bne _08080DE0
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, _08080DE8 @ =sub_80712B4
- movs r1, 0x50
- bl CreateTask
-_08080DE0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08080DE8: .4byte sub_80712B4
- thumb_func_end sub_8080DC4
-
- thumb_func_start atk17_seteffectuser
-atk17_seteffectuser: @ 8080DEC
- push {lr}
- bl pal_fill_black
- ldr r0, _08080E00 @ =sub_8080DC4
- bl CreateStartMenuTask
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .align 2, 0
-_08080E00: .4byte sub_8080DC4
- thumb_func_end atk17_seteffectuser
-
- thumb_func_start task_mpl_807E3C8
-task_mpl_807E3C8: @ 8080E04
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8080E70
- cmp r0, 0x1
- bne _08080E20
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
- bl sub_8064E2C
-_08080E20:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task_mpl_807E3C8
-
- thumb_func_start sub_8080E28
-sub_8080E28: @ 8080E28
- push {lr}
- bl ScriptContext2_Enable
- bl pal_fill_black
- ldr r0, _08080E40 @ =task_mpl_807E3C8
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080E40: .4byte task_mpl_807E3C8
- thumb_func_end sub_8080E28
-
- thumb_func_start sub_8080E44
-sub_8080E44: @ 8080E44
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053E90
- bl pal_fill_black
- ldr r0, _08080E60 @ =task_mpl_807E3C8
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080E60: .4byte task_mpl_807E3C8
- thumb_func_end sub_8080E44
-
- thumb_func_start sub_8080E64
-sub_8080E64: @ 8080E64
- ldr r0, _08080E6C @ =gPaletteFade
- ldrb r0, [r0, 0x7]
- lsrs r0, 7
- bx lr
- .align 2, 0
-_08080E6C: .4byte gPaletteFade
- thumb_func_end sub_8080E64
-
- thumb_func_start sub_8080E70
-sub_8080E70: @ 8080E70
- push {lr}
- bl sub_807D770
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08080E82
- movs r0, 0
- b _08080E84
-_08080E82:
- movs r0, 0x1
-_08080E84:
- pop {r1}
- bx r1
- thumb_func_end sub_8080E70
-
- thumb_func_start sub_8080E88
-sub_8080E88: @ 8080E88
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- bl PlayRainSoundEffect
- movs r0, 0x9
- bl PlaySE
- ldr r0, _08080EB4 @ =gFieldCallback
- ldr r1, _08080EB8 @ =mapldr_default
- str r1, [r0]
- ldr r0, _08080EBC @ =task0A_fade_n_map_maybe
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080EB4: .4byte gFieldCallback
-_08080EB8: .4byte mapldr_default
-_08080EBC: .4byte task0A_fade_n_map_maybe
- thumb_func_end sub_8080E88
-
- thumb_func_start sp13E_warp_to_last_warp
-sp13E_warp_to_last_warp: @ 8080EC0
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- bl PlayRainSoundEffect
- ldr r0, _08080EE4 @ =gFieldCallback
- ldr r1, _08080EE8 @ =mapldr_default
- str r1, [r0]
- ldr r0, _08080EEC @ =task0A_fade_n_map_maybe
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080EE4: .4byte gFieldCallback
-_08080EE8: .4byte mapldr_default
-_08080EEC: .4byte task0A_fade_n_map_maybe
- thumb_func_end sp13E_warp_to_last_warp
-
- thumb_func_start sub_8080EF0
-sub_8080EF0: @ 8080EF0
- push {lr}
- bl ScriptContext2_Enable
- ldr r0, _08080F08 @ =gFieldCallback
- ldr r1, _08080F0C @ =mapldr_default
- str r1, [r0]
- ldr r0, _08080F10 @ =sub_808115C
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080F08: .4byte gFieldCallback
-_08080F0C: .4byte mapldr_default
-_08080F10: .4byte sub_808115C
- thumb_func_end sub_8080EF0
-
- thumb_func_start sp13F_fall_to_last_warp
-sp13F_fall_to_last_warp: @ 8080F14
- push {lr}
- bl sp13E_warp_to_last_warp
- ldr r1, _08080F24 @ =gFieldCallback
- ldr r0, _08080F28 @ =sub_8086748
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08080F24: .4byte gFieldCallback
-_08080F28: .4byte sub_8086748
- thumb_func_end sp13F_fall_to_last_warp
-
- thumb_func_start sub_8080F2C
-sub_8080F2C: @ 8080F2C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl ScriptContext2_Enable
- adds r0, r4, 0
- movs r1, 0xA
- bl sub_8086A2C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8080F2C
-
- thumb_func_start sub_8080F48
-sub_8080F48: @ 8080F48
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0xA
- bl sub_80871B8
- pop {r0}
- bx r0
- thumb_func_end sub_8080F48
-
- thumb_func_start sub_8080F58
-sub_8080F58: @ 8080F58
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0xA
- bl sub_8087654
- pop {r0}
- bx r0
- thumb_func_end sub_8080F58
-
- thumb_func_start sub_8080F68
-sub_8080F68: @ 8080F68
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- movs r0, 0x2D
- bl PlaySE
- ldr r0, _08080F90 @ =task0A_fade_n_map_maybe
- movs r1, 0xA
- bl CreateTask
- ldr r1, _08080F94 @ =gFieldCallback
- ldr r0, _08080F98 @ =sub_8080B78
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08080F90: .4byte task0A_fade_n_map_maybe
-_08080F94: .4byte gFieldCallback
-_08080F98: .4byte sub_8080B78
- thumb_func_end sub_8080F68
-
- thumb_func_start sub_8080F9C
-sub_8080F9C: @ 8080F9C
- push {lr}
- bl ScriptContext2_Enable
- bl fade_8080918
- ldr r0, _08080FB8 @ =task0A_fade_n_map_maybe
- movs r1, 0xA
- bl CreateTask
- ldr r1, _08080FBC @ =gFieldCallback
- ldr r0, _08080FC0 @ =sub_80C791C
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08080FB8: .4byte task0A_fade_n_map_maybe
-_08080FBC: .4byte gFieldCallback
-_08080FC0: .4byte sub_80C791C
- thumb_func_end sub_8080F9C
-
- thumb_func_start sub_8080FC4
-sub_8080FC4: @ 8080FC4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08080FE8 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08080FF8
- cmp r0, 0x1
- bgt _08080FEC
- cmp r0, 0
- beq _08080FF2
- b _08081022
- .align 2, 0
-_08080FE8: .4byte gTasks
-_08080FEC:
- cmp r0, 0x2
- beq _08081012
- b _08081022
-_08080FF2:
- bl ScriptContext2_Enable
- b _0808100A
-_08080FF8:
- bl sub_8080E64
- cmp r0, 0
- bne _08081022
- bl sub_8054034
- lsls r0, 24
- cmp r0, 0
- beq _08081022
-_0808100A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08081022
-_08081012:
- bl warp_in
- ldr r0, _08081028 @ =sub_8054588
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_08081022:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08081028: .4byte sub_8054588
- thumb_func_end sub_8080FC4
-
- thumb_func_start sub_808102C
-sub_808102C: @ 808102C
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- movs r0, 0x9
- bl PlaySE
- ldr r0, _0808104C @ =sub_8080FC4
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0808104C: .4byte sub_8080FC4
- thumb_func_end sub_808102C
-
- thumb_func_start sub_8081050
-sub_8081050: @ 8081050
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08081074 @ =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08081096
- cmp r0, 0x1
- bgt _08081078
- cmp r0, 0
- beq _0808107E
- b _080810CC
- .align 2, 0
-_08081074: .4byte gTasks + 0x8
-_08081078:
- cmp r0, 0x2
- beq _080810B4
- b _080810CC
-_0808107E:
- bl ClearLinkCallback_2
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- bl sub_8053FF8
- movs r0, 0x9
- bl PlaySE
- b _080810AC
-_08081096:
- bl sub_8080E64
- cmp r0, 0
- bne _080810CC
- bl sub_8054034
- lsls r0, 24
- cmp r0, 0
- beq _080810CC
- bl sub_800832C
-_080810AC:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080810CC
-_080810B4:
- ldr r0, _080810D4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080810CC
- bl warp_in
- ldr r0, _080810D8 @ =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_080810CC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080810D4: .4byte gReceivedRemoteLinkPlayers
-_080810D8: .4byte CB2_LoadMap
- thumb_func_end sub_8081050
-
- thumb_func_start sub_80810DC
-sub_80810DC: @ 80810DC
- push {lr}
- ldr r0, _080810EC @ =sub_8081050
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080810EC: .4byte sub_8081050
- thumb_func_end sub_80810DC
-
- thumb_func_start task0A_fade_n_map_maybe
-task0A_fade_n_map_maybe: @ 80810F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08081114 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08081128
- cmp r0, 0x1
- bgt _08081118
- cmp r0, 0
- beq _0808111E
- b _08081152
- .align 2, 0
-_08081114: .4byte gTasks
-_08081118:
- cmp r0, 0x2
- beq _08081142
- b _08081152
-_0808111E:
- bl FreezeMapObjects
- bl ScriptContext2_Enable
- b _0808113A
-_08081128:
- bl sub_8080E64
- cmp r0, 0
- bne _08081152
- bl sub_8054034
- lsls r0, 24
- cmp r0, 0
- beq _08081152
-_0808113A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08081152
-_08081142:
- bl warp_in
- ldr r0, _08081158 @ =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_08081152:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08081158: .4byte CB2_LoadMap
- thumb_func_end task0A_fade_n_map_maybe
-
- thumb_func_start sub_808115C
-sub_808115C: @ 808115C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0808118C @ =gTasks
- adds r5, r1, r0
- adds r4, r5, 0
- adds r4, 0xC
- adds r6, r5, 0
- adds r6, 0xE
- movs r2, 0x8
- ldrsh r1, [r5, r2]
- adds r2, r0, 0
- cmp r1, 0x4
- bls _08081180
- b _080812BC
-_08081180:
- lsls r0, r1, 2
- ldr r1, _08081190 @ =_08081194
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0808118C: .4byte gTasks
-_08081190: .4byte _08081194
- .align 2, 0
-_08081194:
- .4byte _080811A8
- .4byte _080811E4
- .4byte _08081240
- .4byte _0808128C
- .4byte _080812A8
-_080811A8:
- bl FreezeMapObjects
- adds r0, r4, 0
- adds r1, r6, 0
- bl PlayerGetDestCoords
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0
- ldrsh r1, [r6, r2]
- subs r1, 0x1
- bl sub_8058790
- lsls r0, 16
- lsrs r0, 16
- bl PlaySE
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0
- ldrsh r1, [r6, r2]
- subs r1, 0x1
- bl FieldAnimateDoorOpen
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0x1
- strh r0, [r5, 0x8]
- b _080812BC
-_080811E4:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- blt _080811FA
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _080812BC
-_080811FA:
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r4, _0808123C @ =gMapObjects
- adds r0, r4
- bl FieldObjectClearAnimIfSpecialAnimActive
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x9
- bl FieldObjectSetSpecialAnim
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _080812BC
- .align 2, 0
-_0808123C: .4byte gMapObjects
-_08081240:
- bl walkrun_is_standing_still
- lsls r0, 24
- cmp r0, 0
- beq _080812BC
- movs r2, 0
- ldrsh r0, [r4, r2]
- movs r2, 0
- ldrsh r1, [r6, r2]
- subs r1, 0x1
- bl FieldAnimateDoorClose
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08081288 @ =gMapObjects
- adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
- movs r0, 0
- bl sub_8080958
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _080812BC
- .align 2, 0
-_08081288: .4byte gMapObjects
-_0808128C:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- blt _080812A2
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _080812BC
-_080812A2:
- movs r0, 0x4
- strh r0, [r5, 0x8]
- b _080812BC
-_080812A8:
- bl sub_8053FF8
- bl fade_8080918
- bl PlayRainSoundEffect
- movs r0, 0
- strh r0, [r5, 0x8]
- ldr r0, _080812C4 @ =task0A_fade_n_map_maybe
- str r0, [r5]
-_080812BC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080812C4: .4byte task0A_fade_n_map_maybe
- thumb_func_end sub_808115C
-
- thumb_func_start sub_80812C8
-sub_80812C8: @ 80812C8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080812EC @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08081300
- cmp r0, 0x1
- bgt _080812F0
- cmp r0, 0
- beq _080812F6
- b _0808132A
- .align 2, 0
-_080812EC: .4byte gTasks
-_080812F0:
- cmp r0, 0x2
- beq _0808131A
- b _0808132A
-_080812F6:
- bl FreezeMapObjects
- bl ScriptContext2_Enable
- b _08081312
-_08081300:
- bl sub_8080E64
- cmp r0, 0
- bne _0808132A
- bl sub_8054034
- lsls r0, 24
- cmp r0, 0
- beq _0808132A
-_08081312:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0808132A
-_0808131A:
- bl warp_in
- ldr r0, _08081330 @ =sub_8054534
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_0808132A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08081330: .4byte sub_8054534
- thumb_func_end sub_80812C8
-
- thumb_func_start sub_8081334
-sub_8081334: @ 8081334
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- bl PlayRainSoundEffect
- movs r0, 0x9
- bl PlaySE
- ldr r0, _08081360 @ =gFieldCallback
- ldr r1, _08081364 @ =sub_8080B60
- str r1, [r0]
- ldr r0, _08081368 @ =sub_80812C8
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08081360: .4byte gFieldCallback
-_08081364: .4byte sub_8080B60
-_08081368: .4byte sub_80812C8
- thumb_func_end sub_8081334
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s
deleted file mode 100644
index 4fbfae1a2..000000000
--- a/asm/field_screen_effect.s
+++ /dev/null
@@ -1,789 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_808136C
-sub_808136C: @ 808136C
- push {lr}
- cmp r1, 0xA0
- bhi _08081394
- cmp r2, 0
- bge _08081378
- movs r2, 0
-_08081378:
- cmp r2, 0xFF
- ble _0808137E
- movs r2, 0xFF
-_0808137E:
- cmp r3, 0
- bge _08081384
- movs r3, 0
-_08081384:
- cmp r3, 0xFF
- ble _0808138A
- movs r3, 0xFF
-_0808138A:
- lsls r1, 1
- adds r1, r0
- lsls r0, r2, 8
- orrs r0, r3
- strh r0, [r1]
-_08081394:
- pop {r0}
- bx r0
- thumb_func_end sub_808136C
-
- thumb_func_start sub_8081398
-sub_8081398: @ 8081398
- 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 _08081414
-_080813B4:
- 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_808136C
- mov r0, r9
- adds r1, r0, r7
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_808136C
- 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_808136C
- mov r0, r9
- adds r1, r0, r6
- ldr r0, [sp]
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_808136C
- mov r1, r8
- adds r1, 0x1
- lsls r0, r7, 1
- subs r1, r0
- mov r8, r1
- adds r7, 0x1
- cmp r1, 0
- bge _08081410
- subs r1, r6, 0x1
- lsls r0, r1, 1
- add r8, r0
- adds r6, r1, 0
-_08081410:
- cmp r6, r7
- bge _080813B4
-_08081414:
- 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_8081398
-
- thumb_func_start sub_8081424
-sub_8081424: @ 8081424
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08081448 @ =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08081480
- cmp r0, 0x1
- bgt _0808144C
- cmp r0, 0
- beq _08081452
- b _080814E2
- .align 2, 0
-_08081448: .4byte gTasks + 0x8
-_0808144C:
- cmp r0, 0x2
- beq _080814D8
- b _080814E2
-_08081452:
- ldr r0, _08081478 @ =gUnknown_03004DC0
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _0808147C @ =gUnknown_03004DE0
- 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_8081398
- movs r0, 0x1
- strh r0, [r4]
- b _080814E2
- .align 2, 0
-_08081478: .4byte gUnknown_03004DC0
-_0808147C: .4byte gUnknown_03004DE0
-_08081480:
- ldr r0, _080814C8 @ =gUnknown_03004DC0
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _080814CC @ =gUnknown_03004DE0
- 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_8081398
- 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 _080814E2
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0x1
- bne _080814D0
- bl remove_some_task
- movs r0, 0x2
- strh r0, [r4]
- b _080814E2
- .align 2, 0
-_080814C8: .4byte gUnknown_03004DC0
-_080814CC: .4byte gUnknown_03004DE0
-_080814D0:
- adds r0, r5, 0
- bl DestroyTask
- b _080814E2
-_080814D8:
- bl dp12_8087EA4
- adds r0, r5, 0
- bl DestroyTask
-_080814E2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8081424
-
- thumb_func_start sub_80814E8
-sub_80814E8: @ 80814E8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808150C @ =sub_8081424
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08081504
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_08081504:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808150C: .4byte sub_8081424
- thumb_func_end sub_80814E8
-
- thumb_func_start sub_8081510
-sub_8081510: @ 8081510
- push {r4,lr}
- ldr r4, _08081530 @ =sub_80814E8
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08081528
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
-_08081528:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08081530: .4byte sub_80814E8
- thumb_func_end sub_8081510
-
- thumb_func_start sub_8081534
-sub_8081534: @ 8081534
- 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, _08081578 @ =sub_8081424
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _0808157C @ =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 _08081580
- strh r7, [r1, 0xA]
- b _08081584
- .align 2, 0
-_08081578: .4byte sub_8081424
-_0808157C: .4byte gTasks + 0x8
-_08081580:
- negs r0, r7
- strh r0, [r1, 0xA]
-_08081584:
- adds r0, r2, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8081534
-
- thumb_func_start sub_8081594
-sub_8081594: @ 8081594
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- bl sav1_get_flash_used_on_map
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- cmp r4, 0
- bne _080815AE
- movs r5, 0x1
-_080815AE:
- ldr r1, _080815DC @ =gUnknown_0839ACDC
- 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_8081534
- bl sub_8081510
- bl ScriptContext2_Enable
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080815DC: .4byte gUnknown_0839ACDC
- thumb_func_end sub_8081594
-
- thumb_func_start sub_80815E0
-sub_80815E0: @ 80815E0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0808160E
- ldr r4, _08081614 @ =gUnknown_03004DE0
- ldr r1, _08081618 @ =gUnknown_0839ACDC
- lsls r0, 1
- adds r0, r1
- ldrh r3, [r0]
- adds r0, r4, 0
- movs r1, 0x78
- movs r2, 0x50
- bl sub_8081398
- movs r0, 0xF0
- lsls r0, 3
- adds r1, r4, r0
- movs r2, 0xF0
- lsls r2, 1
- adds r0, r4, 0
- bl CpuFastSet
-_0808160E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08081614: .4byte gUnknown_03004DE0
-_08081618: .4byte gUnknown_0839ACDC
- thumb_func_end sub_80815E0
-
- thumb_func_start sub_808161C
-sub_808161C: @ 808161C
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- cmp r0, 0
- bne _0808162A
- movs r1, 0x1F
- b _08081630
-_0808162A:
- movs r0, 0xF8
- lsls r0, 7
- adds r1, r0, 0
-_08081630:
- mov r0, sp
- strh r1, [r0]
- movs r5, 0
- movs r4, 0xF0
- lsls r4, 16
-_0808163A:
- 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 _0808163A
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_808161C
-
- thumb_func_start sub_8081658
-sub_8081658: @ 8081658
- push {lr}
- lsls r0, 16
- ldr r2, _08081678 @ =REG_BLDALPHA
- ldrh r1, [r2]
- lsls r1, 24
- lsrs r3, r1, 24
- ldrh r1, [r2]
- lsrs r2, r1, 8
- cmp r0, 0
- beq _0808167C
- cmp r3, 0
- beq _08081686
- subs r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- b _08081686
- .align 2, 0
-_08081678: .4byte REG_BLDALPHA
-_0808167C:
- cmp r2, 0xF
- bhi _08081686
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_08081686:
- ldr r1, _0808169C @ =REG_BLDALPHA
- lsls r0, r2, 8
- orrs r0, r3
- strh r0, [r1]
- cmp r3, 0
- bne _080816A0
- cmp r2, 0x10
- bne _080816A0
- movs r0, 0x1
- b _080816A2
- .align 2, 0
-_0808169C: .4byte REG_BLDALPHA
-_080816A0:
- movs r0, 0
-_080816A2:
- pop {r1}
- bx r1
- thumb_func_end sub_8081658
-
- thumb_func_start sub_80816A8
-sub_80816A8: @ 80816A8
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080816D0 @ =gTasks + 0x8
- adds r7, r0, r1
- movs r1, 0
- ldrsh r0, [r7, r1]
- cmp r0, 0x7
- bls _080816C4
- b _08081892
-_080816C4:
- lsls r0, 2
- ldr r1, _080816D4 @ =_080816D8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080816D0: .4byte gTasks + 0x8
-_080816D4: .4byte _080816D8
- .align 2, 0
-_080816D8:
- .4byte _080816F8
- .4byte _08081790
- .4byte _080817BC
- .4byte _080817D8
- .4byte _080817EE
- .4byte _08081852
- .4byte _08081818
- .4byte _08081826
-_080816F8:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- strh r0, [r7, 0xC]
- ldr r3, _0808176C @ =REG_BLDCNT
- ldrh r0, [r3]
- strh r0, [r7, 0xE]
- ldr r6, _08081770 @ =REG_BLDALPHA
- ldrh r0, [r6]
- strh r0, [r7, 0x10]
- ldr r5, _08081774 @ =REG_WININ
- ldrh r0, [r5]
- strh r0, [r7, 0x12]
- ldr r4, _08081778 @ =REG_WINOUT
- ldrh r0, [r4]
- strh r0, [r7, 0x14]
- ldrh r1, [r2]
- ldr r0, _0808177C @ =0x0000bfff
- ands r0, r1
- strh r0, [r2]
- ldr r1, _08081780 @ =gUnknown_081E29E8
- ldrh r0, [r3]
- ldrh r1, [r1]
- orrs r0, r1
- strh r0, [r3]
- ldr r2, _08081784 @ =0x0000070c
- adds r0, r2, 0
- strh r0, [r6]
- movs r0, 0x3F
- strh r0, [r5]
- movs r0, 0x1E
- strh r0, [r4]
- ldr r4, _08081788 @ =gUnknown_03004DE0
- movs r0, 0x4
- ldrsh r1, [r7, r0]
- movs r0, 0x6
- ldrsh r2, [r7, r0]
- adds r0, r4, 0
- movs r3, 0x1
- bl sub_8081398
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r4, r2
- movs r2, 0xF0
- lsls r2, 1
- adds r0, r4, 0
- bl CpuFastSet
- ldr r2, _0808178C @ =gUnknown_0839ACEC
- ldr r0, [r2]
- ldr r1, [r2, 0x4]
- ldr r2, [r2, 0x8]
- bl sub_80895F8
- movs r0, 0x1
- strh r0, [r7]
- b _08081892
- .align 2, 0
-_0808176C: .4byte REG_BLDCNT
-_08081770: .4byte REG_BLDALPHA
-_08081774: .4byte REG_WININ
-_08081778: .4byte REG_WINOUT
-_0808177C: .4byte 0x0000bfff
-_08081780: .4byte gUnknown_081E29E8
-_08081784: .4byte 0x0000070c
-_08081788: .4byte gUnknown_03004DE0
-_0808178C: .4byte gUnknown_0839ACEC
-_08081790:
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuFillWindowRectWithBlankTile
- ldrb r0, [r7, 0x2]
- bl sub_808161C
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- movs r2, 0x6
- ldrsh r1, [r7, r2]
- movs r2, 0x1
- str r2, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- movs r3, 0xA0
- bl sub_8081534
- strh r4, [r7]
- b _08081892
-_080817BC:
- ldr r0, _080817D4 @ =sub_8081424
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _08081892
- bl EnableBothScriptContexts
- movs r0, 0x3
- strh r0, [r7]
- b _08081892
- .align 2, 0
-_080817D4: .4byte sub_8081424
-_080817D8:
- bl InstallCameraPanAheadCallback
- movs r0, 0
- bl SetCameraPanningCallback
- movs r0, 0
- strh r0, [r7, 0xA]
- movs r0, 0x4
- strh r0, [r7, 0x8]
- strh r0, [r7]
- b _08081892
-_080817EE:
- ldrh r0, [r7, 0x8]
- subs r0, 0x1
- strh r0, [r7, 0x8]
- lsls r0, 16
- cmp r0, 0
- bne _08081892
- movs r0, 0x4
- strh r0, [r7, 0x8]
- ldrh r0, [r7, 0xA]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r7, 0xA]
- movs r1, 0x4
- negs r1, r1
- cmp r0, 0
- beq _08081810
- movs r1, 0x4
-_08081810:
- movs r0, 0
- bl SetCameraPanning
- b _08081892
-_08081818:
- bl InstallCameraPanAheadCallback
- movs r0, 0x8
- strh r0, [r7, 0x8]
- movs r0, 0x7
- strh r0, [r7]
- b _08081892
-_08081826:
- ldrh r0, [r7, 0x8]
- subs r0, 0x1
- strh r0, [r7, 0x8]
- lsls r0, 16
- cmp r0, 0
- bne _08081892
- movs r0, 0x8
- strh r0, [r7, 0x8]
- ldrh r0, [r7, 0xA]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r7, 0xA]
- ldrh r0, [r7, 0xA]
- bl sub_8081658
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08081892
- movs r0, 0x5
- strh r0, [r7]
- b _08081892
-_08081852:
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r0, _0808189C @ =gWindowConfig_81E6CE4
- bl LoadFontDefaultPalette
- ldr r1, _080818A0 @ =REG_WIN0H
- movs r0, 0xFF
- strh r0, [r1]
- subs r1, 0x40
- ldrh r0, [r7, 0xC]
- strh r0, [r1]
- adds r1, 0x50
- ldrh r0, [r7, 0xE]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r7, 0x10]
- strh r0, [r1]
- subs r1, 0xA
- ldrh r0, [r7, 0x12]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r7, 0x14]
- strh r0, [r1]
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_08081892:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808189C: .4byte gWindowConfig_81E6CE4
-_080818A0: .4byte REG_WIN0H
- thumb_func_end sub_80816A8
-
- thumb_func_start sub_80818A4
-sub_80818A4: @ 80818A4
- push {lr}
- ldr r0, _080818CC @ =sub_80816A8
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080818D0 @ =gTasks + 0x8
- adds r1, r0
- ldr r0, _080818D4 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080818D8
- strh r0, [r1, 0x2]
- movs r0, 0x68
- b _080818F0
- .align 2, 0
-_080818CC: .4byte sub_80816A8
-_080818D0: .4byte gTasks + 0x8
-_080818D4: .4byte gScriptResult
-_080818D8:
- cmp r0, 0x1
- bne _080818E2
- strh r0, [r1, 0x2]
- movs r0, 0x68
- b _080818F0
-_080818E2:
- cmp r0, 0x2
- bne _080818EA
- movs r0, 0
- b _080818EC
-_080818EA:
- movs r0, 0x1
-_080818EC:
- strh r0, [r1, 0x2]
- movs r0, 0x78
-_080818F0:
- strh r0, [r1, 0x4]
- movs r0, 0x50
- strh r0, [r1, 0x6]
- pop {r0}
- bx r0
- thumb_func_end sub_80818A4
-
- thumb_func_start sub_80818FC
-sub_80818FC: @ 80818FC
- push {lr}
- ldr r0, _0808191C @ =sub_80816A8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08081920 @ =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
- .align 2, 0
-_0808191C: .4byte sub_80816A8
-_08081920: .4byte gTasks
- thumb_func_end sub_80818FC
-
- thumb_func_start sub_8081924
-sub_8081924: @ 8081924
- push {lr}
- bl sub_8054044
- ldr r0, _08081938 @ =task50_0807F0C8
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08081938: .4byte task50_0807F0C8
- thumb_func_end sub_8081924
-
- thumb_func_start task50_0807F0C8
-task50_0807F0C8: @ 808193C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8054034
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08081958
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_08081958:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task50_0807F0C8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s
deleted file mode 100644
index dcd485d9f..000000000
--- a/asm/fldeff_flash.s
+++ /dev/null
@@ -1,753 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetUpFieldMove_Flash
-SetUpFieldMove_Flash: @ 810CBB4
- push {lr}
- ldr r0, _0810CBDC @ =gMapHeader
- ldrb r0, [r0, 0x15]
- cmp r0, 0x1
- bne _0810CBF4
- ldr r0, _0810CBE0 @ =0x00000828
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _0810CBF4
- ldr r1, _0810CBE4 @ =gFieldCallback
- ldr r0, _0810CBE8 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0810CBEC @ =gUnknown_03005CE4
- ldr r0, _0810CBF0 @ =sub_810CBFC
- str r0, [r1]
- movs r0, 0x1
- b _0810CBF6
- .align 2, 0
-_0810CBDC: .4byte gMapHeader
-_0810CBE0: .4byte 0x00000828
-_0810CBE4: .4byte gFieldCallback
-_0810CBE8: .4byte sub_808AB90
-_0810CBEC: .4byte gUnknown_03005CE4
-_0810CBF0: .4byte sub_810CBFC
-_0810CBF4:
- movs r0, 0
-_0810CBF6:
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Flash
-
- thumb_func_start sub_810CBFC
-sub_810CBFC: @ 810CBFC
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810CC24 @ =gUnknown_0202FF84
- ldr r1, _0810CC28 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- str r1, [r2]
- ldr r2, _0810CC2C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, _0810CC30 @ =sub_810CC34
- lsrs r0, r2, 16
- strh r0, [r1, 0x18]
- strh r2, [r1, 0x1A]
- pop {r0}
- bx r0
- .align 2, 0
-_0810CC24: .4byte gUnknown_0202FF84
-_0810CC28: .4byte gLastFieldPokeMenuOpened
-_0810CC2C: .4byte gTasks
-_0810CC30: .4byte sub_810CC34
- thumb_func_end sub_810CBFC
-
- thumb_func_start sub_810CC34
-sub_810CC34: @ 810CC34
- push {lr}
- movs r0, 0xCF
- bl PlaySE
- ldr r0, _0810CC4C @ =0x00000828
- bl FlagSet
- ldr r0, _0810CC50 @ =gUnknown_081B694A
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .align 2, 0
-_0810CC4C: .4byte 0x00000828
-_0810CC50: .4byte gUnknown_081B694A
- thumb_func_end sub_810CC34
-
- thumb_func_start sub_810CC54
-sub_810CC54: @ 810CC54
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_810CC54
-
- thumb_func_start sub_810CC6C
-sub_810CC6C: @ 810CC6C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_810CC6C
-
- thumb_func_start sub_810CC80
-sub_810CC80: @ 810CC80
- push {r4,lr}
- sub sp, 0x8
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- adds r0, 0xC
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x10
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- mov r0, sp
- strh r1, [r0]
- ldr r1, _0810CD34 @ =0x040000d4
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _0810CD38 @ =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r4, 0
- str r4, [sp, 0x4]
- add r0, sp, 0x4
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, _0810CD3C @ =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- mov r0, sp
- strh r4, [r0]
- str r0, [r1]
- ldr r0, _0810CD40 @ =0x05000002
- str r0, [r1, 0x4]
- ldr r0, _0810CD44 @ =0x810001ff
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- bl ResetTasks
- bl ResetSpriteData
- ldr r3, _0810CD48 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _0810CD4C @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r0, _0810CD50 @ =sub_810CC6C
- bl SetVBlankCallback
- ldr r0, _0810CD54 @ =sub_810CC54
- bl SetMainCallback2
- bl sub_810CD5C
- lsls r0, 24
- cmp r0, 0
- bne _0810CD2A
- ldr r0, _0810CD58 @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_0810CD2A:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810CD34: .4byte 0x040000d4
-_0810CD38: .4byte 0x8100c000
-_0810CD3C: .4byte 0x85000100
-_0810CD40: .4byte 0x05000002
-_0810CD44: .4byte 0x810001ff
-_0810CD48: .4byte 0x04000208
-_0810CD4C: .4byte 0x04000200
-_0810CD50: .4byte sub_810CC6C
-_0810CD54: .4byte sub_810CC54
-_0810CD58: .4byte gMain
- thumb_func_end sub_810CC80
-
- thumb_func_start sub_810CD5C
-sub_810CD5C: @ 810CD5C
- push {r4-r7,lr}
- bl get_map_light_from_warp0
- lsls r0, 24
- lsrs r6, r0, 24
- bl sav1_map_get_light_level
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- ldr r4, _0810CD9C @ =gUnknown_083F7FC4
- ldrb r0, [r4]
- cmp r0, 0
- beq _0810CDB0
- adds r7, r4, 0
- adds r0, r4, 0x4
- mov r12, r0
-_0810CD7E:
- lsls r2, r3, 3
- adds r1, r2, r7
- ldrb r0, [r1]
- cmp r0, r6
- bne _0810CDA0
- ldrb r0, [r1, 0x1]
- cmp r0, r5
- bne _0810CDA0
- mov r1, r12
- adds r0, r2, r1
- ldr r0, [r0]
- bl _call_via_r0
- movs r0, 0x1
- b _0810CDB2
- .align 2, 0
-_0810CD9C: .4byte gUnknown_083F7FC4
-_0810CDA0:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 3
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0810CD7E
-_0810CDB0:
- movs r0, 0
-_0810CDB2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_810CD5C
-
- thumb_func_start sub_810CDB8
-sub_810CDB8: @ 810CDB8
- push {r4-r6,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r5, r0, 24
- lsrs r4, r1, 24
- movs r3, 0
- ldr r1, _0810CDE4 @ =gUnknown_083F7FC4
- ldrb r0, [r1]
- cmp r0, 0
- beq _0810CDF8
- adds r6, r1, 0
-_0810CDCE:
- lsls r0, r3, 3
- adds r2, r0, r6
- ldrb r0, [r2]
- cmp r0, r5
- bne _0810CDE8
- ldrb r0, [r2, 0x1]
- cmp r0, r4
- bne _0810CDE8
- ldrb r0, [r2, 0x2]
- b _0810CDFA
- .align 2, 0
-_0810CDE4: .4byte gUnknown_083F7FC4
-_0810CDE8:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0810CDCE
-_0810CDF8:
- movs r0, 0
-_0810CDFA:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810CDB8
-
- thumb_func_start fade_type_for_given_maplight_pair
-fade_type_for_given_maplight_pair: @ 810CE00
- push {r4-r6,lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r5, r0, 24
- lsrs r4, r1, 24
- movs r3, 0
- ldr r1, _0810CE2C @ =gUnknown_083F7FC4
- ldrb r0, [r1]
- cmp r0, 0
- beq _0810CE40
- adds r6, r1, 0
-_0810CE16:
- lsls r0, r3, 3
- adds r2, r0, r6
- ldrb r0, [r2]
- cmp r0, r5
- bne _0810CE30
- ldrb r0, [r2, 0x1]
- cmp r0, r4
- bne _0810CE30
- ldrb r0, [r2, 0x3]
- b _0810CE42
- .align 2, 0
-_0810CE2C: .4byte gUnknown_083F7FC4
-_0810CE30:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0810CE16
-_0810CE40:
- movs r0, 0
-_0810CE42:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end fade_type_for_given_maplight_pair
-
- thumb_func_start sub_810CE48
-sub_810CE48: @ 810CE48
- push {lr}
- ldr r0, _0810CE58 @ =sub_810CE5C
- movs r1, 0
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0810CE58: .4byte sub_810CE5C
- thumb_func_end sub_810CE48
-
- thumb_func_start sub_810CE5C
-sub_810CE5C: @ 810CE5C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810CE70 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _0810CE74 @ =sub_810CE78
- str r0, [r1]
- bx lr
- .align 2, 0
-_0810CE70: .4byte gTasks
-_0810CE74: .4byte sub_810CE78
- thumb_func_end sub_810CE5C
-
- thumb_func_start sub_810CE78
-sub_810CE78: @ 810CE78
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r6, 0x80
- lsls r6, 19
- movs r5, 0
- strh r5, [r6]
- ldr r0, _0810CEE8 @ =gCaveTransitionTiles
- ldr r1, _0810CEEC @ =0x0600c000
- bl LZ77UnCompVram
- ldr r0, _0810CEF0 @ =gCaveTransitionTilemap
- ldr r1, _0810CEF4 @ =0x0600f800
- bl LZ77UnCompVram
- ldr r0, _0810CEF8 @ =gCaveTransitionPalette_White
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0810CEFC @ =gUnknown_083F809C
- movs r1, 0xE0
- movs r2, 0x10
- bl LoadPalette
- ldr r1, _0810CF00 @ =REG_BLDCNT
- ldr r2, _0810CF04 @ =0x00003e41
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0810CF08 @ =REG_BLDALPHA
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- subs r1, 0x48
- ldr r2, _0810CF0C @ =0x00001f0c
- adds r0, r2, 0
- strh r0, [r1]
- movs r1, 0x8A
- lsls r1, 5
- adds r0, r1, 0
- strh r0, [r6]
- ldr r1, _0810CF10 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0810CF14 @ =sub_810CF18
- str r1, [r0]
- movs r2, 0
- movs r1, 0x10
- strh r1, [r0, 0x8]
- strh r2, [r0, 0xA]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810CEE8: .4byte gCaveTransitionTiles
-_0810CEEC: .4byte 0x0600c000
-_0810CEF0: .4byte gCaveTransitionTilemap
-_0810CEF4: .4byte 0x0600f800
-_0810CEF8: .4byte gCaveTransitionPalette_White
-_0810CEFC: .4byte gUnknown_083F809C
-_0810CF00: .4byte REG_BLDCNT
-_0810CF04: .4byte 0x00003e41
-_0810CF08: .4byte REG_BLDALPHA
-_0810CF0C: .4byte 0x00001f0c
-_0810CF10: .4byte gTasks
-_0810CF14: .4byte sub_810CF18
- thumb_func_end sub_810CE78
-
- thumb_func_start sub_810CF18
-sub_810CF18: @ 810CF18
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810CF44 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r3, r1, r2
- ldrh r2, [r3, 0xA]
- movs r1, 0x80
- lsls r1, 5
- adds r0, r2, r1
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0810CF48 @ =REG_BLDALPHA
- strh r0, [r1]
- cmp r2, 0x10
- bhi _0810CF4C
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- b _0810CF54
- .align 2, 0
-_0810CF44: .4byte gTasks
-_0810CF48: .4byte REG_BLDALPHA
-_0810CF4C:
- movs r0, 0
- strh r0, [r3, 0xC]
- ldr r0, _0810CF58 @ =sub_810CF5C
- str r0, [r3]
-_0810CF54:
- pop {r0}
- bx r0
- .align 2, 0
-_0810CF58: .4byte sub_810CF5C
- thumb_func_end sub_810CF18
-
- thumb_func_start sub_810CF5C
-sub_810CF5C: @ 810CF5C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810CF94 @ =REG_BLDALPHA
- ldr r3, _0810CF98 @ =0x00001010
- adds r1, r3, 0
- strh r1, [r2]
- ldr r2, _0810CF9C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0xC]
- cmp r1, 0x7
- bhi _0810CFA4
- adds r0, r1, 0x1
- strh r0, [r4, 0xC]
- lsls r1, 1
- ldr r0, _0810CFA0 @ =gUnknown_083F809C
- adds r0, r1, r0
- movs r2, 0x10
- subs r2, r1
- lsls r2, 16
- lsrs r2, 16
- movs r1, 0xE0
- bl LoadPalette
- b _0810CFB6
- .align 2, 0
-_0810CF94: .4byte REG_BLDALPHA
-_0810CF98: .4byte 0x00001010
-_0810CF9C: .4byte gTasks
-_0810CFA0: .4byte gUnknown_083F809C
-_0810CFA4:
- ldr r0, _0810CFBC @ =gCaveTransitionPalette_White
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0810CFC0 @ =sub_810CFC4
- str r0, [r4]
- movs r0, 0x8
- strh r0, [r4, 0xC]
-_0810CFB6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810CFBC: .4byte gCaveTransitionPalette_White
-_0810CFC0: .4byte sub_810CFC4
- thumb_func_end sub_810CF5C
-
- thumb_func_start sub_810CFC4
-sub_810CFC4: @ 810CFC4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810CFE4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r2, [r1, 0xC]
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0810CFE8
- subs r0, r2, 0x1
- strh r0, [r1, 0xC]
- b _0810CFF0
- .align 2, 0
-_0810CFE4: .4byte gTasks
-_0810CFE8:
- ldr r0, _0810CFF4 @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_0810CFF0:
- pop {r0}
- bx r0
- .align 2, 0
-_0810CFF4: .4byte gMain
- thumb_func_end sub_810CFC4
-
- thumb_func_start sub_810CFF8
-sub_810CFF8: @ 810CFF8
- push {lr}
- ldr r0, _0810D008 @ =sub_810D00C
- movs r1, 0
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0810D008: .4byte sub_810D00C
- thumb_func_end sub_810CFF8
-
- thumb_func_start sub_810D00C
-sub_810D00C: @ 810D00C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810D020 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _0810D024 @ =sub_810D028
- str r0, [r1]
- bx lr
- .align 2, 0
-_0810D020: .4byte gTasks
-_0810D024: .4byte sub_810D028
- thumb_func_end sub_810D00C
-
- thumb_func_start sub_810D028
-sub_810D028: @ 810D028
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r6, 0x80
- lsls r6, 19
- movs r4, 0
- strh r4, [r6]
- ldr r0, _0810D098 @ =gCaveTransitionTiles
- ldr r1, _0810D09C @ =0x0600c000
- bl LZ77UnCompVram
- ldr r0, _0810D0A0 @ =gCaveTransitionTilemap
- ldr r1, _0810D0A4 @ =0x0600f800
- bl LZ77UnCompVram
- ldr r0, _0810D0A8 @ =REG_BLDCNT
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- ldr r1, _0810D0AC @ =REG_BG0CNT
- ldr r2, _0810D0B0 @ =0x00001f0c
- adds r0, r2, 0
- strh r0, [r1]
- movs r1, 0x8A
- lsls r1, 5
- adds r0, r1, 0
- strh r0, [r6]
- ldr r0, _0810D0B4 @ =gCaveTransitionPalette_White
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0810D0B8 @ =gCaveTransitionPalette_Black
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _0810D0BC @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0810D0C0 @ =sub_810D0C4
- str r1, [r0]
- movs r2, 0
- movs r1, 0x10
- strh r1, [r0, 0x8]
- strh r2, [r0, 0xA]
- strh r2, [r0, 0xC]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810D098: .4byte gCaveTransitionTiles
-_0810D09C: .4byte 0x0600c000
-_0810D0A0: .4byte gCaveTransitionTilemap
-_0810D0A4: .4byte 0x0600f800
-_0810D0A8: .4byte REG_BLDCNT
-_0810D0AC: .4byte REG_BG0CNT
-_0810D0B0: .4byte 0x00001f0c
-_0810D0B4: .4byte gCaveTransitionPalette_White
-_0810D0B8: .4byte gCaveTransitionPalette_Black
-_0810D0BC: .4byte gTasks
-_0810D0C0: .4byte sub_810D0C4
- thumb_func_end sub_810D028
-
- thumb_func_start sub_810D0C4
-sub_810D0C4: @ 810D0C4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810D0F8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r3, r1, r2
- ldrh r1, [r3, 0xC]
- cmp r1, 0xF
- bhi _0810D100
- adds r2, r1, 0x1
- adds r0, r2, 0x1
- strh r0, [r3, 0xC]
- movs r0, 0xF
- subs r0, r1
- lsls r0, 1
- ldr r1, _0810D0FC @ =gUnknown_083F808C
- adds r0, r1
- lsls r2, 17
- lsrs r2, 16
- movs r1, 0xE0
- bl LoadPalette
- b _0810D114
- .align 2, 0
-_0810D0F8: .4byte gTasks
-_0810D0FC: .4byte gUnknown_083F808C
-_0810D100:
- ldr r1, _0810D118 @ =REG_BLDALPHA
- ldr r2, _0810D11C @ =0x00001010
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _0810D120 @ =0x00003e41
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0810D124 @ =sub_810D128
- str r0, [r3]
-_0810D114:
- pop {r0}
- bx r0
- .align 2, 0
-_0810D118: .4byte REG_BLDALPHA
-_0810D11C: .4byte 0x00001010
-_0810D120: .4byte 0x00003e41
-_0810D124: .4byte sub_810D128
- thumb_func_end sub_810D0C4
-
- thumb_func_start sub_810D128
-sub_810D128: @ 810D128
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810D158 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r3, r1, r2
- ldrh r0, [r3, 0xA]
- movs r1, 0x10
- subs r1, r0
- lsls r1, 16
- movs r2, 0x80
- lsls r2, 21
- adds r0, r1, r2
- lsrs r0, 16
- ldr r2, _0810D15C @ =REG_BLDALPHA
- strh r0, [r2]
- cmp r1, 0
- beq _0810D160
- ldrh r0, [r3, 0xA]
- adds r0, 0x1
- strh r0, [r3, 0xA]
- b _0810D172
- .align 2, 0
-_0810D158: .4byte gTasks
-_0810D15C: .4byte REG_BLDALPHA
-_0810D160:
- ldr r0, _0810D178 @ =gCaveTransitionPalette_Black
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0810D17C @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_0810D172:
- pop {r0}
- bx r0
- .align 2, 0
-_0810D178: .4byte gCaveTransitionPalette_Black
-_0810D17C: .4byte gMain
- thumb_func_end sub_810D128
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/m4a_1.s b/asm/m4a_1.s
index ffe2ca885..849cf5c2d 100644
--- a/asm/m4a_1.s
+++ b/asm/m4a_1.s
@@ -4,6 +4,8 @@
.syntax unified
+ .lcomm gUnknown_030007B8, 0x770
+
.text
thumb_func_start umul3232H32
diff --git a/asm/macros/event.inc b/asm/macros/event.inc
index e3caa0c4f..cd2927c66 100644
--- a/asm/macros/event.inc
+++ b/asm/macros/event.inc
@@ -241,14 +241,14 @@
@ Calls a special function; that is, a piece of ASM code designed for use by scripts and listed in a table of pointers.
.macro special function
.byte 0x25
- .2byte \function
+ .2byte SPECIAL_\function
.endm
@ Calls a special function. That function's output (if any) will be written to the variable you specify.
.macro specialval output, function
.byte 0x26
.2byte \output
- .2byte \function
+ .2byte SPECIAL_\function
.endm
@ Blocks script execution until a command or ASM code manually unblocks it. Generally used with specific commands and specials. If this command runs, and a subsequent command or piece of ASM does not unblock state, the script will remain blocked indefinitely (essentially a hang).
diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s
deleted file mode 100644
index 0f5caf3da..000000000
--- a/asm/menu_helpers.s
+++ /dev/null
@@ -1,1339 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F9020
-sub_80F9020: @ 80F9020
- push {r4,r5,lr}
- ldr r4, _080F9054 @ =gBGTilemapBuffers + 0x800
- movs r5, 0x80
- lsls r5, 4
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- bl memset
- adds r0, r4, r5
- movs r1, 0
- adds r2, r5, 0
- bl memset
- movs r0, 0x80
- lsls r0, 5
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- bl memset
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9054: .4byte gBGTilemapBuffers + 0x800
- thumb_func_end sub_80F9020
-
- thumb_func_start sav2_get_text_speed
-sav2_get_text_speed: @ 80F9058
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- lsls r1, 16
- lsrs r4, r1, 16
- bl MenuDisplayMessageBox
- cmp r4, 0
- beq _080F907C
- ldr r0, _080F908C @ =gBGTilemapBuffers + 0x800
- movs r1, 0x4
- str r1, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x2
- movs r2, 0xF
- movs r3, 0x1A
- bl sub_80A3FA0
-_080F907C:
- adds r0, r5, 0
- bl sub_8072044
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F908C: .4byte gBGTilemapBuffers + 0x800
- thumb_func_end sav2_get_text_speed
-
- thumb_func_start sub_80F9090
-sub_80F9090: @ 80F9090
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl MenuUpdateWindowText
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F90AC
- ldr r0, _080F90B4 @ =gUnknown_0300074C
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
-_080F90AC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F90B4: .4byte gUnknown_0300074C
- thumb_func_end sub_80F9090
-
- thumb_func_start DisplayItemMessageOnField
-DisplayItemMessageOnField: @ 80F90B8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- adds r5, r2, 0
- adds r1, r3, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 16
- lsrs r1, 16
- bl sav2_get_text_speed
- ldr r0, _080F90E8 @ =gUnknown_0300074C
- str r5, [r0]
- ldr r1, _080F90EC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080F90F0 @ =sub_80F9090
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F90E8: .4byte gUnknown_0300074C
-_080F90EC: .4byte gTasks
-_080F90F0: .4byte sub_80F9090
- thumb_func_end DisplayItemMessageOnField
-
- thumb_func_start Task_CallYesOrNoCallback
-Task_CallYesOrNoCallback: @ 80F90F4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _080F911A
- cmp r1, 0
- bgt _080F9114
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080F9130
- b _080F9140
-_080F9114:
- cmp r1, 0x1
- beq _080F9130
- b _080F9140
-_080F911A:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080F912C @ =gUnknown_020388C4
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- b _080F9140
- .align 2, 0
-_080F912C: .4byte gUnknown_020388C4
-_080F9130:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080F9148 @ =gUnknown_020388C4
- ldr r1, [r0, 0x4]
- adds r0, r4, 0
- bl _call_via_r1
-_080F9140:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9148: .4byte gUnknown_020388C4
- thumb_func_end Task_CallYesOrNoCallback
-
- thumb_func_start DoYesNoFuncWithChoice
-DoYesNoFuncWithChoice: @ 80F914C
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080F916C @ =gUnknown_020388C4
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [r3]
- str r2, [r3, 0x4]
- ldr r2, _080F9170 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080F9174 @ =Task_CallYesOrNoCallback
- str r0, [r1]
- bx lr
- .align 2, 0
-_080F916C: .4byte gUnknown_020388C4
-_080F9170: .4byte gTasks
-_080F9174: .4byte Task_CallYesOrNoCallback
- thumb_func_end DoYesNoFuncWithChoice
-
- thumb_func_start brm_trade_1
-brm_trade_1: @ 80F9178
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r6, r3, 24
- ldr r1, _080F91C0 @ =gUnknown_083E5A18
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- cmp r4, 0xFF
- beq _080F91CC
- mov r0, sp
- strb r4, [r0, 0x2]
- ldr r4, _080F91C4 @ =gStringVar4
- adds r0, r4, 0
- mov r1, sp
- bl StringCopy
- adds r0, r4, 0
- adds r1, r5, 0
- bl StringAppend
- mov r1, sp
- ldr r0, _080F91C8 @ =gMenuWindowPtr
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x2]
- adds r0, r4, 0
- bl StringAppend
- b _080F91D4
- .align 2, 0
-_080F91C0: .4byte gUnknown_083E5A18
-_080F91C4: .4byte gStringVar4
-_080F91C8: .4byte gMenuWindowPtr
-_080F91CC:
- ldr r0, _080F91E8 @ =gStringVar4
- adds r1, r5, 0
- bl StringCopy
-_080F91D4:
- ldr r0, _080F91E8 @ =gStringVar4
- adds r1, r7, 0
- adds r2, r6, 0
- bl MenuPrint
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F91E8: .4byte gStringVar4
- thumb_func_end brm_trade_1
-
- thumb_func_start unref_sub_80F91EC
-unref_sub_80F91EC: @ 80F91EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r12, r0
- adds r4, r2, 0
- adds r2, r3, 0
- ldr r0, [sp, 0x18]
- ldr r3, [sp, 0x1C]
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r3, 24
- lsrs r5, r3, 24
- ldr r6, _080F9234 @ =gStringVar1
- adds r0, r6, 0
- mov r1, r12
- adds r3, r4, 0
- bl ConvertIntToDecimalStringN
- mov r0, r8
- cmp r0, 0xFF
- beq _080F9238
- adds r0, r6, 0
- mov r1, r8
- adds r2, r7, 0
- adds r3, r5, 0
- bl brm_trade_1
- b _080F9242
- .align 2, 0
-_080F9234: .4byte gStringVar1
-_080F9238:
- adds r0, r6, 0
- adds r1, r7, 0
- adds r2, r5, 0
- bl MenuPrint
-_080F9242:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end unref_sub_80F91EC
-
- thumb_func_start unref_sub_80F924C
-unref_sub_80F924C: @ 80F924C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080F9280 @ =gUnknown_083E5A1C
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl brm_trade_1
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9280: .4byte gUnknown_083E5A1C
- thumb_func_end unref_sub_80F924C
-
- thumb_func_start sub_80F9284
-sub_80F9284: @ 80F9284
- push {lr}
- ldr r0, _080F92A0 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _080F92B6
- ldr r0, _080F92A4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080F92A8
- movs r0, 0x1
- b _080F92B8
- .align 2, 0
-_080F92A0: .4byte gSaveBlock2
-_080F92A4: .4byte gMain
-_080F92A8:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080F92B6
- movs r0, 0x2
- b _080F92B8
-_080F92B6:
- movs r0, 0
-_080F92B8:
- pop {r1}
- bx r1
- thumb_func_end sub_80F9284
-
- thumb_func_start sub_80F92BC
-sub_80F92BC: @ 80F92BC
- push {lr}
- ldr r0, _080F92D8 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _080F92EE
- ldr r0, _080F92DC @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080F92E0
- movs r0, 0x1
- b _080F92F0
- .align 2, 0
-_080F92D8: .4byte gSaveBlock2
-_080F92DC: .4byte gMain
-_080F92E0:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080F92EE
- movs r0, 0x2
- b _080F92F0
-_080F92EE:
- movs r0, 0
-_080F92F0:
- pop {r1}
- bx r1
- thumb_func_end sub_80F92BC
-
- thumb_func_start sub_80F92F4
-sub_80F92F4: @ 80F92F4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _080F9314
- ldr r0, _080F930C @ =gSaveBlock1
- ldrh r1, [r0, 0x4]
- ldr r0, _080F9310 @ =0x00001919
- cmp r1, r0
- bne _080F9314
- movs r0, 0
- b _080F9316
- .align 2, 0
-_080F930C: .4byte gSaveBlock1
-_080F9310: .4byte 0x00001919
-_080F9314:
- movs r0, 0x1
-_080F9316:
- pop {r1}
- bx r1
- thumb_func_end sub_80F92F4
-
- thumb_func_start sub_80F931C
-sub_80F931C: @ 80F931C
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl is_c1_link_related_active
- cmp r0, 0x1
- bne _080F933C
- adds r0, r4, 0
- bl ItemIsMail
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F933C
- movs r0, 0
- b _080F933E
-_080F933C:
- movs r0, 0x1
-_080F933E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F931C
-
- thumb_func_start sub_80F9344
-sub_80F9344: @ 80F9344
- push {lr}
- bl is_c1_link_related_active
- cmp r0, 0x1
- beq _080F9356
- ldr r0, _080F935C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080F9360
-_080F9356:
- movs r0, 0x1
- b _080F9362
- .align 2, 0
-_080F935C: .4byte gReceivedRemoteLinkPlayers
-_080F9360:
- movs r0, 0
-_080F9362:
- pop {r1}
- bx r1
- thumb_func_end sub_80F9344
-
- thumb_func_start sub_80F9368
-sub_80F9368: @ 80F9368
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- adds r0, 0xE
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x14
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0x6
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x4
- mov r8, r0
- mov r2, sp
- movs r6, 0
- ldr r1, _080F9430 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _080F9434 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080F93C6:
- strh r6, [r2]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _080F93C6
- strh r6, [r2]
- mov r2, sp
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r2, _080F9430 @ =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]
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9430: .4byte 0x040000d4
-_080F9434: .4byte 0x81000800
- thumb_func_end sub_80F9368
-
- thumb_func_start sub_80F9438
-sub_80F9438: @ 80F9438
- push {lr}
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- pop {r0}
- bx r0
- thumb_func_end sub_80F9438
-
- thumb_func_start sub_80F944C
-sub_80F944C: @ 80F944C
- push {r4,lr}
- movs r2, 0
- ldr r4, _080F9478 @ =gUnknown_020388C0
- movs r3, 0xFF
-_080F9454:
- adds r0, r2, r4
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080F9454
- movs r0, 0x6
- bl FreeSpritePaletteByTag
- ldr r0, _080F947C @ =gUnknown_083E5968
- bl LoadSpritePalette
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9478: .4byte gUnknown_020388C0
-_080F947C: .4byte gUnknown_083E5968
- thumb_func_end sub_80F944C
-
- thumb_func_start sub_80F9480
-sub_80F9480: @ 80F9480
- push {r4,lr}
- adds r3, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0
- cmp r2, r1
- bcs _080F949E
- movs r4, 0xFF
-_080F9490:
- adds r0, r3, r2
- strb r4, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r1
- bcc _080F9490
-_080F949E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F9480
-
- thumb_func_start sub_80F94A4
-sub_80F94A4: @ 80F94A4
- push {r4,r5,lr}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r2, 16
- lsrs r1, r2, 16
- lsls r3, 16
- lsrs r2, r3, 16
- cmp r4, 0x5
- bhi _080F94E8
- ldrb r0, [r5]
- cmp r0, 0xFF
- bne _080F94D0
- ldr r0, _080F94F0 @ =gSpriteTemplate_83E5A00
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- movs r3, 0
- bl CreateSprite
- strb r0, [r5]
-_080F94D0:
- subs r0, r4, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F94F4 @ =gSprites
- adds r0, r1
- adds r1, r4, 0
- bl StartSpriteAnim
-_080F94E8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F94F0: .4byte gSpriteTemplate_83E5A00
-_080F94F4: .4byte gSprites
- thumb_func_end sub_80F94A4
-
- thumb_func_start sub_80F94F8
-sub_80F94F8: @ 80F94F8
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _080F9516
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F951C @ =gSprites
- adds r0, r1
- bl DestroySprite
- movs r0, 0xFF
- strb r0, [r4]
-_080F9516:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F951C: .4byte gSprites
- thumb_func_end sub_80F94F8
-
- thumb_func_start sub_80F9520
-sub_80F9520: @ 80F9520
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r4, 0
-_080F9526:
- adds r0, r5, r4
- bl sub_80F94F8
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _080F9526
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F9520
-
- thumb_func_start CreateVerticalScrollIndicators
-CreateVerticalScrollIndicators: @ 80F953C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r3, r1, 16
- lsls r2, 16
- lsrs r2, 16
- cmp r4, 0x3
- bls _080F9550
- b _080F9790
-_080F9550:
- cmp r4, 0x1
- beq _080F95F6
- cmp r4, 0x1
- bgt _080F9564
- cmp r4, 0
- beq _080F9578
- ldr r5, _080F9560 @ =gUnknown_020388C0
- b _080F977A
- .align 2, 0
-_080F9560: .4byte gUnknown_020388C0
-_080F9564:
- cmp r4, 0x2
- bne _080F956A
- b _080F967C
-_080F956A:
- cmp r4, 0x3
- bne _080F9570
- b _080F96F8
-_080F9570:
- ldr r5, _080F9574 @ =gUnknown_020388C0
- b _080F977A
- .align 2, 0
-_080F9574: .4byte gUnknown_020388C0
-_080F9578:
- ldr r0, _080F95D8 @ =gUnknown_020388C0
- ldrb r1, [r0]
- adds r5, r0, 0
- cmp r1, 0xFF
- beq _080F9584
- b _080F977A
-_080F9584:
- ldr r0, _080F95DC @ =gSpriteTemplate_83E59D0
- lsls r1, r3, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- movs r3, 0
- bl CreateSprite
- strb r0, [r5]
- ldr r3, _080F95E0 @ =gSprites
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, _080F95E4 @ =0x0000ffff
- strh r1, [r0, 0x32]
- ldrb r0, [r5, 0x1]
- cmp r0, 0xFF
- beq _080F95E8
- ldrb r0, [r5]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5, 0x1]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x26
- ldrsh r0, [r0, r2]
- negs r0, r0
- strh r0, [r1, 0x26]
- ldrb r0, [r5]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5, 0x1]
- b _080F9650
- .align 2, 0
-_080F95D8: .4byte gUnknown_020388C0
-_080F95DC: .4byte gSpriteTemplate_83E59D0
-_080F95E0: .4byte gSprites
-_080F95E4: .4byte 0x0000ffff
-_080F95E8:
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r4, [r0, 0x34]
- b _080F977A
-_080F95F6:
- ldr r0, _080F9660 @ =gUnknown_020388C0
- ldrb r1, [r0, 0x1]
- adds r5, r0, 0
- cmp r1, 0xFF
- beq _080F9602
- b _080F977A
-_080F9602:
- ldr r0, _080F9664 @ =gSpriteTemplate_83E59D0
- lsls r1, r3, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- movs r3, 0
- bl CreateSprite
- strb r0, [r5, 0x1]
- ldr r3, _080F9668 @ =gSprites
- ldrb r1, [r5, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r4, [r0, 0x32]
- ldrb r0, [r5]
- cmp r0, 0xFF
- beq _080F966C
- ldrb r0, [r5, 0x1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x26
- ldrsh r0, [r0, r2]
- negs r0, r0
- strh r0, [r1, 0x26]
- ldrb r0, [r5, 0x1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5]
-_080F9650:
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x34]
- strh r0, [r1, 0x34]
- b _080F977A
- .align 2, 0
-_080F9660: .4byte gUnknown_020388C0
-_080F9664: .4byte gSpriteTemplate_83E59D0
-_080F9668: .4byte gSprites
-_080F966C:
- ldrb r0, [r5, 0x1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- movs r0, 0
- strh r0, [r1, 0x34]
- b _080F977A
-_080F967C:
- ldr r0, _080F96E4 @ =gUnknown_020388C0
- ldrb r1, [r0, 0x2]
- adds r5, r0, 0
- cmp r1, 0xFF
- bne _080F977A
- ldr r0, _080F96E8 @ =gSpriteTemplate_83E59E8
- lsls r1, r3, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- movs r3, 0
- bl CreateSprite
- strb r0, [r5, 0x2]
- ldr r3, _080F96EC @ =gSprites
- ldrb r1, [r5, 0x2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, _080F96F0 @ =0x0000ffff
- strh r1, [r0, 0x2E]
- ldrb r0, [r5, 0x3]
- cmp r0, 0xFF
- beq _080F96F4
- ldrb r0, [r5, 0x2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5, 0x3]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x24
- ldrsh r0, [r0, r2]
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrb r0, [r5, 0x2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5, 0x3]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x30]
- b _080F9778
- .align 2, 0
-_080F96E4: .4byte gUnknown_020388C0
-_080F96E8: .4byte gSpriteTemplate_83E59E8
-_080F96EC: .4byte gSprites
-_080F96F0: .4byte 0x0000ffff
-_080F96F4:
- ldrb r0, [r5, 0x2]
- b _080F976E
-_080F96F8:
- ldr r0, _080F9760 @ =gUnknown_020388C0
- ldrb r1, [r0, 0x3]
- adds r5, r0, 0
- cmp r1, 0xFF
- bne _080F977A
- ldr r0, _080F9764 @ =gSpriteTemplate_83E59E8
- lsls r1, r3, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- movs r3, 0
- bl CreateSprite
- strb r0, [r5, 0x3]
- ldr r3, _080F9768 @ =gSprites
- ldrb r1, [r5, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x1
- strh r1, [r0, 0x2E]
- ldrb r0, [r5, 0x2]
- cmp r0, 0xFF
- beq _080F976C
- ldrb r0, [r5, 0x3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5, 0x2]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- movs r2, 0x24
- ldrsh r0, [r0, r2]
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrb r0, [r5, 0x3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r5, 0x2]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x30]
- b _080F9778
- .align 2, 0
-_080F9760: .4byte gUnknown_020388C0
-_080F9764: .4byte gSpriteTemplate_83E59E8
-_080F9768: .4byte gSprites
-_080F976C:
- ldrb r0, [r5, 0x3]
-_080F976E:
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- movs r0, 0
-_080F9778:
- strh r0, [r1, 0x30]
-_080F977A:
- adds r0, r4, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F9798 @ =gSprites
- adds r0, r1
- movs r1, 0x1
- ands r1, r4
- bl StartSpriteAnim
-_080F9790:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9798: .4byte gSprites
- thumb_func_end CreateVerticalScrollIndicators
-
- thumb_func_start sub_80F979C
-sub_80F979C: @ 80F979C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- cmp r2, 0x3
- bhi _080F97D4
- ldr r0, _080F97D8 @ =gUnknown_020388C0
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _080F97D4
- ldr r2, _080F97DC @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- movs r0, 0x1
- adds r2, r3, 0
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1]
-_080F97D4:
- pop {r0}
- bx r0
- .align 2, 0
-_080F97D8: .4byte gUnknown_020388C0
-_080F97DC: .4byte gSprites
- thumb_func_end sub_80F979C
-
- thumb_func_start DestroyVerticalScrollIndicator
-DestroyVerticalScrollIndicator: @ 80F97E0
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bhi _080F9808
- ldr r0, _080F9810 @ =gUnknown_020388C0
- adds r4, r1, r0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _080F9808
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F9814 @ =gSprites
- adds r0, r1
- bl DestroySprite
- movs r0, 0xFF
- strb r0, [r4]
-_080F9808:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9810: .4byte gUnknown_020388C0
-_080F9814: .4byte gSprites
- thumb_func_end DestroyVerticalScrollIndicator
-
- thumb_func_start LoadScrollIndicatorPalette
-LoadScrollIndicatorPalette: @ 80F9818
- push {lr}
- ldr r0, _080F9824 @ =gUnknown_083E5968
- bl LoadSpritePalette
- pop {r0}
- bx r0
- .align 2, 0
-_080F9824: .4byte gUnknown_083E5968
- thumb_func_end LoadScrollIndicatorPalette
-
- thumb_func_start BuyMenuFreeMemory
-BuyMenuFreeMemory: @ 80F9828
- push {lr}
- movs r0, 0x6
- bl FreeSpritePaletteByTag
- pop {r0}
- bx r0
- thumb_func_end BuyMenuFreeMemory
-
- thumb_func_start sub_80F9834
-sub_80F9834: @ 80F9834
- push {lr}
- adds r2, r0, 0
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _080F9848
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
-_080F9848:
- movs r1, 0x34
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _080F9858
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x26]
- adds r0, r1
- strh r0, [r2, 0x26]
-_080F9858:
- ldrh r1, [r2, 0x30]
- adds r1, 0x1
- movs r3, 0
- strh r1, [r2, 0x30]
- ldrh r0, [r2, 0x34]
- adds r0, 0x1
- strh r0, [r2, 0x34]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x2
- ble _080F9870
- strh r3, [r2, 0x30]
-_080F9870:
- movs r1, 0x34
- ldrsh r0, [r2, r1]
- cmp r0, 0x2
- ble _080F987A
- strh r3, [r2, 0x34]
-_080F987A:
- movs r0, 0x24
- ldrsh r1, [r2, r0]
- cmp r1, 0x8
- beq _080F988A
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- bne _080F988C
-_080F988A:
- strh r3, [r2, 0x24]
-_080F988C:
- movs r0, 0x26
- ldrsh r1, [r2, r0]
- cmp r1, 0x8
- beq _080F989C
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- bne _080F98A0
-_080F989C:
- movs r0, 0
- strh r0, [r2, 0x26]
-_080F98A0:
- pop {r0}
- bx r0
- thumb_func_end sub_80F9834
-
- thumb_func_start sub_80F98A4
-sub_80F98A4: @ 80F98A4
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _080F98D0 @ =gUnknown_020388C0
- adds r3, r1, r0
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _080F98CA
- cmp r1, 0x3
- bhi _080F98CA
- ldr r2, _080F98D4 @ =gSprites
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _080F98D8 @ =SpriteCallbackDummy
- str r1, [r0]
-_080F98CA:
- pop {r0}
- bx r0
- .align 2, 0
-_080F98D0: .4byte gUnknown_020388C0
-_080F98D4: .4byte gSprites
-_080F98D8: .4byte SpriteCallbackDummy
- thumb_func_end sub_80F98A4
-
- thumb_func_start StartVerticalScrollIndicators
-StartVerticalScrollIndicators: @ 80F98DC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _080F9908 @ =gUnknown_020388C0
- adds r3, r1, r0
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _080F9902
- cmp r1, 0x3
- bhi _080F9902
- ldr r2, _080F990C @ =gSprites
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _080F9910 @ =sub_80F9834
- str r1, [r0]
-_080F9902:
- pop {r0}
- bx r0
- .align 2, 0
-_080F9908: .4byte gUnknown_020388C0
-_080F990C: .4byte gSprites
-_080F9910: .4byte sub_80F9834
- thumb_func_end StartVerticalScrollIndicators
-
- thumb_func_start sub_80F9914
-sub_80F9914: @ 80F9914
- push {r4,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _080F9964 @ =gUnknown_020388C0
- adds r4, r1, r0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _080F995C
- cmp r1, 0x3
- bhi _080F995C
- ldr r3, _080F9968 @ =gSprites
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r2, 0
- strh r2, [r0, 0x24]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x26]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x30]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x34]
-_080F995C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F9964: .4byte gUnknown_020388C0
-_080F9968: .4byte gSprites
- thumb_func_end sub_80F9914
-
- thumb_func_start PauseVerticalScrollIndicator
-PauseVerticalScrollIndicator: @ 80F996C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80F98A4
- adds r0, r4, 0
- bl sub_80F9914
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PauseVerticalScrollIndicator
-
- thumb_func_start sub_80F9988
-sub_80F9988: @ 80F9988
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r0, _080F99C4 @ =gUnknown_020388C0
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _080F99BE
- cmp r2, 0x3
- bhi _080F99BE
- ldr r2, _080F99C8 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0x3
- adds r2, r3, 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]
-_080F99BE:
- pop {r0}
- bx r0
- .align 2, 0
-_080F99C4: .4byte gUnknown_020388C0
-_080F99C8: .4byte gSprites
- thumb_func_end sub_80F9988
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mon_markings.s b/asm/mon_markings.s
deleted file mode 100644
index d227b17c1..000000000
--- a/asm/mon_markings.s
+++ /dev/null
@@ -1,1008 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F727C
-sub_80F727C: @ 80F727C
- ldr r1, _080F7288 @ =gUnknown_020388B8
- str r0, [r1]
- movs r1, 0
- strb r1, [r0, 0xB]
- bx lr
- .align 2, 0
-_080F7288: .4byte gUnknown_020388B8
- thumb_func_end sub_80F727C
-
- thumb_func_start sub_80F728C
-sub_80F728C: @ 80F728C
- push {lr}
- sub sp, 0x4
- ldr r0, _080F72C4 @ =gSaveBlock2
- ldrb r0, [r0, 0x14]
- lsrs r0, 3
- bl GetTextWindowFrameGraphics
- ldr r3, _080F72C8 @ =gUnknown_020388B8
- ldr r2, [r3]
- ldr r1, [r0]
- str r1, [r2, 0x28]
- ldr r0, [r0, 0x4]
- str r0, [r2, 0x2C]
- ldr r0, _080F72CC @ =0x000010b0
- adds r2, r0
- movs r1, 0
- strb r1, [r2]
- mov r0, sp
- strh r1, [r0]
- ldr r1, [r3]
- adds r1, 0x30
- ldr r2, _080F72D0 @ =0x01000800
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080F72C4: .4byte gSaveBlock2
-_080F72C8: .4byte gUnknown_020388B8
-_080F72CC: .4byte 0x000010b0
-_080F72D0: .4byte 0x01000800
- thumb_func_end sub_80F728C
-
- thumb_func_start sub_80F72D4
-sub_80F72D4: @ 80F72D4
- push {r4-r7,lr}
- ldr r0, _080F72F4 @ =gUnknown_020388B8
- ldr r1, [r0]
- ldr r2, _080F72F8 @ =0x000010b0
- adds r0, r1, r2
- ldrb r2, [r0]
- lsls r0, r2, 8
- adds r0, 0x30
- adds r5, r1, r0
- cmp r2, 0xD
- beq _080F73A4
- cmp r2, 0xD
- bgt _080F72FC
- cmp r2, 0
- beq _080F7302
- b _080F734C
- .align 2, 0
-_080F72F4: .4byte gUnknown_020388B8
-_080F72F8: .4byte 0x000010b0
-_080F72FC:
- cmp r2, 0xE
- beq _080F73F0
- b _080F734C
-_080F7302:
- ldr r0, [r1, 0x28]
- adds r1, r5, 0
- movs r2, 0x8
- bl CpuFastSet
- movs r4, 0
- adds r7, r5, 0
- adds r7, 0xE0
-_080F7312:
- ldr r6, _080F7344 @ =gUnknown_020388B8
- ldr r0, [r6]
- ldr r0, [r0, 0x28]
- adds r0, 0x20
- adds r4, 0x1
- lsls r1, r4, 5
- adds r1, r5, r1
- movs r2, 0x8
- bl CpuFastSet
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x5
- bls _080F7312
- ldr r0, [r6]
- ldr r0, [r0, 0x28]
- adds r0, 0x40
- adds r1, r7, 0
- movs r2, 0x8
- bl CpuFastSet
- ldr r1, [r6]
- ldr r0, _080F7348 @ =0x000010b0
- adds r1, r0
- b _080F7392
- .align 2, 0
-_080F7344: .4byte gUnknown_020388B8
-_080F7348: .4byte 0x000010b0
-_080F734C:
- ldr r0, _080F739C @ =gUnknown_020388B8
- ldr r0, [r0]
- ldr r0, [r0, 0x28]
- adds r0, 0x60
- adds r1, r5, 0
- movs r2, 0x8
- bl CpuFastSet
- movs r4, 0
- adds r7, r5, 0
- adds r7, 0xE0
-_080F7362:
- ldr r6, _080F739C @ =gUnknown_020388B8
- ldr r0, [r6]
- ldr r0, [r0, 0x28]
- adds r0, 0x80
- adds r4, 0x1
- lsls r1, r4, 5
- adds r1, r5, r1
- movs r2, 0x8
- bl CpuFastSet
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x5
- bls _080F7362
- ldr r0, [r6]
- ldr r0, [r0, 0x28]
- adds r0, 0xA0
- adds r1, r7, 0
- movs r2, 0x8
- bl CpuFastSet
- ldr r1, [r6]
- ldr r2, _080F73A0 @ =0x000010b0
- adds r1, r2
-_080F7392:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080F73FC
- .align 2, 0
-_080F739C: .4byte gUnknown_020388B8
-_080F73A0: .4byte 0x000010b0
-_080F73A4:
- ldr r0, [r1, 0x28]
- adds r0, 0xC0
- adds r1, r5, 0
- movs r2, 0x8
- bl CpuFastSet
- movs r4, 0
- adds r7, r5, 0
- adds r7, 0xE0
-_080F73B6:
- ldr r6, _080F73F4 @ =gUnknown_020388B8
- ldr r0, [r6]
- ldr r0, [r0, 0x28]
- adds r0, 0xE0
- adds r4, 0x1
- lsls r1, r4, 5
- adds r1, r5, r1
- movs r2, 0x8
- bl CpuFastSet
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x5
- bls _080F73B6
- ldr r0, [r6]
- ldr r0, [r0, 0x28]
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- adds r1, r7, 0
- movs r2, 0x8
- bl CpuFastSet
- ldr r1, [r6]
- ldr r2, _080F73F8 @ =0x000010b0
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080F73F0:
- movs r0, 0
- b _080F73FE
- .align 2, 0
-_080F73F4: .4byte gUnknown_020388B8
-_080F73F8: .4byte 0x000010b0
-_080F73FC:
- movs r0, 0x1
-_080F73FE:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F72D4
-
- thumb_func_start sub_80F7404
-sub_80F7404: @ 80F7404
- push {lr}
- bl sub_80F728C
-_080F740A:
- bl sub_80F72D4
- lsls r0, 24
- cmp r0, 0
- bne _080F740A
- pop {r0}
- bx r0
- thumb_func_end sub_80F7404
-
- thumb_func_start sub_80F7418
-sub_80F7418: @ 80F7418
- push {r4-r6,lr}
- lsls r1, 16
- lsrs r5, r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- ldr r2, _080F746C @ =gUnknown_020388B8
- ldr r3, [r2]
- movs r1, 0
- strb r1, [r3, 0x5]
- ldr r1, [r2]
- strb r0, [r1, 0x4]
- movs r3, 0
- adds r4, r2, 0
- movs r2, 0x1
-_080F7434:
- ldr r0, [r4]
- adds r1, r0, 0x6
- adds r1, r3
- ldrb r0, [r0, 0x4]
- asrs r0, r3
- ands r0, r2
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080F7434
- bl DestroyMenuCursor
- lsls r0, r5, 16
- asrs r0, 16
- lsls r1, r6, 16
- asrs r1, 16
- ldr r2, _080F746C @ =gUnknown_020388B8
- ldr r3, [r2]
- ldrh r2, [r3]
- ldrh r3, [r3, 0x2]
- bl sub_80F761C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F746C: .4byte gUnknown_020388B8
- thumb_func_end sub_80F7418
-
- thumb_func_start sub_80F7470
-sub_80F7470: @ 80F7470
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _080F74FC @ =gUnknown_020388B8
-_080F7476:
- ldr r0, [r5]
- ldrh r0, [r0]
- adds r0, r4, r0
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpriteTilesByTag
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x2
- bls _080F7476
- ldr r4, _080F74FC @ =gUnknown_020388B8
- ldr r0, [r4]
- ldrh r0, [r0, 0x2]
- bl FreeSpritePaletteByTag
- ldr r0, [r4]
- ldrh r0, [r0, 0x2]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
- movs r4, 0
-_080F74A8:
- ldr r0, _080F74FC @ =gUnknown_020388B8
- ldr r0, [r0]
- lsls r1, r4, 2
- adds r0, 0xC
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _080F74F6
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _080F74A8
- movs r4, 0
-_080F74C8:
- ldr r5, _080F74FC @ =gUnknown_020388B8
- ldr r0, [r5]
- lsls r1, r4, 2
- adds r0, 0x14
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _080F74F6
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080F74C8
- bl DestroyMenuCursor
- ldr r0, [r5]
- ldr r0, [r0, 0x24]
- cmp r0, 0
- beq _080F74F6
- bl DestroySprite
-_080F74F6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F74FC: .4byte gUnknown_020388B8
- thumb_func_end sub_80F7470
-
- thumb_func_start sub_80F7500
-sub_80F7500: @ 80F7500
- push {r4,r5,lr}
- sub sp, 0x30
- ldr r4, _080F7580 @ =gUnknown_020388B8
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x30
- str r0, [sp, 0x18]
- add r1, sp, 0x1C
- movs r5, 0
- movs r0, 0x80
- lsls r0, 5
- strh r0, [r1]
- ldrh r1, [r2]
- mov r0, sp
- adds r0, 0x1E
- strh r1, [r0]
- add r1, sp, 0x20
- ldr r0, _080F7584 @ =gPokenavConditionMenuMisc_Gfx
- str r0, [sp, 0x20]
- movs r0, 0xA4
- lsls r0, 3
- strh r0, [r1, 0x4]
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r1, 0x6]
- add r0, sp, 0x28
- movs r1, 0
- movs r2, 0x8
- bl memset
- add r1, sp, 0x18
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- ldr r0, [r4]
- ldrb r0, [r0, 0xB]
- cmp r0, 0
- beq _080F7558
- mov r0, sp
- bl LoadTilesForSpriteSheets
- ldr r0, [r4]
- strb r5, [r0, 0xB]
-_080F7558:
- ldr r0, _080F7588 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080F758C
- movs r0, 0x5
- bl PlaySE
- ldr r1, [r4]
- ldrb r0, [r1, 0x5]
- subs r0, 0x1
- strb r0, [r1, 0x5]
- lsls r0, 24
- cmp r0, 0
- bge _080F75FE
- ldr r1, [r4]
- movs r0, 0x5
- strb r0, [r1, 0x5]
- b _080F75FE
- .align 2, 0
-_080F7580: .4byte gUnknown_020388B8
-_080F7584: .4byte gPokenavConditionMenuMisc_Gfx
-_080F7588: .4byte gMain
-_080F758C:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080F75B0
- movs r0, 0x5
- bl PlaySE
- ldr r1, [r4]
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x5
- ble _080F75FE
- ldr r0, [r4]
- strb r5, [r0, 0x5]
- b _080F75FE
-_080F75B0:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F7602
- movs r0, 0x5
- bl PlaySE
- ldr r0, [r4]
- movs r1, 0x5
- ldrsb r1, [r0, r1]
- cmp r1, 0x4
- beq _080F75DC
- cmp r1, 0x5
- beq _080F7610
- adds r0, 0x6
- adds r1, r0, r1
- movs r2, 0
- ldrb r0, [r1]
- cmp r0, 0
- bne _080F75FC
- movs r2, 0x1
- b _080F75FC
-_080F75DC:
- strb r5, [r0, 0x4]
- movs r3, 0
-_080F75E0:
- ldr r2, [r4]
- adds r0, r2, 0x6
- adds r0, r3
- ldrb r0, [r0]
- lsls r0, r3
- ldrb r1, [r2, 0x4]
- orrs r0, r1
- strb r0, [r2, 0x4]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080F75E0
- b _080F7610
-_080F75FC:
- strb r2, [r1]
-_080F75FE:
- movs r0, 0x1
- b _080F7612
-_080F7602:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080F75FE
- movs r0, 0x5
- bl PlaySE
-_080F7610:
- movs r0, 0
-_080F7612:
- add sp, 0x30
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F7500
-
- thumb_func_start sub_80F761C
-sub_80F761C: @ 80F761C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x5C
- adds r5, r2, 0
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x4C]
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x50]
- lsls r5, 16
- lsrs r5, 16
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp, 0x54]
- ldr r0, _080F7820 @ =gUnknown_020388B8
- mov r8, r0
- ldr r0, [r0]
- adds r0, 0x30
- str r0, [sp, 0x1C]
- add r1, sp, 0x20
- movs r2, 0
- mov r9, r2
- movs r0, 0x80
- lsls r0, 5
- strh r0, [r1]
- mov r0, sp
- adds r0, 0x22
- strh r5, [r0]
- add r1, sp, 0x24
- ldr r0, _080F7824 @ =gPokenavConditionMenuMisc_Gfx
- str r0, [sp, 0x24]
- movs r0, 0xA4
- lsls r0, 3
- strh r0, [r1, 0x4]
- adds r0, r5, 0x1
- strh r0, [r1, 0x6]
- add r0, sp, 0x2C
- movs r1, 0
- movs r2, 0x8
- bl memset
- add r6, sp, 0x1C
- add r0, sp, 0x4
- adds r1, r6, 0
- movs r2, 0x18
- bl memcpy
- mov r3, r8
- ldr r0, [r3]
- ldr r0, [r0, 0x2C]
- str r0, [sp, 0x34]
- add r0, sp, 0x38
- add r1, sp, 0x54
- ldrh r1, [r1]
- strh r1, [r0]
- add r1, sp, 0x3C
- ldr r0, _080F7828 @ =gUnknown_08E966B8
- str r0, [sp, 0x3C]
- ldr r0, [sp, 0x54]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- add r0, sp, 0x44
- movs r1, 0
- movs r2, 0x8
- bl memset
- add r4, sp, 0x34
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x18
- bl memcpy
- strh r5, [r4]
- add r2, sp, 0x54
- ldrh r2, [r2]
- strh r2, [r4, 0x2]
- ldr r0, _080F782C @ =gOamData_83E5214
- str r0, [r4, 0x4]
- ldr r0, _080F7830 @ =gSpriteAnimTable_83E52AC
- str r0, [r4, 0x8]
- mov r3, r9
- str r3, [r4, 0xC]
- ldr r0, _080F7834 @ =gDummySpriteAffineAnimTable
- str r0, [r4, 0x10]
- ldr r0, _080F7838 @ =nullsub_65
- str r0, [r4, 0x14]
- mov r0, r8
- ldr r1, [r0]
- movs r0, 0x1
- strb r0, [r1, 0xB]
- add r0, sp, 0x4
- bl AllocTilesForSpriteSheets
- adds r0, r6, 0
- bl LoadSpritePalettes
- movs r5, 0
- ldr r1, [sp, 0x4C]
- lsls r0, r1, 16
- movs r2, 0x80
- lsls r2, 14
- adds r2, r0
- mov r8, r2
- str r0, [sp, 0x58]
- ldr r3, [sp, 0x50]
- lsls r0, r3, 16
- movs r1, 0x80
- lsls r1, 14
- adds r7, r0, r1
- mov r9, r0
-_080F7700:
- adds r0, r4, 0
- mov r2, r8
- asrs r1, r2, 16
- asrs r2, r7, 16
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- bne _080F7718
- b _080F7850
-_080F7718:
- ldr r6, _080F7820 @ =gUnknown_020388B8
- ldr r2, [r6]
- lsls r0, r5, 2
- adds r2, 0xC
- adds r2, r0
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- ldr r1, _080F783C @ =gSprites
- adds r0, r1
- str r0, [r2]
- lsls r1, r5, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1
- bls _080F7700
- ldr r0, [r6]
- ldr r1, [r0, 0x10]
- mov r3, r9
- asrs r0, r3, 16
- adds r0, 0x60
- strh r0, [r1, 0x22]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- ldr r0, _080F7840 @ =gSpriteAnimTable_83E5274
- str r0, [r4, 0x8]
- ldr r0, _080F7844 @ =sub_80F78CC
- str r0, [r4, 0x14]
- ldr r0, _080F7848 @ =gOamData_83E521C
- str r0, [r4, 0x4]
- movs r5, 0
- ldr r0, [sp, 0x58]
- movs r1, 0x80
- lsls r1, 14
- adds r0, r1
- mov r10, r0
-_080F7770:
- lsls r2, r5, 4
- adds r2, 0x10
- mov r3, r9
- asrs r3, 16
- mov r8, r3
- add r2, r8
- lsls r2, 16
- asrs r2, 16
- adds r0, r4, 0
- mov r3, r10
- asrs r1, r3, 16
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _080F7860
- ldr r6, _080F7820 @ =gUnknown_020388B8
- ldr r1, [r6]
- lsls r0, r5, 2
- adds r1, 0x14
- adds r1, r0
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- ldr r7, _080F783C @ =gSprites
- adds r0, r7
- str r0, [r1]
- strh r5, [r0, 0x2E]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _080F7770
- ldr r0, _080F784C @ =SpriteCallbackDummy
- str r0, [r4, 0x14]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x40
- beq _080F7874
- ldr r1, [r6]
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- adds r0, r7
- str r0, [r1, 0x24]
- ldrb r2, [r0, 0x1]
- movs r1, 0x3F
- ands r1, r2
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0, 0x1]
- ldr r0, [r6]
- ldr r2, [r0, 0x24]
- ldrb r0, [r2, 0x3]
- movs r1, 0xC0
- orrs r0, r1
- strb r0, [r2, 0x3]
- ldr r0, [r6]
- ldr r0, [r0, 0x24]
- movs r1, 0x9
- bl StartSpriteAnim
- ldr r1, [r6]
- ldr r2, [r1, 0x24]
- ldr r3, [sp, 0x58]
- asrs r0, r3, 16
-.ifdef ENGLISH
- adds r0, 0x20
-.else
- adds r0, 0x18
-.endif
- strh r0, [r2, 0x20]
- ldr r2, [r1, 0x24]
- mov r0, r8
- adds r0, 0x50
- strh r0, [r2, 0x22]
- ldr r0, [r1, 0x24]
- movs r1, 0x1
- movs r2, 0x2
- movs r3, 0
- bl CalcCenterToCornerVec
- b _080F787A
- .align 2, 0
-_080F7820: .4byte gUnknown_020388B8
-_080F7824: .4byte gPokenavConditionMenuMisc_Gfx
-_080F7828: .4byte gUnknown_08E966B8
-_080F782C: .4byte gOamData_83E5214
-_080F7830: .4byte gSpriteAnimTable_83E52AC
-_080F7834: .4byte gDummySpriteAffineAnimTable
-_080F7838: .4byte nullsub_65
-_080F783C: .4byte gSprites
-_080F7840: .4byte gSpriteAnimTable_83E5274
-_080F7844: .4byte sub_80F78CC
-_080F7848: .4byte gOamData_83E521C
-_080F784C: .4byte SpriteCallbackDummy
-_080F7850:
- ldr r0, _080F785C @ =gUnknown_020388B8
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, 0xC
- b _080F7868
- .align 2, 0
-_080F785C: .4byte gUnknown_020388B8
-_080F7860:
- ldr r0, _080F7870 @ =gUnknown_020388B8
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, 0x14
-_080F7868:
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- b _080F78B0
- .align 2, 0
-_080F7870: .4byte gUnknown_020388B8
-_080F7874:
- ldr r1, [r6]
- movs r0, 0
- str r0, [r1, 0x24]
-_080F787A:
- ldr r4, _080F78C0 @ =gUnknown_020388B8
- ldr r1, [r4]
- ldr r0, [sp, 0x50]
- adds r0, 0x8
- strb r0, [r1, 0xA]
- ldr r1, [sp, 0x54]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x30
- str r0, [sp]
- movs r0, 0
- movs r2, 0xF
- movs r3, 0
- bl sub_814A5C0
- ldr r0, [sp, 0x4C]
- adds r0, 0x8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- ldrb r1, [r1, 0xA]
- bl sub_814A880
- ldr r0, _080F78C4 @ =sub_80F7908
- bl sub_814AABC
-_080F78B0:
- add sp, 0x5C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F78C0: .4byte gUnknown_020388B8
-_080F78C4: .4byte sub_80F7908
- thumb_func_end sub_80F761C
-
- thumb_func_start nullsub_65
-nullsub_65: @ 80F78C8
- bx lr
- thumb_func_end nullsub_65
-
- thumb_func_start sub_80F78CC
-sub_80F78CC: @ 80F78CC
- push {lr}
- adds r2, r0, 0
- ldr r0, _080F78F4 @ =gUnknown_020388B8
- ldr r0, [r0]
- movs r3, 0x2E
- ldrsh r1, [r2, r3]
- adds r0, 0x6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080F78F8
- lsls r1, 1
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
- b _080F7902
- .align 2, 0
-_080F78F4: .4byte gUnknown_020388B8
-_080F78F8:
- lsls r1, 25
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
-_080F7902:
- pop {r0}
- bx r0
- thumb_func_end sub_80F78CC
-
- thumb_func_start sub_80F7908
-sub_80F7908: @ 80F7908
- ldr r1, _080F791C @ =gUnknown_020388B8
- ldr r2, [r1]
- movs r1, 0x5
- ldrsb r1, [r2, r1]
- lsls r1, 4
- ldrb r2, [r2, 0xA]
- adds r1, r2
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080F791C: .4byte gUnknown_020388B8
- thumb_func_end sub_80F7908
-
- thumb_func_start sub_80F7920
-sub_80F7920: @ 80F7920
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- cmp r2, 0
- bne _080F7930
- ldr r2, _080F793C @ =gUnknown_083E49F4
-_080F7930:
- movs r3, 0x10
- bl sub_80F7960
- pop {r1}
- bx r1
- .align 2, 0
-_080F793C: .4byte gUnknown_083E49F4
- thumb_func_end sub_80F7920
-
- thumb_func_start sub_80F7940
-sub_80F7940: @ 80F7940
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- cmp r2, 0
- bne _080F7950
- ldr r2, _080F795C @ =gUnknown_083E49F4
-_080F7950:
- movs r3, 0x1
- bl sub_80F7960
- pop {r1}
- bx r1
- .align 2, 0
-_080F795C: .4byte gUnknown_083E49F4
- thumb_func_end sub_80F7940
-
- thumb_func_start sub_80F7960
-sub_80F7960: @ 80F7960
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _080F79DC @ =gUnknown_083E4A14
- str r4, [sp, 0x18]
- movs r4, 0x80
- add r5, sp, 0x18
- lsrs r6, r0, 16
- orrs r0, r4
- str r0, [r5, 0x4]
- str r2, [sp, 0x20]
- ldr r0, _080F79E0 @ =0xffff0000
- mov r8, r0
- add r4, sp, 0x20
- ldr r0, [r4, 0x4]
- mov r2, r8
- ands r0, r2
- orrs r0, r1
- str r0, [r4, 0x4]
- mov r0, sp
- movs r2, 0
- strh r6, [r0]
- strh r1, [r0, 0x2]
- ldr r0, _080F79E4 @ =gOamData_83E52B4
- str r0, [sp, 0x4]
- ldr r0, _080F79E8 @ =gSpriteAnimTable_83E533C
- str r0, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r0, _080F79EC @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, _080F79F0 @ =nullsub_65
- str r0, [sp, 0x14]
- lsls r3, 23
- lsrs r3, 16
- ldr r0, [r5, 0x4]
- mov r1, r8
- ands r0, r1
- orrs r0, r3
- str r0, [r5, 0x4]
- adds r0, r5, 0
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- bne _080F79F4
- movs r0, 0
- b _080F79FE
- .align 2, 0
-_080F79DC: .4byte gUnknown_083E4A14
-_080F79E0: .4byte 0xffff0000
-_080F79E4: .4byte gOamData_83E52B4
-_080F79E8: .4byte gSpriteAnimTable_83E533C
-_080F79EC: .4byte gDummySpriteAffineAnimTable
-_080F79F0: .4byte nullsub_65
-_080F79F4:
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F7A0C @ =gSprites
- adds r0, r1
-_080F79FE:
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080F7A0C: .4byte gSprites
- thumb_func_end sub_80F7960
-
- thumb_func_start sub_80F7A10
-sub_80F7A10: @ 80F7A10
- lsls r0, 24
- lsrs r0, 17
- ldr r2, _080F7A28 @ =gUnknown_083E4A14
- adds r0, r2
- ldr r2, _080F7A2C @ =0x040000d4
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, _080F7A30 @ =0x80000040
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- bx lr
- .align 2, 0
-_080F7A28: .4byte gUnknown_083E4A14
-_080F7A2C: .4byte 0x040000d4
-_080F7A30: .4byte 0x80000040
- thumb_func_end sub_80F7A10
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s
deleted file mode 100644
index 02b6a0a48..000000000
--- a/asm/mystery_event_script.s
+++ /dev/null
@@ -1,831 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start unref_sub_81261B4
-unref_sub_81261B4: @ 81261B4
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- ldrb r0, [r5]
- cmp r0, 0x1
- bne _08126204
- ldrb r0, [r5, 0x11]
- cmp r0, 0xF
- bne _08126204
- adds r6, r5, 0
- adds r6, 0x12
- adds r0, r6, 0
- bl sub_812618C
- cmp r0, 0
- bne _08126204
- adds r0, r5, 0
- adds r0, 0x16
- bl sub_812618C
- adds r4, r0, 0
- subs r4, r7
- adds r4, r5
- adds r0, r5, 0
- adds r0, 0x1A
- bl sub_812618C
- adds r1, r0, 0
- subs r1, r7
- adds r1, r5
- subs r1, r4
- adds r0, r4, 0
- bl sub_812616C
- adds r1, r0, 0
- adds r0, r6, 0
- bl sub_81261A4
- movs r0, 0x1
- b _08126206
-_08126204:
- movs r0, 0
-_08126206:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_81261B4
-
- thumb_func_start unref_sub_812620C
-unref_sub_812620C: @ 812620C
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- ldrb r0, [r5]
- cmp r0, 0x1
- bne _08126260
- ldrb r0, [r5, 0x11]
- cmp r0, 0x10
- bne _08126260
- adds r6, r5, 0
- adds r6, 0x12
- adds r0, r6, 0
- bl sub_812618C
- cmp r0, 0
- bne _08126260
- adds r0, r5, 0
- adds r0, 0x16
- bl sub_812618C
- adds r4, r0, 0
- subs r4, r7
- adds r4, r5
- adds r0, r5, 0
- adds r0, 0x1A
- bl sub_812618C
- adds r1, r0, 0
- subs r1, r7
- adds r1, r5
- subs r1, r4
- adds r0, r4, 0
- bl CalcCRC16
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r6, 0
- bl sub_81261A4
- movs r0, 0x1
- b _08126262
-_08126260:
- movs r0, 0
-_08126262:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_812620C
-
- thumb_func_start sub_8126268
-sub_8126268: @ 8126268
- push {lr}
- movs r2, 0
- ldr r3, _08126284 @ =gSaveBlock1 + 0x3A80
- movs r1, 0
-_08126270:
- adds r0, r3, r1
- ldrb r0, [r0]
- adds r2, r0
- adds r1, 0x1
- cmp r1, 0xB
- bls _08126270
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08126284: .4byte gSaveBlock1 + 0x3A80
- thumb_func_end sub_8126268
-
- thumb_func_start sub_8126288
-sub_8126288: @ 8126288
- push {r4,lr}
- ldr r4, _081262B4 @ =gSaveBlock1 + 0x3A80
- bl sub_8126268
- adds r1, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _081262B0
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _081262B0
- ldrh r0, [r4, 0x2]
- cmp r0, 0
- beq _081262B0
- cmp r1, 0
- beq _081262B0
- subs r0, r4, 0x4
- ldr r0, [r0]
- cmp r1, r0
- beq _081262B8
-_081262B0:
- movs r0, 0
- b _081262BA
- .align 2, 0
-_081262B4: .4byte gSaveBlock1 + 0x3A80
-_081262B8:
- movs r0, 0x1
-_081262BA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8126288
-
- thumb_func_start sub_81262C0
-sub_81262C0: @ 81262C0
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, _081262DC @ =gSaveBlock1 + 0x3A7C
- ldr r2, _081262E0 @ =0x01000008
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_081262DC: .4byte gSaveBlock1 + 0x3A7C
-_081262E0: .4byte 0x01000008
- thumb_func_end sub_81262C0
-
- thumb_func_start sub_81262E4
-sub_81262E4: @ 81262E4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r5, r1, 0
- lsls r2, 16
- lsrs r2, 16
- adds r6, r2, 0
- cmp r3, 0
- beq _08126304
- cmp r1, 0
- beq _08126304
- cmp r2, 0
- bne _0812630A
-_08126304:
- bl sub_81262C0
- b _0812632A
-_0812630A:
- ldr r4, _08126330 @ =gSaveBlock1
- movs r1, 0xEA
- lsls r1, 6
- adds r0, r4, r1
- strb r3, [r0]
- adds r1, 0x1
- adds r0, r4, r1
- strb r5, [r0]
- adds r1, 0x1
- adds r0, r4, r1
- strh r6, [r0]
- bl sub_8126268
- ldr r1, _08126334 @ =0x00003a7c
- adds r4, r1
- str r0, [r4]
-_0812632A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08126330: .4byte gSaveBlock1
-_08126334: .4byte 0x00003a7c
- thumb_func_end sub_81262E4
-
- thumb_func_start sub_8126338
-sub_8126338: @ 8126338
- push {r4,r5,lr}
- ldr r4, _0812634C @ =gSaveBlock1 + 0x3A80
- bl sub_8126288
- cmp r0, 0
- bne _08126350
- bl sub_81262C0
- movs r0, 0
- b _0812636E
- .align 2, 0
-_0812634C: .4byte gSaveBlock1 + 0x3A80
-_08126350:
- ldrh r5, [r4, 0x2]
- ldrb r0, [r4, 0x1]
- subs r0, 0x1
- strb r0, [r4, 0x1]
- lsls r0, 24
- cmp r0, 0
- bne _08126364
- bl sub_81262C0
- b _0812636C
-_08126364:
- bl sub_8126268
- subs r1, r4, 0x4
- str r0, [r1]
-_0812636C:
- adds r0, r5, 0
-_0812636E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8126338
-
- thumb_func_start script_status_stop_and_ret_1
-script_status_stop_and_ret_1: @ 8126374
- push {lr}
- bl StopScript
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end script_status_stop_and_ret_1
-
- thumb_func_start sub_8126380
-sub_8126380: @ 8126380
- push {r4-r7,lr}
- adds r7, r0, 0
- bl ScriptReadWord
- str r0, [r7, 0x68]
- adds r0, r7, 0
- bl ScriptReadHalfword
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r7, 0
- bl ScriptReadWord
- adds r6, r0, 0
- adds r0, r7, 0
- bl ScriptReadHalfword
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl ScriptReadWord
- adds r3, r0, 0
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_8126098
- cmp r0, 0x1
- bne _081263C4
- str r0, [r7, 0x70]
- b _081263C8
-_081263C4:
- bl sub_81260D0
-_081263C8:
- movs r0, 0x1
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8126380
-
- thumb_func_start sub_81263D0
-sub_81263D0: @ 81263D0
- movs r0, 0
- bx lr
- thumb_func_end sub_81263D0
-
- thumb_func_start sub_81263D4
-sub_81263D4: @ 81263D4
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- str r2, [r0, 0x6C]
- movs r0, 0
- bx lr
- thumb_func_end sub_81263D4
-
- thumb_func_start sub_81263E4
-sub_81263E4: @ 81263E4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r5, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- ldr r1, [r4, 0x68]
- subs r0, r1
- ldr r1, [r4, 0x64]
- adds r1, r0, r1
- cmp r5, 0xFF
- beq _08126408
- ldr r0, [r4, 0x6C]
- cmp r5, r0
- bne _0812640E
-_08126408:
- ldr r0, _08126418 @ =gStringVar4
- bl StringExpandPlaceholders
-_0812640E:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08126418: .4byte gStringVar4
- thumb_func_end sub_81263E4
-
- thumb_func_start sub_812641C
-sub_812641C: @ 812641C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- ldr r1, [r4, 0x68]
- subs r0, r1
- ldr r1, [r4, 0x64]
- adds r0, r1
- bl ScriptContext2_RunNewScript
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812641C
-
- thumb_func_start sub_8126438
-sub_8126438: @ 8126438
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- bl IsEnigmaBerryValid
- mov r8, r0
- adds r0, r7, 0
- bl ScriptReadWord
- adds r4, r0, 0
- ldr r0, [r7, 0x68]
- subs r4, r0
- ldr r0, [r7, 0x64]
- adds r4, r0
- ldr r6, _08126484 @ =gStringVar1
- ldr r5, _08126488 @ =gSaveBlock1 + 0x3160
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x7
- bl StringCopyN
- adds r0, r4, 0
- bl SetEnigmaBerry
- ldr r4, _0812648C @ =gStringVar2
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x7
- bl StringCopyN
- mov r0, r8
- cmp r0, 0
- bne _08126498
- ldr r0, _08126490 @ =gStringVar4
- ldr r1, _08126494 @ =gOtherText_BerryObtainedDadHasIt
- b _081264B8
- .align 2, 0
-_08126484: .4byte gStringVar1
-_08126488: .4byte gSaveBlock1 + 0x3160
-_0812648C: .4byte gStringVar2
-_08126490: .4byte gStringVar4
-_08126494: .4byte gOtherText_BerryObtainedDadHasIt
-_08126498:
- adds r0, r6, 0
- adds r1, r4, 0
- bl StringCompare
- cmp r0, 0
- beq _081264B4
- ldr r0, _081264AC @ =gStringVar4
- ldr r1, _081264B0 @ =gOtherText_BerryTransformed
- b _081264B8
- .align 2, 0
-_081264AC: .4byte gStringVar4
-_081264B0: .4byte gOtherText_BerryTransformed
-_081264B4:
- ldr r0, _081264D4 @ =gStringVar4
- ldr r1, _081264D8 @ =gOtherText_BerryAlreadyObtained
-_081264B8:
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r7, 0x6C]
- bl IsEnigmaBerryValid
- cmp r0, 0x1
- bne _081264E0
- ldr r0, _081264DC @ =0x0000402d
- movs r1, 0x1
- bl VarSet
- b _081264E4
- .align 2, 0
-_081264D4: .4byte gStringVar4
-_081264D8: .4byte gOtherText_BerryAlreadyObtained
-_081264DC: .4byte 0x0000402d
-_081264E0:
- movs r0, 0x1
- str r0, [r7, 0x6C]
-_081264E4:
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8126438
-
- thumb_func_start sub_81264F0
-sub_81264F0: @ 81264F0
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r0, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl GiveGiftRibbonToParty
- ldr r0, _0812651C @ =gStringVar4
- ldr r1, _08126520 @ =gOtherText_SpecialRibbonReceived
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812651C: .4byte gStringVar4
-_08126520: .4byte gOtherText_SpecialRibbonReceived
- thumb_func_end sub_81264F0
-
- thumb_func_start sub_8126524
-sub_8126524: @ 8126524
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r4, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r4, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- adds r5, r0, 0
- ldr r0, [r4, 0x68]
- subs r5, r0
- ldr r0, [r4, 0x64]
- adds r5, r0
- adds r0, r4, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r4, 0x68]
- subs r1, r0
- ldr r0, [r4, 0x64]
- adds r1, r0
- subs r1, r5
- lsls r1, 16
- lsrs r1, 16
- str r6, [sp]
- adds r0, r5, 0
- mov r2, r9
- mov r3, r8
- bl InitRamScript
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8126524
-
- thumb_func_start sub_812658C
-sub_812658C: @ 812658C
- push {r4,lr}
- adds r4, r0, 0
- bl EnableNationalPokedex
- ldr r0, _081265A8 @ =gStringVar4
- ldr r1, _081265AC @ =gOtherText_DexUpgraded
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081265A8: .4byte gStringVar4
-_081265AC: .4byte gOtherText_DexUpgraded
- thumb_func_end sub_812658C
-
- thumb_func_start sub_81265B0
-sub_81265B0: @ 81265B0
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x8]
- ldrb r0, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- bl sub_80EB890
- ldr r0, _081265D4 @ =gStringVar4
- ldr r1, _081265D8 @ =gOtherText_RareWordAdded
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081265D4: .4byte gStringVar4
-_081265D8: .4byte gOtherText_RareWordAdded
- thumb_func_end sub_81265B0
-
- thumb_func_start sub_81265DC
-sub_81265DC: @ 81265DC
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81262E4
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81265DC
-
- thumb_func_start sub_8126608
-sub_8126608: @ 8126608
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x88
- adds r6, r0, 0
- bl ScriptReadWord
- ldr r1, [r6, 0x68]
- subs r0, r1
- ldr r1, [r6, 0x64]
- adds r5, r0, r1
- movs r0, 0x64
- adds r0, r5
- mov r8, r0
- add r4, sp, 0x24
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bne _08126658
- ldr r0, _08126650 @ =gStringVar1
- ldr r1, _08126654 @ =gSystemText_Egg
- movs r2, 0xB
- bl StringCopyN
- b _08126662
- .align 2, 0
-_08126650: .4byte gStringVar1
-_08126654: .4byte gSystemText_Egg
-_08126658:
- ldr r0, _08126678 @ =gStringVar1
- ldr r1, _0812667C @ =gSystemText_Pokemon2
- movs r2, 0xB
- bl StringCopyN
-_08126662:
- ldr r0, _08126680 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _0812668C
- ldr r0, _08126684 @ =gStringVar4
- ldr r1, _08126688 @ =gOtherText_PartyIsFull
- bl StringExpandPlaceholders
- movs r0, 0x3
- b _081266F6
- .align 2, 0
-_08126678: .4byte gStringVar1
-_0812667C: .4byte gSystemText_Pokemon2
-_08126680: .4byte gPlayerPartyCount
-_08126684: .4byte gStringVar4
-_08126688: .4byte gOtherText_PartyIsFull
-_0812668C:
- ldr r7, _08126708 @ =gPlayerParty + 5 * 0x64
- adds r0, r7, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- mov r0, sp
- mov r1, r8
- movs r2, 0x24
- bl memcpy
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- beq _081266C6
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x2
- bl GetNationalPokedexFlag
- adds r0, r4, 0
- movs r1, 0x3
- bl GetNationalPokedexFlag
-_081266C6:
- adds r0, r7, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081266E4
- adds r0, r7, 0
- mov r1, sp
- bl GiveMailToMon2
-_081266E4:
- bl party_compaction
- bl CalculatePlayerPartyCount
- ldr r0, _0812670C @ =gStringVar4
- ldr r1, _08126710 @ =gOtherText_PokeWasSentOver
- bl StringExpandPlaceholders
- movs r0, 0x2
-_081266F6:
- str r0, [r6, 0x6C]
- movs r0, 0
- add sp, 0x88
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08126708: .4byte gPlayerParty + 5 * 0x64
-_0812670C: .4byte gStringVar4
-_08126710: .4byte gOtherText_PokeWasSentOver
- thumb_func_end sub_8126608
-
- thumb_func_start sub_8126714
-sub_8126714: @ 8126714
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r4, 0x68]
- subs r1, r0
- ldr r0, [r4, 0x64]
- adds r1, r0
- ldr r0, _08126748 @ =gSaveBlock2 + 0x498
- movs r2, 0xBC
- bl memcpy
- bl sub_813601C
- ldr r0, _0812674C @ =gStringVar4
- ldr r1, _08126750 @ =gOtherText_NewTrainerInHoenn
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126748: .4byte gSaveBlock2 + 0x498
-_0812674C: .4byte gStringVar4
-_08126750: .4byte gOtherText_NewTrainerInHoenn
- thumb_func_end sub_8126714
-
- thumb_func_start sub_8126754
-sub_8126754: @ 8126754
- push {r4,lr}
- adds r4, r0, 0
- bl EnableResetRTC
- ldr r0, _08126770 @ =gStringVar4
- ldr r1, _08126774 @ =gSystemText_ClockAdjustmentUsable
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126770: .4byte gStringVar4
-_08126774: .4byte gSystemText_ClockAdjustmentUsable
- thumb_func_end sub_8126754
-
- thumb_func_start sub_8126778
-sub_8126778: @ 8126778
- push {r4-r6,lr}
- adds r6, r0, 0
- bl ScriptReadWord
- adds r5, r0, 0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r4, r0, 0
- ldr r0, [r6, 0x68]
- subs r4, r0
- ldr r0, [r6, 0x64]
- adds r4, r0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r6, 0x68]
- subs r1, r0
- ldr r0, [r6, 0x64]
- adds r1, r0
- subs r1, r4
- adds r0, r4, 0
- bl sub_812616C
- cmp r5, r0
- beq _081267B6
- movs r0, 0
- str r0, [r6, 0x70]
- movs r0, 0x1
- str r0, [r6, 0x6C]
-_081267B6:
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8126778
-
- thumb_func_start sub_81267C0
-sub_81267C0: @ 81267C0
- push {r4-r6,lr}
- adds r6, r0, 0
- bl ScriptReadWord
- adds r5, r0, 0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r4, r0, 0
- ldr r0, [r6, 0x68]
- subs r4, r0
- ldr r0, [r6, 0x64]
- adds r4, r0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r6, 0x68]
- subs r1, r0
- ldr r0, [r6, 0x64]
- adds r1, r0
- subs r1, r4
- adds r0, r4, 0
- bl CalcCRC16
- lsls r0, 16
- lsrs r0, 16
- cmp r5, r0
- beq _08126802
- movs r0, 0
- str r0, [r6, 0x70]
- movs r0, 0x1
- str r0, [r6, 0x6C]
-_08126802:
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81267C0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s
index bd8db8a2c..542eed201 100644
--- a/asm/pokedex_area_screen.s
+++ b/asm/pokedex_area_screen.s
@@ -92,7 +92,7 @@ _08110720:
ldr r4, _0811073C @ =0x020006e8
adds r0, r4, 0
movs r1, 0
- bl sub_80FA8EC
+ bl InitRegionMap
movs r0, 0x88
lsls r0, 4
adds r4, r0
@@ -115,7 +115,7 @@ _08110746:
_08110752:
movs r0, 0x1
movs r1, 0x1
- bl sub_80FBCF0
+ bl CreateRegionMapPlayerIcon
movs r1, 0x8
negs r1, r1
movs r0, 0
@@ -1700,7 +1700,7 @@ _08111344:
lsls r0, 24
cmp r0, 0
bne _08111358
- bl sub_80FAB10
+ bl FreeRegionMapIconResources
ldr r0, [r4, 0x4]
bl SetMainCallback2
_08111358:
@@ -1740,7 +1740,7 @@ _08111390:
lsls r0, 24
cmp r0, 0
bne _081113A4
- bl sub_80FAB10
+ bl FreeRegionMapIconResources
ldr r0, [r4, 0x8]
bl SetMainCallback2
_081113A4:
@@ -1859,7 +1859,7 @@ _08111496:
ldr r4, _081114B4 @ =0x020006e8
adds r0, r4, 0
movs r1, 0
- bl sub_80FA8EC
+ bl InitRegionMap
movs r0, 0x88
lsls r0, 4
adds r4, r0
@@ -1882,7 +1882,7 @@ _081114BE:
_081114CA:
movs r0, 0x1
movs r1, 0x1
- bl sub_80FBCF0
+ bl CreateRegionMapPlayerIcon
movs r1, 0x8
negs r1, r1
movs r0, 0
diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s
deleted file mode 100644
index 5aa8b5901..000000000
--- a/asm/pokemon_icon.s
+++ /dev/null
@@ -1,788 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start unref_sub_809D26C
-unref_sub_809D26C: @ 809D26C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x18
- adds r6, r3, 0
- ldr r3, [sp, 0x2C]
- lsls r0, 16
- lsrs r0, 16
- lsls r3, 24
- lsrs r3, 24
- mov r8, sp
- ldr r4, _0809D2E0 @ =gOamData_83BC5E8
- str r4, [sp]
- ldr r5, _0809D2E4 @ =gMonIconTable
- lsls r4, r0, 2
- adds r4, r5
- ldr r4, [r4]
- str r4, [sp, 0x4]
- ldr r4, _0809D2E8 @ =gSpriteAnimTable_83BC62C
- str r4, [sp, 0x8]
- ldr r4, _0809D2EC @ =gSpriteAffineAnimTable_83BC660
- str r4, [sp, 0xC]
- str r1, [sp, 0x10]
- ldr r1, _0809D2F0 @ =gMonIconPaletteIndices
- adds r0, r1
- ldr r4, _0809D2F4 @ =0x0000dac0
- adds r1, r4, 0
- ldrb r0, [r0]
- adds r1, r0
- mov r0, r8
- strh r1, [r0, 0x14]
- lsls r2, 16
- asrs r2, 16
- lsls r6, 16
- asrs r6, 16
- mov r0, sp
- adds r1, r2, 0
- adds r2, r6, 0
- bl CreateMonIconSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _0809D2F8 @ =gSprites
- adds r0, r1
- bl UpdateMonIconFrame
- adds r0, r4, 0
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809D2E0: .4byte gOamData_83BC5E8
-_0809D2E4: .4byte gMonIconTable
-_0809D2E8: .4byte gSpriteAnimTable_83BC62C
-_0809D2EC: .4byte gSpriteAffineAnimTable_83BC660
-_0809D2F0: .4byte gMonIconPaletteIndices
-_0809D2F4: .4byte 0x0000dac0
-_0809D2F8: .4byte gSprites
- thumb_func_end unref_sub_809D26C
-
- thumb_func_start CreateMonIcon
-CreateMonIcon: @ 809D2FC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x30
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, [sp, 0x48]
- ldr r1, [sp, 0x4C]
- lsls r4, 16
- lsrs r4, 16
- lsls r2, 16
- lsrs r7, r2, 16
- lsls r3, 16
- lsrs r6, r3, 16
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _0809D38C @ =gOamData_83BC5E8
- str r0, [sp, 0x18]
- adds r0, r4, 0
- bl GetMonIconPtr
- str r0, [sp, 0x1C]
- ldr r0, _0809D390 @ =gSpriteAnimTable_83BC62C
- str r0, [sp, 0x20]
- ldr r0, _0809D394 @ =gSpriteAffineAnimTable_83BC660
- str r0, [sp, 0x24]
- str r5, [sp, 0x28]
- ldr r0, _0809D398 @ =gMonIconPaletteIndices
- adds r0, r4, r0
- ldr r1, _0809D39C @ =0x0000dac0
- adds r5, r1, 0
- ldrb r0, [r0]
- adds r1, r5, r0
- add r0, sp, 0x2C
- strh r1, [r0]
- add r1, sp, 0x18
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _0809D35A
- mov r0, sp
- strh r5, [r0, 0x14]
-_0809D35A:
- lsls r1, r7, 16
- asrs r1, 16
- lsls r2, r6, 16
- asrs r2, 16
- mov r0, sp
- mov r3, r8
- bl CreateMonIconSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _0809D3A0 @ =gSprites
- adds r0, r1
- bl UpdateMonIconFrame
- adds r0, r4, 0
- add sp, 0x30
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0809D38C: .4byte gOamData_83BC5E8
-_0809D390: .4byte gSpriteAnimTable_83BC62C
-_0809D394: .4byte gSpriteAffineAnimTable_83BC660
-_0809D398: .4byte gMonIconPaletteIndices
-_0809D39C: .4byte 0x0000dac0
-_0809D3A0: .4byte gSprites
- thumb_func_end CreateMonIcon
-
- thumb_func_start sub_809D3A4
-sub_809D3A4: @ 809D3A4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x18
- adds r6, r3, 0
- ldr r3, [sp, 0x2C]
- lsls r0, 16
- lsrs r0, 16
- lsls r3, 24
- lsrs r3, 24
- mov r8, sp
- ldr r4, _0809D418 @ =gOamData_83BC5E8
- str r4, [sp]
- ldr r5, _0809D41C @ =gMonIconTable
- lsls r4, r0, 2
- adds r4, r5
- ldr r4, [r4]
- str r4, [sp, 0x4]
- ldr r4, _0809D420 @ =gSpriteAnimTable_83BC62C
- str r4, [sp, 0x8]
- ldr r4, _0809D424 @ =gSpriteAffineAnimTable_83BC660
- str r4, [sp, 0xC]
- str r1, [sp, 0x10]
- ldr r1, _0809D428 @ =gMonIconPaletteIndices
- adds r0, r1
- ldr r4, _0809D42C @ =0x0000dac0
- adds r1, r4, 0
- ldrb r0, [r0]
- adds r1, r0
- mov r0, r8
- strh r1, [r0, 0x14]
- lsls r2, 16
- asrs r2, 16
- lsls r6, 16
- asrs r6, 16
- mov r0, sp
- adds r1, r2, 0
- adds r2, r6, 0
- bl CreateMonIconSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _0809D430 @ =gSprites
- adds r0, r1
- bl UpdateMonIconFrame
- adds r0, r4, 0
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809D418: .4byte gOamData_83BC5E8
-_0809D41C: .4byte gMonIconTable
-_0809D420: .4byte gSpriteAnimTable_83BC62C
-_0809D424: .4byte gSpriteAffineAnimTable_83BC660
-_0809D428: .4byte gMonIconPaletteIndices
-_0809D42C: .4byte 0x0000dac0
-_0809D430: .4byte gSprites
- thumb_func_end sub_809D3A4
-
- thumb_func_start mon_icon_convert_unown_species_id
-mon_icon_convert_unown_species_id: @ 809D434
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, SPECIES_UNOWN
- bne _0809D45E
- adds r0, r1, 0
- bl GetUnownLetterByPersonality
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0809D450
- movs r0, SPECIES_UNOWN
- b _0809D45A
-_0809D450:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_0809D45A:
- adds r1, r0, 0
- b _0809D46C
-_0809D45E:
- movs r0, 0xCE
- lsls r0, 1
- adds r1, r2, 0
- cmp r1, r0
- bls _0809D46C
- movs r1, 0x82
- lsls r1, 1
-_0809D46C:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end mon_icon_convert_unown_species_id
-
- thumb_func_start GetUnownLetterByPersonality
-GetUnownLetterByPersonality: @ 809D474
- push {lr}
- adds r2, r0, 0
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end GetUnownLetterByPersonality
-
- thumb_func_start sub_809D4A8
-sub_809D4A8: @ 809D4A8
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- mov r1, sp
- bl MailSpeciesToSpecies
- lsls r0, 16
- lsrs r0, 16
- cmp r0, SPECIES_UNOWN
- bne _0809D4DE
- mov r0, sp
- ldrh r0, [r0]
- cmp r0, 0
- bne _0809D4CE
- mov r1, sp
- adds r0, SPECIES_UNOWN
- b _0809D4D6
-_0809D4CE:
- mov r1, sp
- movs r2, 0xCE
- lsls r2, 1
- adds r0, r2
-_0809D4D6:
- strh r0, [r1]
- mov r0, sp
- ldrh r0, [r0]
- b _0809D4EA
-_0809D4DE:
- adds r0, r4, 0
- movs r1, 0
- bl mon_icon_convert_unown_species_id
- lsls r0, 16
- lsrs r0, 16
-_0809D4EA:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809D4A8
-
- thumb_func_start GetMonIconPtr
-GetMonIconPtr: @ 809D4F4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl mon_icon_convert_unown_species_id
- lsls r0, 16
- ldr r1, _0809D50C @ =gMonIconTable
- lsrs r0, 14
- adds r0, r1
- ldr r0, [r0]
- pop {r1}
- bx r1
- .align 2, 0
-_0809D50C: .4byte gMonIconTable
- thumb_func_end GetMonIconPtr
-
- thumb_func_start sub_809D510
-sub_809D510: @ 809D510
- push {lr}
- bl sub_809D7E8
- pop {r0}
- bx r0
- thumb_func_end sub_809D510
-
- thumb_func_start sub_809D51C
-sub_809D51C: @ 809D51C
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _0809D53C @ =gMonIconPaletteTable
-_0809D522:
- lsls r0, r4, 3
- adds r0, r5
- bl LoadSpritePalette
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0809D522
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D53C: .4byte gMonIconPaletteTable
- thumb_func_end sub_809D51C
-
- thumb_func_start unref_sub_809D540
-unref_sub_809D540: @ 809D540
- push {r4,lr}
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bls _0809D552
- movs r1, 0x82
- lsls r1, 1
-_0809D552:
- ldr r0, _0809D578 @ =gMonIconPaletteIndices
- adds r0, r1, r0
- ldrb r0, [r0]
- ldr r1, _0809D57C @ =gMonIconPaletteTable
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x4]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0809D572
- adds r0, r4, 0
- bl LoadSpritePalette
-_0809D572:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D578: .4byte gMonIconPaletteIndices
-_0809D57C: .4byte gMonIconPaletteTable
- thumb_func_end unref_sub_809D540
-
- thumb_func_start sub_809D580
-sub_809D580: @ 809D580
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0809D5AC @ =gMonIconPaletteIndices
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0809D5B0 @ =gMonIconPaletteTable
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x4]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0809D5A6
- adds r0, r4, 0
- bl LoadSpritePalette
-_0809D5A6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D5AC: .4byte gMonIconPaletteIndices
-_0809D5B0: .4byte gMonIconPaletteTable
- thumb_func_end sub_809D580
-
- thumb_func_start unref_sub_809D5B4
-unref_sub_809D5B4: @ 809D5B4
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _0809D5D4 @ =gMonIconPaletteTable
-_0809D5BA:
- lsls r0, r4, 3
- adds r0, r5
- ldrh r0, [r0, 0x4]
- bl FreeSpritePaletteByTag
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0809D5BA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D5D4: .4byte gMonIconPaletteTable
- thumb_func_end unref_sub_809D5B4
-
- thumb_func_start unref_sub_809D5D8
-unref_sub_809D5D8: @ 809D5D8
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bls _0809D5EA
- movs r1, 0x82
- lsls r1, 1
-_0809D5EA:
- ldr r0, _0809D600 @ =gMonIconPaletteIndices
- adds r0, r1, r0
- ldrb r0, [r0]
- ldr r1, _0809D604 @ =gMonIconPaletteTable
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x4]
- bl FreeSpritePaletteByTag
- pop {r0}
- bx r0
- .align 2, 0
-_0809D600: .4byte gMonIconPaletteIndices
-_0809D604: .4byte gMonIconPaletteTable
- thumb_func_end unref_sub_809D5D8
-
- thumb_func_start sub_809D608
-sub_809D608: @ 809D608
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0809D624 @ =gMonIconPaletteIndices
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0809D628 @ =gMonIconPaletteTable
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x4]
- bl FreeSpritePaletteByTag
- pop {r0}
- bx r0
- .align 2, 0
-_0809D624: .4byte gMonIconPaletteIndices
-_0809D628: .4byte gMonIconPaletteTable
- thumb_func_end sub_809D608
-
- thumb_func_start sub_809D62C
-sub_809D62C: @ 809D62C
- push {lr}
- bl UpdateMonIconFrame
- pop {r0}
- bx r0
- thumb_func_end sub_809D62C
-
- thumb_func_start UpdateMonIconFrame
-UpdateMonIconFrame: @ 809D638
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r4, r0, 0
- movs r7, 0
- adds r6, r4, 0
- adds r6, 0x2C
- ldrb r2, [r6]
- movs r0, 0x3F
- mov r9, r0
- ands r0, r2
- cmp r0, 0
- bne _0809D6EC
- movs r1, 0x2A
- adds r1, r4
- mov r8, r1
- ldrb r1, [r1]
- ldr r0, [r4, 0x8]
- lsls r1, 2
- adds r1, r0
- adds r5, r4, 0
- adds r5, 0x2B
- ldrb r0, [r5]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- ldrsh r3, [r0, r1]
- movs r0, 0x2
- negs r0, r0
- cmp r3, r0
- beq _0809D682
- adds r0, 0x1
- cmp r3, r0
- bne _0809D686
- b _0809D700
-_0809D682:
- strb r7, [r5]
- b _0809D700
-_0809D686:
- ldr r2, _0809D6E4 @ =gSpriteImageSizes
- ldrb r1, [r4, 0x3]
- lsrs r1, 6
- lsls r1, 1
- ldrb r0, [r4, 0x1]
- lsrs r0, 6
- lsls r0, 3
- adds r1, r0
- adds r1, r2
- ldrh r2, [r1]
- adds r1, r2, 0
- muls r1, r3
- ldr r0, [r4, 0xC]
- adds r0, r1
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r3, _0809D6E8 @ =0x06010000
- adds r1, r3
- bl RequestSpriteCopy
- mov r0, r8
- ldrb r1, [r0]
- ldr r0, [r4, 0x8]
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r5]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r0, 10
- lsrs r0, 26
- mov r1, r9
- ands r1, r0
- ldrb r2, [r6]
- movs r0, 0x40
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6]
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldrb r7, [r5]
- b _0809D700
- .align 2, 0
-_0809D6E4: .4byte gSpriteImageSizes
-_0809D6E8: .4byte 0x06010000
-_0809D6EC:
- lsls r0, r2, 26
- lsrs r0, 26
- subs r0, 0x1
- movs r1, 0x3F
- ands r0, r1
- movs r1, 0x40
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r6]
-_0809D700:
- adds r0, r7, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end UpdateMonIconFrame
-
- thumb_func_start CreateMonIconSprite
-CreateMonIconSprite: @ 809D710
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x38
- mov r9, r0
- adds r4, r1, 0
- adds r5, r2, 0
- mov r8, r3
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r0, 0
- str r0, [sp, 0x30]
- ldr r2, _0809D7D8 @ =gSpriteImageSizes
- mov r0, r9
- ldr r6, [r0]
- ldrb r1, [r6, 0x3]
- lsrs r1, 6
- lsls r1, 1
- ldrb r0, [r6, 0x1]
- lsrs r0, 6
- lsls r0, 3
- adds r1, r0
- adds r1, r2
- ldrh r2, [r1]
- ldr r1, _0809D7DC @ =0xffff0000
- add r3, sp, 0x30
- ldr r0, [r3, 0x4]
- ands r0, r1
- orrs r0, r2
- str r0, [r3, 0x4]
- add r1, sp, 0x18
- ldr r0, _0809D7E0 @ =0x0000ffff
- strh r0, [r1]
- mov r0, r9
- ldrh r2, [r0, 0x14]
- mov r0, sp
- adds r0, 0x1A
- strh r2, [r0]
- str r6, [sp, 0x1C]
- mov r2, r9
- ldr r0, [r2, 0x8]
- str r0, [sp, 0x20]
- str r3, [sp, 0x24]
- ldr r0, [r2, 0xC]
- str r0, [sp, 0x28]
- ldr r0, [r2, 0x10]
- str r0, [sp, 0x2C]
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- lsls r4, 16
- asrs r4, 16
- lsls r5, 16
- asrs r5, 16
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- mov r3, r8
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r6, _0809D7E4 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r4, r3, r6
- adds r5, r4, 0
- adds r5, 0x2C
- ldrb r1, [r5]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r5]
- adds r4, 0x3F
- ldrb r2, [r4]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r4]
- adds r6, 0xC
- adds r3, r6
- mov r2, r9
- ldr r1, [r2, 0x4]
- str r1, [r3]
- add sp, 0x38
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809D7D8: .4byte gSpriteImageSizes
-_0809D7DC: .4byte 0xffff0000
-_0809D7E0: .4byte 0x0000ffff
-_0809D7E4: .4byte gSprites
- thumb_func_end CreateMonIconSprite
-
- thumb_func_start sub_809D7E8
-sub_809D7E8: @ 809D7E8
- push {lr}
- sub sp, 0x8
- movs r1, 0
- str r1, [sp]
- ldr r3, _0809D81C @ =gSpriteImageSizes
- ldrb r2, [r0, 0x3]
- lsrs r2, 6
- lsls r2, 1
- ldrb r1, [r0, 0x1]
- lsrs r1, 6
- lsls r1, 3
- adds r2, r1
- adds r2, r3
- ldrh r3, [r2]
- ldr r2, _0809D820 @ =0xffff0000
- ldr r1, [sp, 0x4]
- ands r1, r2
- orrs r1, r3
- str r1, [sp, 0x4]
- mov r1, sp
- str r1, [r0, 0xC]
- bl DestroySprite
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0809D81C: .4byte gSpriteImageSizes
-_0809D820: .4byte 0xffff0000
- thumb_func_end sub_809D7E8
-
- thumb_func_start sub_809D824
-sub_809D824: @ 809D824
- mov r12, r0
- adds r0, 0x2A
- movs r3, 0
- strb r1, [r0]
- mov r2, r12
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x40
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- mov r0, r12
- adds r0, 0x2B
- strb r3, [r0]
- bx lr
- thumb_func_end sub_809D824
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s
index 3a1552f70..fe1b41724 100644
--- a/asm/pokemon_menu.s
+++ b/asm/pokemon_menu.s
@@ -2093,7 +2093,7 @@ _0808AB6C: .4byte gPaletteFade
_0808AB70: .4byte gTasks
_0808AB74: .4byte c2_exit_to_overworld_2_switch
_0808AB78:
- ldr r0, _0808AB8C @ =sub_80FC074
+ ldr r0, _0808AB8C @ =CB2_InitFlyRegionMap
bl SetMainCallback2
_0808AB7E:
adds r0, r4, 0
@@ -2103,7 +2103,7 @@ _0808AB84:
pop {r0}
bx r0
.align 2, 0
-_0808AB8C: .4byte sub_80FC074
+_0808AB8C: .4byte CB2_InitFlyRegionMap
thumb_func_end sub_808AB34
thumb_func_start sub_808AB90
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 757a2a5a2..cb6a40450 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -340,7 +340,7 @@ sub_80EBD30: @ 80EBD30
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
- bl sub_80FB260
+ bl UpdateRegionMapVideoRegs
bl sub_80EFE7C
pop {r0}
bx r0
@@ -10523,7 +10523,7 @@ sub_80F0FFC: @ 80F0FFC
ldrh r1, [r0]
adds r0, r5, 0
movs r2, 0
- bl sub_80FBFB4
+ bl GetMapSectionName
ldr r0, _080F1054 @ =gWindowConfig_81E710C
bl BasicInitMenuWindow
adds r0, r5, 0
@@ -14321,10 +14321,10 @@ sub_80F2DD8: @ 80F2DD8
push {lr}
movs r0, 0x7
movs r1, 0x7
- bl sub_80FBB3C
+ bl CreateRegionMapCursor
movs r0, 0x8
movs r1, 0x8
- bl sub_80FBCF0
+ bl CreateRegionMapPlayerIcon
bl sub_80FBF94
pop {r0}
bx r0
@@ -14333,7 +14333,7 @@ sub_80F2DD8: @ 80F2DD8
thumb_func_start sub_80F2DF4
sub_80F2DF4: @ 80F2DF4
push {lr}
- bl sub_80FAB10
+ bl FreeRegionMapIconResources
pop {r0}
bx r0
thumb_func_end sub_80F2DF4
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
deleted file mode 100644
index ce0121a40..000000000
--- a/asm/record_mixing.s
+++ /dev/null
@@ -1,543 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B9C6C
-sub_80B9C6C: @ 80B9C6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x58
- str r0, [sp, 0x2C]
- str r1, [sp, 0x30]
- str r3, [sp, 0x38]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x34]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x40]
- ldr r0, _080B9DA8 @ =gLinkPlayers
- ldrh r0, [r0, 0x4]
- bl SeedRng
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r3, 0
- add r0, sp, 0x1C
- mov r9, r0
- movs r1, 0x1D
- add r1, sp
- mov r10, r1
- mov r2, sp
- adds r2, 0xC
- str r2, [sp, 0x4C]
- movs r7, 0xFF
- add r4, sp, 0x8
- movs r2, 0
- mov r6, r9
- mov r5, r10
-_080B9CBC:
- mov r1, sp
- adds r1, r3
- adds r1, 0x4
- ldrb r0, [r1]
- orrs r0, r7
- strb r0, [r1]
- adds r0, r4, r3
- strb r2, [r0]
- lsls r1, r3, 1
- adds r0, r6, r1
- strb r2, [r0]
- adds r1, r5, r1
- strb r2, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080B9CBC
- movs r4, 0
- str r4, [sp, 0x3C]
- movs r3, 0
- mov r1, r8
- lsls r0, r1, 16
- lsrs r1, r0, 16
- str r0, [sp, 0x50]
- ldr r4, [sp, 0x30]
- ldr r0, [sp, 0x34]
- adds r2, r4, 0
- muls r2, r0
- str r2, [sp, 0x48]
- ldr r2, [sp, 0x3C]
- cmp r2, r1
- bcs _080B9D46
- mov r8, r1
-_080B9D00:
- ldr r4, [sp, 0x30]
- adds r0, r4, 0
- muls r0, r3
- ldr r1, [sp, 0x2C]
- adds r6, r1, r0
- ldr r0, [r6, 0x70]
- cmp r0, 0
- beq _080B9D3C
- movs r7, 0
- cmp r7, r0
- bcs _080B9D3C
- adds r4, r6, 0
- adds r4, 0x74
- mov r2, r9
- lsls r1, r3, 1
- movs r5, 0x1
-_080B9D20:
- lsls r0, r7, 1
- adds r0, r4, r0
- ldrh r0, [r0]
- cmp r0, 0
- bne _080B9D30
- adds r0, r7, r1
- adds r0, r2, r0
- strb r5, [r0]
-_080B9D30:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r0, [r6, 0x70]
- cmp r7, r0
- bcc _080B9D20
-_080B9D3C:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r8
- bcc _080B9D00
-_080B9D46:
- movs r7, 0
- movs r3, 0
- ldr r2, [sp, 0x50]
- cmp r2, 0
- beq _080B9E3E
- mov r4, sp
- adds r4, 0x24
- str r4, [sp, 0x44]
- movs r0, 0x25
- add r0, sp
- mov r8, r0
-_080B9D5C:
- ldr r1, [sp, 0x30]
- adds r0, r1, 0
- muls r0, r3
- ldr r2, [sp, 0x2C]
- adds r6, r2, r0
- lsls r1, r3, 1
- mov r4, r9
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080B9D7C
- mov r2, r10
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B9D86
-_080B9D7C:
- ldr r0, [sp, 0x3C]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x3C]
-_080B9D86:
- mov r4, r9
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B9DAC
- mov r2, r10
- adds r0, r2, r1
- ldrb r2, [r0]
- cmp r2, 0
- bne _080B9DAC
-_080B9D9A:
- lsls r1, r7, 1
- ldr r4, [sp, 0x44]
- adds r0, r4, r1
- strb r3, [r0]
- add r1, r8
- strb r2, [r1]
- b _080B9E2C
- .align 2, 0
-_080B9DA8: .4byte gLinkPlayers
-_080B9DAC:
- mov r2, r9
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B9DC0
- mov r4, r10
- adds r0, r4, r1
- ldrb r2, [r0]
- cmp r2, 0x1
- beq _080B9D9A
-_080B9DC0:
- mov r2, r9
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B9E32
- mov r4, r10
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B9E32
- lsls r5, r7, 1
- ldr r1, [sp, 0x44]
- adds r0, r1, r5
- strb r3, [r0]
- adds r0, r6, 0
- str r3, [sp, 0x54]
- bl sub_80B9BBC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- adds r0, 0x38
- bl sub_80B9BBC
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, [sp, 0x54]
- cmp r4, 0
- bne _080B9E0A
- cmp r1, 0
- beq _080B9E0E
- mov r2, r8
- adds r1, r2, r5
- movs r0, 0x1
- strb r0, [r1]
- b _080B9E2C
-_080B9E0A:
- cmp r1, 0
- beq _080B9E26
-_080B9E0E:
- str r3, [sp, 0x54]
- bl Random
- mov r4, r8
- adds r2, r4, r5
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- strb r0, [r2]
- ldr r3, [sp, 0x54]
- b _080B9E2C
-_080B9E26:
- mov r2, r8
- adds r0, r2, r5
- strb r1, [r0]
-_080B9E2C:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
-_080B9E32:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r4, [sp, 0x50]
- cmp r0, r4
- bcc _080B9D5C
-_080B9E3E:
- movs r3, 0
- ldr r1, [sp, 0x48]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 3
- ldr r2, [sp, 0x2C]
- adds r6, r2, r0
- ldr r1, [sp, 0x4C]
-_080B9E4E:
- lsls r0, r3, 2
- adds r0, r1, r0
- str r6, [r0]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080B9E4E
- ldr r0, [sp, 0x38]
- bl sub_80B9C4C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r4, [sp, 0x3C]
- cmp r4, 0x3
- beq _080B9E9C
- cmp r4, 0x3
- bgt _080B9E82
- cmp r4, 0x2
- beq _080B9E8A
- b _080B9EF0
-_080B9E82:
- ldr r0, [sp, 0x3C]
- cmp r0, 0x4
- beq _080B9EBC
- b _080B9EF0
-_080B9E8A:
- add r2, sp, 0x24
- movs r0, 0x1
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- movs r3, 0
- bl sub_80B9BC4
- b _080B9EF0
-_080B9E9C:
- ldr r0, _080B9EB8 @ =gUnknown_083D02B4
- lsls r1, 1
- adds r2, r1, r0
- ldrb r3, [r2]
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- add r2, sp, 0x24
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- bl sub_80B9BC4
- b _080B9EF0
- .align 2, 0
-_080B9EB8: .4byte gUnknown_083D02B4
-_080B9EBC:
- add r6, sp, 0x24
- ldr r4, _080B9F2C @ =gUnknown_083D02BA
- lsls r5, r1, 2
- adds r0, r5, r4
- ldrb r3, [r0]
- adds r0, r4, 0x1
- adds r0, r5, r0
- ldrb r0, [r0]
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- adds r2, r6, 0
- bl sub_80B9BC4
- adds r0, r4, 0x2
- adds r0, r5, r0
- ldrb r3, [r0]
- adds r4, 0x3
- adds r5, r4
- ldrb r0, [r5]
- str r0, [sp]
- ldr r0, [sp, 0x2C]
- ldr r1, [sp, 0x30]
- adds r2, r6, 0
- bl sub_80B9BC4
-_080B9EF0:
- ldr r1, [sp, 0x2C]
- ldr r2, [sp, 0x48]
- adds r6, r1, r2
- ldr r4, _080B9F30 @ =gSaveBlock1
- ldr r1, _080B9F34 @ =0x0000303c
- adds r0, r4, r1
- adds r1, r6, 0
- movs r2, 0x38
- bl memcpy
- ldr r2, _080B9F38 @ =0x00003074
- adds r4, r2
- adds r1, r6, 0
- adds r1, 0x38
- adds r0, r4, 0
- movs r2, 0x38
- bl memcpy
- ldr r0, [sp, 0x40]
- bl SeedRng
- add sp, 0x58
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B9F2C: .4byte gUnknown_083D02BA
-_080B9F30: .4byte gSaveBlock1
-_080B9F34: .4byte 0x0000303c
-_080B9F38: .4byte 0x00003074
- thumb_func_end sub_80B9C6C
-
- thumb_func_start sub_80B9F3C
-sub_80B9F3C: @ 80B9F3C
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- cmp r1, 0
- beq _080BA000
- ldrh r0, [r4]
- cmp r0, 0
- beq _080BA000
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bne _080B9FC8
- ldrh r0, [r4]
- movs r1, 0x1
- bl CheckBagHasItem
- lsls r0, 24
- cmp r0, 0
- bne _080B9FB8
- ldrh r0, [r4]
- movs r1, 0x1
- bl CheckPCHasItem
- lsls r0, 24
- cmp r0, 0
- bne _080B9FB8
- ldrh r0, [r4]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- beq _080B9FB8
- ldr r0, _080B9FA4 @ =0x00004001
- ldrh r1, [r4]
- bl VarSet
- ldr r0, _080B9FA8 @ =gStringVar1
- ldr r1, _080B9FAC @ =gLinkPlayers + 0x8
- bl StringCopy
- ldrh r1, [r4]
- ldr r0, _080B9FB0 @ =0x00000113
- cmp r1, r0
- bne _080BA000
- ldr r0, _080B9FB4 @ =0x00000853
- bl FlagSet
- b _080BA000
- .align 2, 0
-_080B9FA4: .4byte 0x00004001
-_080B9FA8: .4byte gStringVar1
-_080B9FAC: .4byte gLinkPlayers + 0x8
-_080B9FB0: .4byte 0x00000113
-_080B9FB4: .4byte 0x00000853
-_080B9FB8:
- ldr r0, _080B9FC4 @ =0x00004001
- movs r1, 0
- bl VarSet
- b _080BA000
- .align 2, 0
-_080B9FC4: .4byte 0x00004001
-_080B9FC8:
- ldrh r0, [r4]
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B9FF8
- ldr r0, _080B9FEC @ =0x00004001
- ldrh r1, [r4]
- bl VarSet
- ldr r0, _080B9FF0 @ =gStringVar1
- ldr r1, _080B9FF4 @ =gLinkPlayers + 0x8
- bl StringCopy
- b _080BA000
- .align 2, 0
-_080B9FEC: .4byte 0x00004001
-_080B9FF0: .4byte gStringVar1
-_080B9FF4: .4byte gLinkPlayers + 0x8
-_080B9FF8:
- ldr r0, _080BA008 @ =0x00004001
- movs r1, 0
- bl VarSet
-_080BA000:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA008: .4byte 0x00004001
- thumb_func_end sub_80B9F3C
-
- thumb_func_start sub_80BA00C
-sub_80BA00C: @ 80BA00C
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080BA030 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bhi _080BA09C
- lsls r0, 2
- ldr r1, _080BA034 @ =_080BA038
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BA030: .4byte gTasks
-_080BA034: .4byte _080BA038
- .align 2, 0
-_080BA038:
- .4byte _080BA086
- .4byte _080BA086
- .4byte _080BA050
- .4byte _080BA05A
- .4byte _080BA074
- .4byte _080BA08E
-_080BA050:
- bl SetSecretBase2Field_9_AndHideBG
- bl sub_8125E2C
- b _080BA086
-_080BA05A:
- bl sub_8125E6C
- lsls r0, 24
- cmp r0, 0
- beq _080BA09C
- bl ClearSecretBase2Field_9_2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- b _080BA09C
-_080BA074:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- ble _080BA09C
- bl sub_800832C
-_080BA086:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080BA09C
-_080BA08E:
- ldr r0, _080BA0A4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080BA09C
- adds r0, r2, 0
- bl DestroyTask
-_080BA09C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BA0A4: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_80BA00C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/region_map.s b/asm/region_map.s
deleted file mode 100644
index 44d6a4e91..000000000
--- a/asm/region_map.s
+++ /dev/null
@@ -1,3969 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80FA8EC
-sub_80FA8EC: @ 80FA8EC
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- bl sub_80FA904
-_080FA8F6:
- bl sub_80FA940
- lsls r0, 24
- cmp r0, 0
- bne _080FA8F6
- pop {r0}
- bx r0
- thumb_func_end sub_80FA8EC
-
- thumb_func_start sub_80FA904
-sub_80FA904: @ 80FA904
- push {r4,lr}
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _080FA928 @ =gUnknown_020388CC
- str r0, [r3]
- movs r2, 0x79
- adds r2, r0
- mov r12, r2
- movs r2, 0
- mov r4, r12
- strb r2, [r4]
- adds r0, 0x78
- strb r1, [r0]
- ldr r3, [r3]
- cmp r1, 0
- bne _080FA930
- ldr r0, _080FA92C @ =sub_80FAB78
- b _080FA932
- .align 2, 0
-_080FA928: .4byte gUnknown_020388CC
-_080FA92C: .4byte sub_80FAB78
-_080FA930:
- ldr r0, _080FA93C @ =sub_80FAD04
-_080FA932:
- str r0, [r3, 0x18]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FA93C: .4byte sub_80FAD04
- thumb_func_end sub_80FA904
-
- thumb_func_start sub_80FA940
-sub_80FA940: @ 80FA940
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r0, _080FA95C @ =gUnknown_020388CC
- ldr r0, [r0]
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _080FA952
- b _080FAAE2
-_080FA952:
- lsls r0, 2
- ldr r1, _080FA960 @ =_080FA964
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FA95C: .4byte gUnknown_020388CC
-_080FA960: .4byte _080FA964
- .align 2, 0
-_080FA964:
- .4byte _080FA984
- .4byte _080FA998
- .4byte _080FA9AC
- .4byte _080FA9BC
- .4byte _080FA9D8
- .4byte _080FA9F4
- .4byte _080FAA38
- .4byte _080FAAB4
-_080FA984:
- ldr r0, _080FA990 @ =gUnknown_083E5DA0
- ldr r1, _080FA994 @ =0x06008000
- bl LZ77UnCompVram
- b _080FAAF4
- .align 2, 0
-_080FA990: .4byte gUnknown_083E5DA0
-_080FA994: .4byte 0x06008000
-_080FA998:
- ldr r0, _080FA9A4 @ =gUnknown_083E6B04
- ldr r1, _080FA9A8 @ =0x0600e000
- bl LZ77UnCompVram
- b _080FAAF4
- .align 2, 0
-_080FA9A4: .4byte gUnknown_083E6B04
-_080FA9A8: .4byte 0x0600e000
-_080FA9AC:
- ldr r0, _080FA9B8 @ =gUnknown_083E5D60
- movs r1, 0x70
- movs r2, 0x60
- bl LoadPalette
- b _080FAAF4
- .align 2, 0
-_080FA9B8: .4byte gUnknown_083E5D60
-_080FA9BC:
- ldr r0, _080FA9D0 @ =gUnknown_083E5AF0
- ldr r1, _080FA9D4 @ =gUnknown_020388CC
- ldr r1, [r1]
- movs r2, 0xC0
- lsls r2, 1
- adds r1, r2
- bl LZ77UnCompWram
- b _080FAAF4
- .align 2, 0
-_080FA9D0: .4byte gUnknown_083E5AF0
-_080FA9D4: .4byte gUnknown_020388CC
-_080FA9D8:
- ldr r0, _080FA9EC @ =gUnknown_083E5B34
- ldr r1, _080FA9F0 @ =gUnknown_020388CC
- ldr r1, [r1]
- movs r3, 0xA0
- lsls r3, 2
- adds r1, r3
- bl LZ77UnCompWram
- b _080FAAF4
- .align 2, 0
-_080FA9EC: .4byte gUnknown_083E5B34
-_080FA9F0: .4byte gUnknown_020388CC
-_080FA9F4:
- bl sub_80FB32C
- ldr r4, _080FAA34 @ =gUnknown_020388CC
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x54
- ldrh r1, [r0]
- adds r0, 0x20
- strh r1, [r0]
- subs r0, 0x1E
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x76
- strh r0, [r1]
- ldrh r0, [r2, 0x14]
- bl sub_80FB758
- ldr r1, [r4]
- strb r0, [r1, 0x16]
- ldr r0, [r4]
- ldrh r0, [r0, 0x14]
- bl sub_80FB9C0
- adds r1, r0, 0
- ldr r0, [r4]
- strh r1, [r0, 0x14]
- ldrh r1, [r0, 0x14]
- movs r2, 0x10
- bl sub_80FBFB4
- b _080FAAF4
- .align 2, 0
-_080FAA34: .4byte gUnknown_020388CC
-_080FAA38:
- ldr r0, _080FAA60 @ =gUnknown_020388CC
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x78
- ldrb r1, [r0]
- cmp r1, 0
- bne _080FAA64
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_80FB170
- b _080FAAF4
- .align 2, 0
-_080FAA60: .4byte gUnknown_020388CC
-_080FAA64:
- adds r1, r4, 0
- adds r1, 0x54
- ldrh r0, [r1]
- lsls r0, 3
- subs r0, 0x34
- adds r2, r4, 0
- adds r2, 0x5C
- movs r3, 0
- strh r0, [r2]
- movs r5, 0x56
- adds r5, r4
- mov r12, r5
- ldrh r0, [r5]
- lsls r0, 3
- subs r0, 0x44
- adds r5, r4, 0
- adds r5, 0x5E
- strh r0, [r5]
- ldrh r1, [r1]
- adds r0, r4, 0
- adds r0, 0x64
- strh r1, [r0]
- mov r0, r12
- ldrh r1, [r0]
- adds r0, r4, 0
- adds r0, 0x66
- strh r1, [r0]
- movs r1, 0
- ldrsh r0, [r2, r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- movs r2, 0x80
- str r2, [sp]
- str r2, [sp, 0x4]
- str r3, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x48
- bl sub_80FB170
- b _080FAAF4
-_080FAAB4:
- bl sub_80FBA18
- bl sub_80FB260
- ldr r2, _080FAAE8 @ =gUnknown_020388CC
- ldr r0, [r2]
- movs r1, 0
- str r1, [r0, 0x1C]
- str r1, [r0, 0x20]
- adds r0, 0x7A
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x7E
- strb r1, [r0]
- ldr r1, _080FAAEC @ =REG_BG2CNT
- ldr r3, _080FAAF0 @ =0x0000bc8a
- adds r0, r3, 0
- strh r0, [r1]
- ldr r1, [r2]
- adds r1, 0x79
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080FAAE2:
- movs r0, 0
- b _080FAB02
- .align 2, 0
-_080FAAE8: .4byte gUnknown_020388CC
-_080FAAEC: .4byte REG_BG2CNT
-_080FAAF0: .4byte 0x0000bc8a
-_080FAAF4:
- ldr r0, _080FAB0C @ =gUnknown_020388CC
- ldr r1, [r0]
- adds r1, 0x79
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
-_080FAB02:
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080FAB0C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FA940
-
- thumb_func_start sub_80FAB10
-sub_80FAB10: @ 80FAB10
- push {r4,lr}
- ldr r4, _080FAB5C @ =gUnknown_020388CC
- ldr r0, [r4]
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _080FAB34
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x58
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080FAB34:
- ldr r0, [r4]
- ldr r0, [r0, 0x20]
- cmp r0, 0
- beq _080FAB54
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x70
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x72
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080FAB54:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FAB5C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FAB10
-
- thumb_func_start sub_80FAB60
-sub_80FAB60: @ 80FAB60
- push {lr}
- ldr r0, _080FAB74 @ =gUnknown_020388CC
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080FAB74: .4byte gUnknown_020388CC
- thumb_func_end sub_80FAB60
-
- thumb_func_start sub_80FAB78
-sub_80FAB78: @ 80FAB78
- push {r4,lr}
- movs r4, 0
- ldr r2, _080FAC14 @ =gUnknown_020388CC
- ldr r0, [r2]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r2]
- adds r0, 0x7C
- strb r4, [r0]
- ldr r3, _080FAC18 @ =gMain
- ldrh r1, [r3, 0x2C]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080FABAA
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0x2
- bls _080FABAA
- adds r1, 0x7C
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_080FABAA:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080FABC8
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- cmp r0, 0xF
- bhi _080FABC8
- adds r1, 0x7C
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_080FABC8:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FABE6
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1
- bls _080FABE6
- adds r1, 0x7B
- movs r0, 0xFF
- strb r0, [r1]
- movs r4, 0x1
-_080FABE6:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080FAC04
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- cmp r0, 0x1B
- bhi _080FAC04
- adds r1, 0x7B
- movs r0, 0x1
- strb r0, [r1]
- movs r4, 0x1
-_080FAC04:
- ldrh r3, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _080FAC1C
- movs r4, 0x4
- b _080FAC26
- .align 2, 0
-_080FAC14: .4byte gUnknown_020388CC
-_080FAC18: .4byte gMain
-_080FAC1C:
- movs r0, 0x2
- ands r0, r3
- cmp r0, 0
- beq _080FAC26
- movs r4, 0x5
-_080FAC26:
- cmp r4, 0x1
- bne _080FAC38
- ldr r0, [r2]
- adds r0, 0x7A
- movs r1, 0x4
- strb r1, [r0]
- ldr r1, [r2]
- ldr r0, _080FAC40 @ =_swiopen
- str r0, [r1, 0x18]
-_080FAC38:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080FAC40: .4byte _swiopen
- thumb_func_end sub_80FAB78
-
- thumb_func_start _swiopen
-_swiopen: @ 80FAC44
- push {r4,r5,lr}
- ldr r5, _080FAC5C @ =gUnknown_020388CC
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7A
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _080FAC60
- movs r0, 0x2
- b _080FACFA
- .align 2, 0
-_080FAC5C: .4byte gUnknown_020388CC
-_080FAC60:
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _080FAC76
- adds r1, 0x54
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080FAC76:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080FAC8E
- adds r1, 0x54
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_080FAC8E:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _080FACA6
- adds r1, 0x56
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080FACA6:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bge _080FACBE
- adds r1, 0x56
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_080FACBE:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- adds r1, 0x56
- ldrh r1, [r1]
- bl GetRegionMapSectionAt
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_80FB758
- ldr r1, [r5]
- strb r0, [r1, 0x16]
- ldr r0, [r5]
- ldrh r1, [r0, 0x14]
- cmp r4, r1
- beq _080FACEE
- strh r4, [r0, 0x14]
- ldrh r1, [r0, 0x14]
- movs r2, 0x10
- bl sub_80FBFB4
-_080FACEE:
- bl sub_80FBA18
- ldr r1, [r5]
- ldr r0, _080FAD00 @ =sub_80FAB78
- str r0, [r1, 0x18]
- movs r0, 0x3
-_080FACFA:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080FAD00: .4byte sub_80FAB78
- thumb_func_end _swiopen
-
- thumb_func_start sub_80FAD04
-sub_80FAD04: @ 80FAD04
- push {r4-r6,lr}
- movs r4, 0
- ldr r3, _080FADD4 @ =gUnknown_020388CC
- ldr r0, [r3]
- mov r12, r0
- adds r0, 0x6A
- strh r4, [r0]
- mov r5, r12
- adds r5, 0x68
- strh r4, [r5]
- ldr r2, _080FADD8 @ =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x40
- ands r0, r1
- adds r6, r3, 0
- adds r3, r2, 0
- cmp r0, 0
- beq _080FAD3E
- mov r0, r12
- adds r0, 0x5E
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0x34
- negs r0, r0
- cmp r1, r0
- ble _080FAD3E
- ldr r0, _080FADDC @ =0x0000ffff
- strh r0, [r5]
- movs r4, 0x1
-_080FAD3E:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080FAD5E
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5E
- movs r5, 0
- ldrsh r0, [r0, r5]
- cmp r0, 0x3B
- bgt _080FAD5E
- adds r1, 0x68
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_080FAD5E:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080FAD84
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0x5C
- movs r5, 0
- ldrsh r1, [r0, r5]
- movs r0, 0x2C
- negs r0, r0
- cmp r1, r0
- ble _080FAD84
- adds r1, r2, 0
- adds r1, 0x6A
- ldr r0, _080FADDC @ =0x0000ffff
- strh r0, [r1]
- movs r4, 0x1
-_080FAD84:
- ldrh r1, [r3, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080FADA4
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x5C
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0xAB
- bgt _080FADA4
- adds r1, 0x6A
- movs r0, 0x1
- strh r0, [r1]
- movs r4, 0x1
-_080FADA4:
- ldrh r2, [r3, 0x2E]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _080FADB0
- movs r4, 0x4
-_080FADB0:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _080FADBA
- movs r4, 0x5
-_080FADBA:
- cmp r4, 0x1
- bne _080FADCA
- ldr r0, [r6]
- ldr r1, _080FADE0 @ =sub_80FADE4
- str r1, [r0, 0x18]
- adds r0, 0x6C
- movs r1, 0
- strh r1, [r0]
-_080FADCA:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080FADD4: .4byte gUnknown_020388CC
-_080FADD8: .4byte gMain
-_080FADDC: .4byte 0x0000ffff
-_080FADE0: .4byte sub_80FADE4
- thumb_func_end sub_80FAD04
-
- thumb_func_start sub_80FADE4
-sub_80FADE4: @ 80FADE4
- push {r4,r5,lr}
- ldr r5, _080FAEB4 @ =gUnknown_020388CC
- ldr r2, [r5]
- adds r3, r2, 0
- adds r3, 0x5E
- adds r0, r2, 0
- adds r0, 0x68
- ldrh r0, [r0]
- ldrh r1, [r3]
- adds r0, r1
- strh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x5C
- adds r0, r2, 0
- adds r0, 0x6A
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- movs r2, 0
- ldrsh r1, [r3, r2]
- bl sub_80FB238
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x6C
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x8
- bne _080FAEBC
- adds r0, r2, 0
- adds r0, 0x5C
- movs r3, 0
- ldrsh r1, [r0, r3]
- adds r0, r1, 0
- adds r0, 0x2C
- cmp r0, 0
- bge _080FAE3C
- adds r0, 0x7
-_080FAE3C:
- asrs r0, 3
- adds r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r2, 0
- adds r0, 0x5E
- movs r4, 0
- ldrsh r1, [r0, r4]
- adds r0, r1, 0
- adds r0, 0x34
- cmp r0, 0
- bge _080FAE56
- adds r0, 0x7
-_080FAE56:
- asrs r0, 3
- adds r0, 0x2
- lsls r0, 16
- lsrs r1, r0, 16
- adds r4, r2, 0
- adds r4, 0x64
- adds r0, r2, 0
- adds r0, 0x66
- ldrh r2, [r4]
- cmp r3, r2
- bne _080FAE72
- ldrh r2, [r0]
- cmp r1, r2
- beq _080FAEA0
-_080FAE72:
- strh r3, [r4]
- strh r1, [r0]
- adds r0, r3, 0
- bl GetRegionMapSectionAt
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_80FB758
- ldr r1, [r5]
- strb r0, [r1, 0x16]
- ldr r0, [r5]
- ldrh r3, [r0, 0x14]
- cmp r4, r3
- beq _080FAE9C
- strh r4, [r0, 0x14]
- ldrh r1, [r0, 0x14]
- movs r2, 0x10
- bl sub_80FBFB4
-_080FAE9C:
- bl sub_80FBA18
-_080FAEA0:
- ldr r0, _080FAEB4 @ =gUnknown_020388CC
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x6C
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080FAEB8 @ =sub_80FAD04
- str r0, [r2, 0x18]
- movs r0, 0x3
- b _080FAEBE
- .align 2, 0
-_080FAEB4: .4byte gUnknown_020388CC
-_080FAEB8: .4byte sub_80FAD04
-_080FAEBC:
- movs r0, 0x2
-_080FAEBE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80FADE4
-
- thumb_func_start sub_80FAEC4
-sub_80FAEC4: @ 80FAEC4
- push {r4-r6,lr}
- ldr r1, _080FAF40 @ =gUnknown_020388CC
- ldr r2, [r1]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- adds r5, r1, 0
- cmp r3, 0
- bne _080FAF48
- subs r0, 0x1A
- strh r3, [r0]
- subs r0, 0x2
- strh r3, [r0]
- str r3, [r2, 0x40]
- str r3, [r2, 0x3C]
- adds r4, r2, 0
- adds r4, 0x54
- ldrh r0, [r4]
- lsls r0, 3
- subs r0, 0x34
- adds r1, r2, 0
- adds r1, 0x60
- strh r0, [r1]
- movs r0, 0x56
- adds r0, r2
- mov r12, r0
- ldrh r0, [r0]
- lsls r0, 3
- subs r0, 0x44
- adds r3, r2, 0
- adds r3, 0x62
- strh r0, [r3]
- movs r6, 0
- ldrsh r0, [r1, r6]
- lsls r0, 8
- cmp r0, 0
- bge _080FAF10
- adds r0, 0xF
-_080FAF10:
- asrs r0, 4
- str r0, [r2, 0x44]
- movs r1, 0
- ldrsh r0, [r3, r1]
- lsls r0, 8
- cmp r0, 0
- bge _080FAF20
- adds r0, 0xF
-_080FAF20:
- asrs r0, 4
- str r0, [r2, 0x48]
- ldrh r1, [r4]
- adds r0, r2, 0
- adds r0, 0x64
- strh r1, [r0]
- mov r3, r12
- ldrh r0, [r3]
- adds r1, r2, 0
- adds r1, 0x66
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 9
- str r0, [r2, 0x4C]
- ldr r0, _080FAF44 @ =0xfffff800
- b _080FAFA6
- .align 2, 0
-_080FAF40: .4byte gUnknown_020388CC
-_080FAF44: .4byte 0xfffff800
-_080FAF48:
- adds r0, r2, 0
- adds r0, 0x5C
- movs r6, 0
- ldrsh r0, [r0, r6]
- lsls r0, 8
- str r0, [r2, 0x3C]
- adds r0, r2, 0
- adds r0, 0x5E
- movs r1, 0
- ldrsh r0, [r0, r1]
- lsls r0, 8
- str r0, [r2, 0x40]
- adds r0, r2, 0
- adds r0, 0x60
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r0, [r2, 0x3C]
- cmp r0, 0
- bge _080FAF74
- adds r0, 0xF
-_080FAF74:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x44]
- ldr r0, [r2, 0x40]
- cmp r0, 0
- bge _080FAF82
- adds r0, 0xF
-_080FAF82:
- asrs r0, 4
- negs r0, r0
- str r0, [r2, 0x48]
- adds r0, r2, 0
- adds r0, 0x64
- ldrh r1, [r0]
- subs r0, 0x10
- strh r1, [r0]
- adds r0, 0x12
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0x56
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 8
- str r0, [r2, 0x4C]
- movs r0, 0x80
- lsls r0, 4
-_080FAFA6:
- str r0, [r2, 0x50]
- ldr r0, [r5]
- adds r0, 0x6E
- movs r1, 0
- strh r1, [r0]
- bl sub_80FBCA0
- bl sub_80FBDF8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80FAEC4
-
- thumb_func_start sub_80FAFC0
-sub_80FAFC0: @ 80FAFC0
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r0, _080FAFD8 @ =gUnknown_020388CC
- ldr r3, [r0]
- adds r2, r3, 0
- adds r2, 0x6E
- ldrh r1, [r2]
- adds r5, r0, 0
- cmp r1, 0xF
- bls _080FAFDC
- movs r0, 0
- b _080FB164
- .align 2, 0
-_080FAFD8: .4byte gUnknown_020388CC
-_080FAFDC:
- adds r0, r1, 0x1
- movs r1, 0
- strh r0, [r2]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bne _080FB050
- str r1, [r3, 0x44]
- str r1, [r3, 0x48]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r1, [r0]
- subs r0, 0x4
- strh r1, [r0]
- adds r0, 0x6
- ldrh r0, [r0]
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- adds r1, 0x1A
- ldrb r0, [r1]
- movs r2, 0x80
- lsls r2, 9
- cmp r0, 0
- bne _080FB012
- movs r2, 0x80
- lsls r2, 8
-_080FB012:
- str r2, [r3, 0x4C]
- movs r2, 0
- ldrb r0, [r1]
- cmp r0, 0
- bne _080FB01E
- movs r2, 0x1
-_080FB01E:
- strb r2, [r1]
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x78
- ldrb r0, [r0]
- ldr r2, _080FB048 @ =sub_80FAD04
- cmp r0, 0
- bne _080FB030
- ldr r2, _080FB04C @ =sub_80FAB78
-_080FB030:
- str r2, [r1, 0x18]
- adds r0, r1, 0
- adds r0, 0x58
- ldrh r0, [r0]
- adds r1, 0x5A
- ldrh r1, [r1]
- bl sub_80FBB3C
- bl sub_80FBE24
- movs r4, 0
- b _080FB132
- .align 2, 0
-_080FB048: .4byte sub_80FAD04
-_080FB04C: .4byte sub_80FAB78
-_080FB050:
- ldr r2, [r3, 0x3C]
- ldr r0, [r3, 0x44]
- adds r2, r0
- str r2, [r3, 0x3C]
- ldr r0, [r3, 0x40]
- ldr r1, [r3, 0x48]
- adds r0, r1
- str r0, [r3, 0x40]
- asrs r2, 8
- adds r4, r3, 0
- adds r4, 0x5C
- strh r2, [r4]
- ldr r0, [r3, 0x40]
- asrs r0, 8
- adds r1, r3, 0
- adds r1, 0x5E
- strh r0, [r1]
- ldr r0, [r3, 0x4C]
- ldr r1, [r3, 0x50]
- adds r0, r1
- str r0, [r3, 0x4C]
- ldr r2, [r3, 0x44]
- cmp r2, 0
- bge _080FB090
- adds r0, r3, 0
- adds r0, 0x60
- movs r6, 0
- ldrsh r1, [r4, r6]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- blt _080FB0A4
-_080FB090:
- cmp r2, 0
- ble _080FB0B4
- adds r0, r3, 0
- adds r0, 0x60
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _080FB0B4
-_080FB0A4:
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x60
- ldrh r2, [r0]
- subs r0, 0x4
- movs r1, 0
- strh r2, [r0]
- str r1, [r3, 0x44]
-_080FB0B4:
- ldr r2, [r5]
- ldr r4, [r2, 0x48]
- cmp r4, 0
- bge _080FB0D0
- adds r0, r2, 0
- adds r0, 0x5E
- adds r3, r2, 0
- adds r3, 0x62
- movs r6, 0
- ldrsh r1, [r0, r6]
- movs r6, 0
- ldrsh r0, [r3, r6]
- cmp r1, r0
- blt _080FB0E8
-_080FB0D0:
- cmp r4, 0
- ble _080FB0FA
- adds r1, r2, 0
- adds r1, 0x5E
- adds r0, r2, 0
- adds r0, 0x62
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r6, 0
- ldrsh r0, [r0, r6]
- cmp r1, r0
- ble _080FB0FA
-_080FB0E8:
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x62
- ldrh r1, [r0]
- adds r3, r2, 0
- adds r3, 0x5E
- movs r0, 0
- strh r1, [r3]
- str r0, [r2, 0x48]
-_080FB0FA:
- ldr r0, _080FB118 @ =gUnknown_020388CC
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r3, [r0]
- cmp r3, 0
- bne _080FB120
- ldr r1, [r2, 0x4C]
- ldr r0, _080FB11C @ =0x00007fff
- cmp r1, r0
- bgt _080FB130
- adds r0, 0x1
- str r0, [r2, 0x4C]
- str r3, [r2, 0x50]
- b _080FB130
- .align 2, 0
-_080FB118: .4byte gUnknown_020388CC
-_080FB11C: .4byte 0x00007fff
-_080FB120:
- ldr r0, [r2, 0x4C]
- movs r1, 0x80
- lsls r1, 9
- cmp r0, r1
- ble _080FB130
- str r1, [r2, 0x4C]
- movs r0, 0
- str r0, [r2, 0x50]
-_080FB130:
- movs r4, 0x1
-_080FB132:
- ldr r0, _080FB16C @ =gUnknown_020388CC
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x5C
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r1, r3, 0
- adds r1, 0x5E
- movs r2, 0
- ldrsh r1, [r1, r2]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp]
- ldr r2, [r3, 0x4C]
- lsls r2, 8
- lsrs r2, 16
- str r2, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- movs r2, 0x38
- movs r3, 0x48
- bl sub_80FB170
- adds r0, r4, 0
-_080FB164:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080FB16C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FAFC0
-
- thumb_func_start sub_80FB170
-sub_80FB170: @ 80FB170
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- ldr r7, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- lsls r4, 16
- lsrs r4, 16
- mov r8, r4
- lsls r7, 16
- adds r4, r7, 0
- lsrs r4, 16
- mov r9, r4
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _080FB230 @ =gUnknown_020388CC
- ldr r6, [r4]
- ldr r7, _080FB234 @ =gSineTable
- mov r12, r7
- adds r4, r5, 0
- adds r4, 0x40
- lsls r4, 1
- add r4, r12
- movs r7, 0
- ldrsh r4, [r4, r7]
- str r4, [sp]
- mov r7, r8
- muls r7, r4
- adds r4, r7, 0
- asrs r4, 8
- mov r10, r4
- str r4, [r6, 0x2C]
- lsls r5, 1
- add r5, r12
- movs r7, 0
- ldrsh r5, [r5, r7]
- negs r4, r5
- mov r7, r8
- muls r7, r4
- adds r4, r7, 0
- asrs r4, 8
- mov r12, r4
- str r4, [r6, 0x30]
- mov r7, r9
- muls r7, r5
- adds r5, r7, 0
- asrs r5, 8
- str r5, [r6, 0x34]
- ldr r7, [sp]
- mov r4, r9
- muls r4, r7
- asrs r4, 8
- mov r8, r4
- str r4, [r6, 0x38]
- lsls r0, 16
- asrs r0, 8
- lsls r2, 16
- asrs r2, 16
- lsls r4, r2, 8
- adds r0, r4
- lsls r3, 16
- asrs r3, 16
- adds r4, r3, 0
- muls r4, r5
- mov r5, r10
- muls r5, r2
- adds r4, r5
- subs r0, r4
- str r0, [r6, 0x24]
- lsls r1, 16
- asrs r1, 8
- lsls r0, r3, 8
- adds r1, r0
- mov r0, r8
- muls r0, r3
- mov r3, r12
- muls r3, r2
- adds r2, r3, 0
- adds r0, r2
- subs r1, r0
- str r1, [r6, 0x28]
- adds r6, 0x7D
- movs r0, 0x1
- strb r0, [r6]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB230: .4byte gUnknown_020388CC
-_080FB234: .4byte gSineTable
- thumb_func_end sub_80FB170
-
- thumb_func_start sub_80FB238
-sub_80FB238: @ 80FB238
- ldr r2, _080FB25C @ =gUnknown_020388CC
- ldr r2, [r2]
- lsls r0, 16
- asrs r0, 8
- movs r3, 0xE0
- lsls r3, 5
- adds r0, r3
- str r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 8
- movs r0, 0x90
- lsls r0, 6
- adds r1, r0
- str r1, [r2, 0x28]
- adds r2, 0x7D
- movs r0, 0x1
- strb r0, [r2]
- bx lr
- .align 2, 0
-_080FB25C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FB238
-
- thumb_func_start sub_80FB260
-sub_80FB260: @ 80FB260
- push {lr}
- ldr r0, _080FB29C @ =gUnknown_020388CC
- ldr r2, [r0]
- adds r3, r2, 0
- adds r3, 0x7D
- ldrb r0, [r3]
- cmp r0, 0
- beq _080FB298
- ldr r1, _080FB2A0 @ =REG_BG2PA
- ldr r0, [r2, 0x2C]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, [r2, 0x34]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, [r2, 0x30]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, [r2, 0x38]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, [r2, 0x24]
- str r0, [r1]
- adds r1, 0x4
- ldr r0, [r2, 0x28]
- str r0, [r1]
- movs r0, 0
- strb r0, [r3]
-_080FB298:
- pop {r0}
- bx r0
- .align 2, 0
-_080FB29C: .4byte gUnknown_020388CC
-_080FB2A0: .4byte REG_BG2PA
- thumb_func_end sub_80FB260
-
- thumb_func_start sub_80FB2A4
-sub_80FB2A4: @ 80FB2A4
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- movs r0, 0x80
- lsls r0, 1
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x38
- movs r3, 0x48
- bl sub_80FB170
- bl sub_80FB260
- ldr r0, _080FB2E8 @ =gUnknown_020388CC
- ldr r2, [r0]
- ldr r1, [r2, 0x20]
- cmp r1, 0
- beq _080FB2E0
- negs r0, r4
- strh r0, [r1, 0x24]
- ldr r1, [r2, 0x20]
- negs r0, r5
- strh r0, [r1, 0x26]
-_080FB2E0:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB2E8: .4byte gUnknown_020388CC
- thumb_func_end sub_80FB2A4
-
- thumb_func_start GetRegionMapSectionAt
-GetRegionMapSectionAt: @ 80FB2EC
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- ldr r0, _080FB30C @ =0xfffe0000
- adds r1, r0
- lsrs r2, r1, 16
- cmp r2, 0xE
- bhi _080FB306
- cmp r3, 0
- beq _080FB306
- cmp r3, 0x1C
- bls _080FB310
-_080FB306:
- movs r0, 0x58
- b _080FB324
- .align 2, 0
-_080FB30C: .4byte 0xfffe0000
-_080FB310:
- subs r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r1, _080FB328 @ =gRegionMapSections
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r1
- ldrb r0, [r0]
-_080FB324:
- pop {r1}
- bx r1
- .align 2, 0
-_080FB328: .4byte gRegionMapSections
- thumb_func_end GetRegionMapSectionAt
-
- thumb_func_start sub_80FB32C
-sub_80FB32C: @ 80FB32C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _080FB358 @ =gSaveBlock1
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- adds r2, r0, 0
- cmp r1, 0x19
- bne _080FB35C
- ldrb r0, [r2, 0x5]
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bhi _080FB35C
- bl sub_80FB600
- b _080FB5E8
- .align 2, 0
-_080FB358: .4byte gSaveBlock1
-_080FB35C:
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- movs r1, 0x5
- ldrsb r1, [r2, r1]
- bl get_map_light_level_by_bank_and_number
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x8
- bhi _080FB3A4
- lsls r0, 2
- ldr r1, _080FB37C @ =_080FB380
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FB37C: .4byte _080FB380
- .align 2, 0
-_080FB380:
- .4byte _080FB3A4
- .4byte _080FB3A4
- .4byte _080FB3A4
- .4byte _080FB3E0
- .4byte _080FB3A4
- .4byte _080FB3A4
- .4byte _080FB3E0
- .4byte _080FB464
- .4byte _080FB428
-_080FB3A4:
- ldr r4, _080FB3D4 @ =gUnknown_020388CC
- ldr r0, [r4]
- ldr r3, _080FB3D8 @ =gMapHeader
- ldrb r1, [r3, 0x14]
- movs r2, 0
- strh r1, [r0, 0x14]
- adds r0, 0x7F
- strb r2, [r0]
- ldr r0, [r3]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldr r0, _080FB3DC @ =gSaveBlock1
- ldrh r6, [r0]
- ldrh r3, [r0, 0x2]
- ldr r1, [r4]
- ldrh r0, [r1, 0x14]
- cmp r0, 0x45
- beq _080FB3CC
- b _080FB4CC
-_080FB3CC:
- adds r1, 0x7F
- movs r0, 0x1
- strb r0, [r1]
- b _080FB4CC
- .align 2, 0
-_080FB3D4: .4byte gUnknown_020388CC
-_080FB3D8: .4byte gMapHeader
-_080FB3DC: .4byte gSaveBlock1
-_080FB3E0:
- ldr r4, _080FB420 @ =gSaveBlock1
- adds r0, r4, 0
- adds r0, 0x24
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- adds r1, 0x25
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r2, r0, 0
- ldr r0, _080FB424 @ =gUnknown_020388CC
- ldr r0, [r0]
- ldrb r1, [r2, 0x14]
- strh r1, [r0, 0x14]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r2]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldrh r6, [r4, 0x28]
- ldrh r3, [r4, 0x2A]
- b _080FB4CC
- .align 2, 0
-_080FB420: .4byte gSaveBlock1
-_080FB424: .4byte gUnknown_020388CC
-_080FB428:
- ldr r4, _080FB45C @ =gSaveBlock1
- movs r0, 0x14
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x15
- ldrsb r1, [r4, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r2, r0, 0
- ldr r0, _080FB460 @ =gUnknown_020388CC
- ldr r0, [r0]
- ldrb r1, [r2, 0x14]
- strh r1, [r0, 0x14]
- adds r0, 0x7F
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r2]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldrh r6, [r4, 0x18]
- ldrh r3, [r4, 0x1A]
- b _080FB4CC
- .align 2, 0
-_080FB45C: .4byte gSaveBlock1
-_080FB460: .4byte gUnknown_020388CC
-_080FB464:
- ldr r5, _080FB48C @ =gUnknown_020388CC
- ldr r0, [r5]
- ldr r1, _080FB490 @ =gMapHeader
- ldrb r1, [r1, 0x14]
- strh r1, [r0, 0x14]
- cmp r1, 0x57
- beq _080FB498
- ldr r4, _080FB494 @ =gSaveBlock1 + 0x24
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r4, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r2, r0, 0
- b _080FB4B6
- .align 2, 0
-_080FB48C: .4byte gUnknown_020388CC
-_080FB490: .4byte gMapHeader
-_080FB494: .4byte gSaveBlock1 + 0x24
-_080FB498:
- ldr r4, _080FB548 @ =gSaveBlock1 + 0x14
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ldrsb r1, [r4, r1]
- lsls r1, 16
- lsrs r1, 16
- bl get_mapheader_by_bank_and_number
- adds r2, r0, 0
- ldr r1, [r5]
- ldrb r0, [r2, 0x14]
- strh r0, [r1, 0x14]
-_080FB4B6:
- ldr r0, _080FB54C @ =gUnknown_020388CC
- ldr r0, [r0]
- adds r0, 0x7F
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- ldrh r2, [r0]
- ldrh r0, [r0, 0x4]
- mov r8, r0
- ldrh r6, [r4, 0x4]
- ldrh r3, [r4, 0x6]
-_080FB4CC:
- mov r9, r6
- ldr r4, _080FB54C @ =gUnknown_020388CC
- ldr r0, [r4]
- ldrh r5, [r0, 0x14]
- lsls r0, r5, 3
- ldr r1, _080FB550 @ =gRegionMapLocations
- adds r0, r1
- mov r10, r0
- ldrb r7, [r0, 0x2]
- adds r0, r2, 0
- adds r1, r7, 0
- str r3, [sp]
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r3, [sp]
- cmp r1, 0
- bne _080FB4F4
- movs r1, 0x1
-_080FB4F4:
- adds r0, r6, 0
- str r3, [sp]
- bl __udivsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, [sp]
- cmp r6, r7
- bcc _080FB50C
- subs r0, r7, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FB50C:
- mov r2, r10
- ldrb r4, [r2, 0x3]
- mov r0, r8
- adds r1, r4, 0
- str r3, [sp]
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r3, [sp]
- cmp r1, 0
- bne _080FB526
- movs r1, 0x1
-_080FB526:
- adds r0, r3, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r4
- bcc _080FB53A
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
-_080FB53A:
- cmp r5, 0x24
- beq _080FB59C
- cmp r5, 0x24
- bgt _080FB554
- cmp r5, 0x1D
- beq _080FB55E
- b _080FB5BE
- .align 2, 0
-_080FB548: .4byte gSaveBlock1 + 0x14
-_080FB54C: .4byte gUnknown_020388CC
-_080FB550: .4byte gRegionMapLocations
-_080FB554:
- cmp r5, 0x29
- beq _080FB566
- cmp r5, 0x33
- beq _080FB566
- b _080FB5BE
-_080FB55E:
- cmp r3, 0
- beq _080FB5BE
- movs r6, 0
- b _080FB5BE
-_080FB566:
- movs r6, 0
- ldr r1, _080FB598 @ =gSaveBlock1
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x20
- ble _080FB574
- movs r6, 0x1
-_080FB574:
- cmp r0, 0x33
- ble _080FB57E
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FB57E:
- movs r3, 0
- movs r2, 0x2
- ldrsh r0, [r1, r2]
- cmp r0, 0x25
- ble _080FB58A
- movs r3, 0x1
-_080FB58A:
- cmp r0, 0x38
- ble _080FB5BE
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- b _080FB5BE
- .align 2, 0
-_080FB598: .4byte gSaveBlock1
-_080FB59C:
- movs r6, 0
- mov r0, r9
- cmp r0, 0xE
- bls _080FB5A6
- movs r6, 0x1
-_080FB5A6:
- mov r1, r9
- cmp r1, 0x1C
- bls _080FB5B2
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FB5B2:
- mov r2, r9
- cmp r2, 0x36
- bls _080FB5BE
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FB5BE:
- ldr r0, _080FB5F8 @ =gUnknown_020388CC
- ldr r2, [r0]
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- ldr r1, _080FB5FC @ =gRegionMapLocations
- adds r0, r1
- ldrb r0, [r0]
- adds r0, r6, r0
- adds r0, 0x1
- adds r1, r2, 0
- adds r1, 0x54
- strh r0, [r1]
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- ldr r1, _080FB5FC @ =gRegionMapLocations
- adds r0, r1
- ldrb r0, [r0, 0x1]
- adds r0, r3, r0
- adds r0, 0x2
- adds r2, 0x56
- strh r0, [r2]
-_080FB5E8:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB5F8: .4byte gUnknown_020388CC
-_080FB5FC: .4byte gRegionMapLocations
- thumb_func_end sub_80FB32C
-
- thumb_func_start sub_80FB600
-sub_80FB600: @ 80FB600
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r7, 0
- movs r0, 0
- mov r8, r0
- mov r4, sp
- adds r4, 0x1
- mov r5, sp
- adds r5, 0x2
- add r6, sp, 0x4
- mov r0, sp
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl GetSSTidalLocation
- lsls r0, 24
- lsrs r0, 24
- mov r10, r5
- cmp r0, 0x4
- bhi _080FB694
- lsls r0, 2
- ldr r1, _080FB63C @ =_080FB640
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FB63C: .4byte _080FB640
- .align 2, 0
-_080FB640:
- .4byte _080FB694
- .4byte _080FB654
- .4byte _080FB664
- .4byte _080FB674
- .4byte _080FB684
-_080FB654:
- ldr r2, _080FB660 @ =gUnknown_020388CC
- ldr r1, [r2]
- movs r0, 0x8
- strh r0, [r1, 0x14]
- b _080FB710
- .align 2, 0
-_080FB660: .4byte gUnknown_020388CC
-_080FB664:
- ldr r2, _080FB670 @ =gUnknown_020388CC
- ldr r1, [r2]
- movs r0, 0xC
- strh r0, [r1, 0x14]
- b _080FB710
- .align 2, 0
-_080FB670: .4byte gUnknown_020388CC
-_080FB674:
- ldr r2, _080FB680 @ =gUnknown_020388CC
- ldr r1, [r2]
- movs r0, 0x27
- strh r0, [r1, 0x14]
- b _080FB710
- .align 2, 0
-_080FB680: .4byte gUnknown_020388CC
-_080FB684:
- ldr r2, _080FB690 @ =gUnknown_020388CC
- ldr r1, [r2]
- movs r0, 0x2E
- strh r0, [r1, 0x14]
- b _080FB710
- .align 2, 0
-_080FB690: .4byte gUnknown_020388CC
-_080FB694:
- mov r0, sp
- ldrb r0, [r0]
- ldrb r1, [r4]
- bl get_mapheader_by_bank_and_number
- ldr r1, _080FB750 @ =gUnknown_020388CC
- mov r9, r1
- ldr r2, [r1]
- ldrb r1, [r0, 0x14]
- strh r1, [r2, 0x14]
- ldr r6, [r0]
- ldr r1, _080FB754 @ =gRegionMapLocations
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- adds r5, r0, r1
- ldrb r4, [r5, 0x2]
- ldr r0, [r6]
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _080FB6C6
- movs r1, 0x1
-_080FB6C6:
- mov r2, r10
- movs r3, 0
- ldrsh r0, [r2, r3]
- bl __divsi3
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r8, r4
- bcc _080FB6E2
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
-_080FB6E2:
- ldrb r4, [r5, 0x3]
- ldr r0, [r6, 0x4]
- adds r1, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _080FB6F6
- movs r1, 0x1
-_080FB6F6:
- mov r2, sp
- movs r3, 0x4
- ldrsh r0, [r2, r3]
- bl __divsi3
- lsls r0, 16
- lsrs r7, r0, 16
- mov r2, r9
- cmp r7, r4
- bcc _080FB710
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
-_080FB710:
- ldr r0, [r2]
- adds r0, 0x7F
- movs r1, 0
- strb r1, [r0]
- ldr r2, [r2]
- ldr r3, _080FB754 @ =gRegionMapLocations
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0]
- add r0, r8
- adds r0, 0x1
- adds r1, r2, 0
- adds r1, 0x54
- strh r0, [r1]
- ldrh r0, [r2, 0x14]
- lsls r0, 3
- adds r0, r3
- ldrb r0, [r0, 0x1]
- adds r0, r7, r0
- adds r0, 0x2
- adds r2, 0x56
- strh r0, [r2]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FB750: .4byte gUnknown_020388CC
-_080FB754: .4byte gRegionMapLocations
- thumb_func_end sub_80FB600
-
- thumb_func_start sub_80FB758
-sub_80FB758: @ 80FB758
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x58
- bls _080FB764
- b _080FB9A0
-_080FB764:
- lsls r0, 2
- ldr r1, _080FB770 @ =_080FB774
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FB770: .4byte _080FB774
- .align 2, 0
-_080FB774:
- .4byte _080FB8DC
- .4byte _080FB8E4
- .4byte _080FB8EA
- .4byte _080FB8F4
- .4byte _080FB8FC
- .4byte _080FB904
- .4byte _080FB90C
- .4byte _080FB914
- .4byte _080FB91C
- .4byte _080FB924
- .4byte _080FB92C
- .4byte _080FB934
- .4byte _080FB93C
- .4byte _080FB944
- .4byte _080FB94C
- .4byte _080FB954
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB96C
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB988
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB9A0
- .4byte _080FB8D8
-_080FB8D8:
- movs r0, 0
- b _080FB9A2
-_080FB8DC:
- ldr r0, _080FB8E0 @ =0x0000080f
- b _080FB956
- .align 2, 0
-_080FB8E0: .4byte 0x0000080f
-_080FB8E4:
- movs r0, 0x81
- lsls r0, 4
- b _080FB956
-_080FB8EA:
- ldr r0, _080FB8F0 @ =0x00000811
- b _080FB956
- .align 2, 0
-_080FB8F0: .4byte 0x00000811
-_080FB8F4:
- ldr r0, _080FB8F8 @ =0x00000812
- b _080FB956
- .align 2, 0
-_080FB8F8: .4byte 0x00000812
-_080FB8FC:
- ldr r0, _080FB900 @ =0x00000813
- b _080FB956
- .align 2, 0
-_080FB900: .4byte 0x00000813
-_080FB904:
- ldr r0, _080FB908 @ =0x00000814
- b _080FB956
- .align 2, 0
-_080FB908: .4byte 0x00000814
-_080FB90C:
- ldr r0, _080FB910 @ =0x00000815
- b _080FB956
- .align 2, 0
-_080FB910: .4byte 0x00000815
-_080FB914:
- ldr r0, _080FB918 @ =0x00000816
- b _080FB956
- .align 2, 0
-_080FB918: .4byte 0x00000816
-_080FB91C:
- ldr r0, _080FB920 @ =0x00000817
- b _080FB956
- .align 2, 0
-_080FB920: .4byte 0x00000817
-_080FB924:
- ldr r0, _080FB928 @ =0x00000818
- b _080FB956
- .align 2, 0
-_080FB928: .4byte 0x00000818
-_080FB92C:
- ldr r0, _080FB930 @ =0x00000819
- b _080FB956
- .align 2, 0
-_080FB930: .4byte 0x00000819
-_080FB934:
- ldr r0, _080FB938 @ =0x0000081a
- b _080FB956
- .align 2, 0
-_080FB938: .4byte 0x0000081a
-_080FB93C:
- ldr r0, _080FB940 @ =0x0000081b
- b _080FB956
- .align 2, 0
-_080FB940: .4byte 0x0000081b
-_080FB944:
- ldr r0, _080FB948 @ =0x0000081c
- b _080FB956
- .align 2, 0
-_080FB948: .4byte 0x0000081c
-_080FB94C:
- ldr r0, _080FB950 @ =0x0000081d
- b _080FB956
- .align 2, 0
-_080FB950: .4byte 0x0000081d
-_080FB954:
- ldr r0, _080FB968 @ =0x0000081e
-_080FB956:
- bl FlagGet
- lsls r0, 24
- movs r1, 0x3
- cmp r0, 0
- beq _080FB964
- movs r1, 0x2
-_080FB964:
- adds r0, r1, 0
- b _080FB9A2
- .align 2, 0
-_080FB968: .4byte 0x0000081e
-_080FB96C:
- ldr r0, _080FB984 @ =0x00000848
- bl FlagGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- negs r0, r1
- orrs r0, r1
- asrs r0, 31
- movs r1, 0x4
- ands r0, r1
- b _080FB9A2
- .align 2, 0
-_080FB984: .4byte 0x00000848
-_080FB988:
- ldr r0, _080FB99C @ =0x00000849
- bl FlagGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- b _080FB9A2
- .align 2, 0
-_080FB99C: .4byte 0x00000849
-_080FB9A0:
- movs r0, 0x1
-_080FB9A2:
- pop {r1}
- bx r1
- thumb_func_end sub_80FB758
-
- thumb_func_start GetRegionMapSectionAt_
-GetRegionMapSectionAt_: @ 80FB9A8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- bl GetRegionMapSectionAt
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end GetRegionMapSectionAt_
-
- thumb_func_start sub_80FB9C0
-sub_80FB9C0: @ 80FB9C0
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r0, _080FB9E8 @ =gUnknown_083E7684
- ldrh r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x58
- beq _080FB9FC
- adds r5, r4, 0
- adds r6, r4, 0x2
-_080FB9D6:
- lsls r1, r2, 2
- adds r0, r1, r5
- ldrh r0, [r0]
- cmp r0, r3
- bne _080FB9EC
- adds r0, r1, r6
- ldrh r0, [r0]
- b _080FB9FE
- .align 2, 0
-_080FB9E8: .4byte gUnknown_083E7684
-_080FB9EC:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r0, r2, 2
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x58
- bne _080FB9D6
-_080FB9FC:
- adds r0, r3, 0
-_080FB9FE:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80FB9C0
-
- thumb_func_start sub_80FBA04
-sub_80FBA04: @ 80FBA04
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- bl sub_80FB9C0
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80FBA04
-
- thumb_func_start sub_80FBA18
-sub_80FBA18: @ 80FBA18
- push {r4-r6,lr}
- ldr r0, _080FBA2C @ =gUnknown_020388CC
- ldr r1, [r0]
- ldrh r0, [r1, 0x14]
- cmp r0, 0x58
- bne _080FBA30
- movs r0, 0
- strb r0, [r1, 0x17]
- b _080FBA96
- .align 2, 0
-_080FBA2C: .4byte gUnknown_020388CC
-_080FBA30:
- adds r0, r1, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FBA40
- adds r0, r1, 0
- adds r0, 0x54
- b _080FBA44
-_080FBA40:
- adds r0, r1, 0
- adds r0, 0x64
-_080FBA44:
- ldrh r4, [r0]
- adds r0, 0x2
- ldrh r5, [r0]
- movs r6, 0
- b _080FBA70
-_080FBA4E:
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetRegionMapSectionAt
- ldr r1, _080FBA8C @ =gUnknown_020388CC
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1, 0x14]
- cmp r0, r1
- bne _080FBA70
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_080FBA70:
- cmp r4, 0x1
- bhi _080FBA4E
- adds r0, r5, 0
- bl sub_80FBAA0
- lsls r0, 24
- cmp r0, 0
- beq _080FBA90
- subs r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- movs r4, 0x1D
- b _080FBA70
- .align 2, 0
-_080FBA8C: .4byte gUnknown_020388CC
-_080FBA90:
- ldr r0, _080FBA9C @ =gUnknown_020388CC
- ldr r0, [r0]
- strb r6, [r0, 0x17]
-_080FBA96:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBA9C: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBA18
-
- thumb_func_start sub_80FBAA0
-sub_80FBAA0: @ 80FBAA0
- push {r4,r5,lr}
- lsls r0, 16
- ldr r1, _080FBAB4 @ =0xffff0000
- adds r0, r1
- lsrs r5, r0, 16
- ldr r0, _080FBAB8 @ =0x0000ffff
- cmp r5, r0
- bne _080FBAC0
- b _080FBAE2
- .align 2, 0
-_080FBAB4: .4byte 0xffff0000
-_080FBAB8: .4byte 0x0000ffff
-_080FBABC:
- movs r0, 0x1
- b _080FBAE4
-_080FBAC0:
- movs r4, 0x1
-_080FBAC2:
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetRegionMapSectionAt
- ldr r1, _080FBAEC @ =gUnknown_020388CC
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1, 0x14]
- cmp r0, r1
- beq _080FBABC
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1C
- bls _080FBAC2
-_080FBAE2:
- movs r0, 0
-_080FBAE4:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080FBAEC: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBAA0
-
- thumb_func_start sub_80FBAF0
-sub_80FBAF0: @ 80FBAF0
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, _080FBB34 @ =gUnknown_020388CC
- ldr r1, [r0]
- adds r3, r1, 0
- adds r3, 0x7A
- movs r0, 0
- ldrsb r0, [r3, r0]
- cmp r0, 0
- beq _080FBB2E
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r4, [r2, 0x20]
- adds r0, r4
- strh r0, [r2, 0x20]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- ldrh r1, [r2, 0x22]
- adds r0, r1
- strh r0, [r2, 0x22]
- ldrb r0, [r3]
- subs r0, 0x1
- strb r0, [r3]
-_080FBB2E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBB34: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBAF0
-
- thumb_func_start nullsub_66
-nullsub_66: @ 80FBB38
- bx lr
- thumb_func_end nullsub_66
-
- thumb_func_start sub_80FBB3C
-sub_80FBB3C: @ 80FBB3C
- push {r4-r7,lr}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r1, _080FBBAC @ =gUnknown_083E76E8
- ldr r2, [r1, 0x4]
- ldr r1, [r1]
- str r1, [sp, 0x20]
- str r2, [sp, 0x24]
- mov r2, sp
- ldr r1, _080FBBB0 @ =gSpriteTemplate_83E76F0
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- lsrs r3, r0, 16
- add r2, sp, 0x18
- ldrh r1, [r2, 0x4]
- orrs r1, r0
- str r1, [r2, 0x4]
- mov r0, sp
- strh r3, [r0]
- ldr r0, _080FBBB4 @ =gUnknown_020388CC
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x58
- strh r3, [r0]
- ldr r5, _080FBBB8 @ =0xffff0000
- add r1, sp, 0x20
- ldr r0, [r1, 0x4]
- ands r0, r5
- orrs r0, r6
- str r0, [r1, 0x4]
- mov r0, sp
- strh r6, [r0, 0x2]
- adds r3, r4, 0
- adds r0, r3, 0
- adds r0, 0x5A
- strh r6, [r0]
- adds r0, 0x1E
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0
- bne _080FBBC0
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r3, r1
- str r0, [sp, 0x18]
- ldr r0, [r2, 0x4]
- ands r0, r5
- subs r1, 0x80
- orrs r0, r1
- str r0, [r2, 0x4]
- ldr r0, _080FBBBC @ =sub_80FBAF0
- b _080FBBD6
- .align 2, 0
-_080FBBAC: .4byte gUnknown_083E76E8
-_080FBBB0: .4byte gSpriteTemplate_83E76F0
-_080FBBB4: .4byte gUnknown_020388CC
-_080FBBB8: .4byte 0xffff0000
-_080FBBBC: .4byte sub_80FBAF0
-_080FBBC0:
- movs r3, 0xA0
- lsls r3, 2
- adds r0, r4, r3
- str r0, [sp, 0x18]
- ldr r0, [r2, 0x4]
- ands r0, r5
- movs r1, 0xC0
- lsls r1, 3
- orrs r0, r1
- str r0, [r2, 0x4]
- ldr r0, _080FBC38 @ =nullsub_66
-_080FBBD6:
- str r0, [sp, 0x14]
- adds r0, r2, 0
- bl LoadSpriteSheet
- adds r0, r7, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0x38
- movs r2, 0x48
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080FBC90
- ldr r4, _080FBC3C @ =gUnknown_020388CC
- ldr r2, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080FBC40 @ =gSprites
- adds r3, r0, r1
- str r3, [r2, 0x1C]
- adds r2, 0x78
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _080FBC44
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r3, 0x3]
- ldr r2, [r4]
- ldr r1, [r2, 0x1C]
- ldrh r0, [r1, 0x20]
- subs r0, 0x8
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x1C]
- ldrh r0, [r1, 0x22]
- subs r0, 0x8
- strh r0, [r1, 0x22]
- ldr r0, [r2, 0x1C]
- movs r1, 0x1
- bl StartSpriteAnim
- b _080FBC6C
- .align 2, 0
-_080FBC38: .4byte nullsub_66
-_080FBC3C: .4byte gUnknown_020388CC
-_080FBC40: .4byte gSprites
-_080FBC44:
- ldrb r1, [r3, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r3, 0x3]
- ldr r1, [r4]
- ldr r2, [r1, 0x1C]
- adds r0, r1, 0
- adds r0, 0x54
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r2, 0x20]
- ldr r2, [r1, 0x1C]
- adds r1, 0x56
- ldrh r0, [r1]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r2, 0x22]
-_080FBC6C:
- ldr r4, _080FBC98 @ =gUnknown_020388CC
- ldr r0, [r4]
- ldr r1, [r0, 0x1C]
- movs r0, 0x2
- strh r0, [r1, 0x30]
- adds r0, r6, 0
- bl IndexOfSpritePaletteTag
- ldr r1, [r4]
- ldr r2, [r1, 0x1C]
- lsls r0, 24
- lsrs r0, 20
- ldr r4, _080FBC9C @ =0x00000101
- adds r0, r4
- strh r0, [r2, 0x32]
- ldr r1, [r1, 0x1C]
- movs r0, 0x1
- strh r0, [r1, 0x34]
-_080FBC90:
- add sp, 0x28
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBC98: .4byte gUnknown_020388CC
-_080FBC9C: .4byte 0x00000101
- thumb_func_end sub_80FBB3C
-
- thumb_func_start sub_80FBCA0
-sub_80FBCA0: @ 80FBCA0
- push {r4,lr}
- ldr r4, _080FBCCC @ =gUnknown_020388CC
- ldr r0, [r4]
- ldr r0, [r0, 0x1C]
- cmp r0, 0
- beq _080FBCC4
- bl DestroySprite
- ldr r0, [r4]
- adds r0, 0x58
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, 0x5A
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
-_080FBCC4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBCCC: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBCA0
-
- thumb_func_start unref_sub_80FBCD0
-unref_sub_80FBCD0: @ 80FBCD0
- ldr r0, _080FBCDC @ =gUnknown_020388CC
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- movs r0, 0x1
- strh r0, [r1, 0x34]
- bx lr
- .align 2, 0
-_080FBCDC: .4byte gUnknown_020388CC
- thumb_func_end unref_sub_80FBCD0
-
- thumb_func_start unref_sub_80FBCE0
-unref_sub_80FBCE0: @ 80FBCE0
- ldr r0, _080FBCEC @ =gUnknown_020388CC
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- movs r0, 0
- strh r0, [r1, 0x34]
- bx lr
- .align 2, 0
-_080FBCEC: .4byte gUnknown_020388CC
- thumb_func_end unref_sub_80FBCE0
-
- thumb_func_start sub_80FBCF0
-sub_80FBCF0: @ 80FBCF0
- push {r4,r5,lr}
- sub sp, 0x28
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _080FBD98 @ =gRegionMapBrendanIconTiles
- str r2, [sp, 0x18]
- movs r2, 0x80
- add r5, sp, 0x18
- lsrs r3, r0, 16
- orrs r0, r2
- str r0, [r5, 0x4]
- ldr r0, _080FBD9C @ =gRegionMapBrendanIconPalette
- str r0, [sp, 0x20]
- ldr r2, _080FBDA0 @ =0xffff0000
- add r4, sp, 0x20
- ldr r0, [r4, 0x4]
- ands r0, r2
- orrs r0, r1
- str r0, [r4, 0x4]
- mov r0, sp
- movs r2, 0
- strh r3, [r0]
- strh r1, [r0, 0x2]
- ldr r0, _080FBDA4 @ =gOamData_083E7708
- str r0, [sp, 0x4]
- ldr r0, _080FBDA8 @ =gSpriteAnimTable_083E7718
- str r0, [sp, 0x8]
- str r2, [sp, 0xC]
- ldr r0, _080FBDAC @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x10]
- ldr r0, _080FBDB0 @ =SpriteCallbackDummy
- str r0, [sp, 0x14]
- ldr r0, _080FBDB4 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0x1
- bne _080FBD42
- ldr r0, _080FBDB8 @ =gRegionMapMayIconTiles
- str r0, [sp, 0x18]
- ldr r0, _080FBDBC @ =gRegionMapMayIconPalette
- str r0, [sp, 0x20]
-_080FBD42:
- adds r0, r5, 0
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- mov r0, sp
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080FBDC0 @ =gUnknown_020388CC
- ldr r2, [r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _080FBDC4 @ =gSprites
- adds r1, r0
- str r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0
- bne _080FBDCC
- adds r0, r2, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x22]
- ldr r1, [r2, 0x20]
- ldr r0, _080FBDC8 @ =sub_80FBF34
- b _080FBDEA
- .align 2, 0
-_080FBD98: .4byte gRegionMapBrendanIconTiles
-_080FBD9C: .4byte gRegionMapBrendanIconPalette
-_080FBDA0: .4byte 0xffff0000
-_080FBDA4: .4byte gOamData_083E7708
-_080FBDA8: .4byte gSpriteAnimTable_083E7718
-_080FBDAC: .4byte gDummySpriteAffineAnimTable
-_080FBDB0: .4byte SpriteCallbackDummy
-_080FBDB4: .4byte gSaveBlock2
-_080FBDB8: .4byte gRegionMapMayIconTiles
-_080FBDBC: .4byte gRegionMapMayIconPalette
-_080FBDC0: .4byte gUnknown_020388CC
-_080FBDC4: .4byte gSprites
-_080FBDC8: .4byte sub_80FBF34
-_080FBDCC:
- adds r0, r2, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x30
- strh r0, [r1, 0x20]
- ldr r1, [r2, 0x20]
- adds r0, r2, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x42
- strh r0, [r1, 0x22]
- ldr r1, [r2, 0x20]
- ldr r0, _080FBDF4 @ =sub_80FBEA4
-_080FBDEA:
- str r0, [r1, 0x1C]
- add sp, 0x28
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FBDF4: .4byte sub_80FBEA4
- thumb_func_end sub_80FBCF0
-
- thumb_func_start sub_80FBDF8
-sub_80FBDF8: @ 80FBDF8
- push {lr}
- ldr r3, _080FBE1C @ =gUnknown_020388CC
- ldr r0, [r3]
- ldr r2, [r0, 0x20]
- cmp r2, 0
- beq _080FBE16
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- ldr r1, [r0, 0x20]
- ldr r0, _080FBE20 @ =SpriteCallbackDummy
- str r0, [r1, 0x1C]
-_080FBE16:
- pop {r0}
- bx r0
- .align 2, 0
-_080FBE1C: .4byte gUnknown_020388CC
-_080FBE20: .4byte SpriteCallbackDummy
- thumb_func_end sub_80FBDF8
-
- thumb_func_start sub_80FBE24
-sub_80FBE24: @ 80FBE24
- push {lr}
- ldr r0, _080FBE5C @ =gUnknown_020388CC
- ldr r3, [r0]
- ldr r1, [r3, 0x20]
- cmp r1, 0
- beq _080FBE9A
- adds r0, r3, 0
- adds r0, 0x78
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080FBE64
- adds r0, r3, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x30
- strh r0, [r1, 0x20]
- ldr r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 4
- subs r0, 0x42
- strh r0, [r1, 0x22]
- ldr r1, [r3, 0x20]
- ldr r0, _080FBE60 @ =sub_80FBEA4
- b _080FBE8C
- .align 2, 0
-_080FBE5C: .4byte gUnknown_020388CC
-_080FBE60: .4byte sub_80FBEA4
-_080FBE64:
- adds r0, r3, 0
- adds r0, 0x74
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- movs r2, 0
- strh r0, [r1, 0x20]
- ldr r1, [r3, 0x20]
- adds r0, r3, 0
- adds r0, 0x76
- ldrh r0, [r0]
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x22]
- ldr r0, [r3, 0x20]
- strh r2, [r0, 0x24]
- ldr r0, [r3, 0x20]
- strh r2, [r0, 0x26]
- ldr r1, [r3, 0x20]
- ldr r0, _080FBEA0 @ =sub_80FBF34
-_080FBE8C:
- str r0, [r1, 0x1C]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_080FBE9A:
- pop {r0}
- bx r0
- .align 2, 0
-_080FBEA0: .4byte sub_80FBF34
- thumb_func_end sub_80FBE24
-
- thumb_func_start sub_80FBEA4
-sub_80FBEA4: @ 80FBEA4
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, _080FBF08 @ =gUnknown_020388CC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x5C
- movs r4, 0
- ldrsh r2, [r0, r4]
- lsls r2, 1
- negs r2, r2
- strh r2, [r3, 0x24]
- adds r1, 0x5E
- movs r4, 0
- ldrsh r0, [r1, r4]
- lsls r0, 1
- negs r0, r0
- strh r0, [r3, 0x26]
- ldrh r1, [r3, 0x22]
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- strh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x20]
- adds r1, r2
- adds r2, r3, 0
- adds r2, 0x28
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- adds r2, r1
- strh r2, [r3, 0x30]
- adds r0, 0x8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB0
- bhi _080FBF04
- lsls r0, r2, 16
- asrs r2, r0, 16
- movs r0, 0x8
- negs r0, r0
- cmp r2, r0
- blt _080FBF04
- cmp r2, 0xF8
- ble _080FBF0C
-_080FBF04:
- movs r0, 0
- b _080FBF0E
- .align 2, 0
-_080FBF08: .4byte gUnknown_020388CC
-_080FBF0C:
- movs r0, 0x1
-_080FBF0E:
- strh r0, [r3, 0x32]
- movs r1, 0x32
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- bne _080FBF20
- adds r0, r3, 0
- bl sub_80FBF40
- b _080FBF2C
-_080FBF20:
- adds r0, r3, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080FBF2C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FBEA4
-
- thumb_func_start sub_80FBF34
-sub_80FBF34: @ 80FBF34
- push {lr}
- bl sub_80FBF40
- pop {r0}
- bx r0
- thumb_func_end sub_80FBF34
-
- thumb_func_start sub_80FBF40
-sub_80FBF40: @ 80FBF40
- push {lr}
- adds r2, r0, 0
- ldr r0, _080FBF80 @ =gUnknown_020388CC
- ldr r0, [r0]
- adds r0, 0x7E
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FBF84
- ldrh r0, [r2, 0x3C]
- adds r0, 0x1
- strh r0, [r2, 0x3C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080FBF90
- movs r0, 0
- strh r0, [r2, 0x3C]
- adds r3, r2, 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]
- b _080FBF90
- .align 2, 0
-_080FBF80: .4byte gUnknown_020388CC
-_080FBF84:
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080FBF90:
- pop {r0}
- bx r0
- thumb_func_end sub_80FBF40
-
- thumb_func_start sub_80FBF94
-sub_80FBF94: @ 80FBF94
- push {lr}
- ldr r0, _080FBFB0 @ =gUnknown_020388CC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x7F
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FBFAA
- adds r1, 0x7E
- movs r0, 0x1
- strb r0, [r1]
-_080FBFAA:
- pop {r0}
- bx r0
- .align 2, 0
-_080FBFB0: .4byte gUnknown_020388CC
- thumb_func_end sub_80FBF94
-
- thumb_func_start sub_80FBFB4
-sub_80FBFB4: @ 80FBFB4
- push {lr}
- adds r3, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- cmp r1, 0x56
- bne _080FBFCA
- bl GetSecretBaseMapName
- b _080FBFF2
-_080FBFCA:
- cmp r1, 0x57
- bhi _080FBFE4
- ldr r0, _080FBFE0 @ =gRegionMapLocations
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldr r1, [r1]
- adds r0, r3, 0
- bl StringCopy
- b _080FBFF2
- .align 2, 0
-_080FBFE0: .4byte gRegionMapLocations
-_080FBFE4:
- cmp r2, 0
- bne _080FBFEA
- movs r2, 0x12
-_080FBFEA:
- adds r0, r3, 0
- movs r1, 0
- bl StringFill
-_080FBFF2:
- pop {r1}
- bx r1
- thumb_func_end sub_80FBFB4
-
- thumb_func_start CopyMapName
-CopyMapName: @ 80FBFF8
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x56
- beq _080FC014
- cmp r1, 0x57
- bne _080FC020
- ldr r1, _080FC010 @ =gOtherText_Ferry
- bl StringCopy
- b _080FC026
- .align 2, 0
-_080FC010: .4byte gOtherText_Ferry
-_080FC014:
- ldr r1, _080FC01C @ =gOtherText_SecretBase
- bl StringCopy
- b _080FC026
- .align 2, 0
-_080FC01C: .4byte gOtherText_SecretBase
-_080FC020:
- movs r2, 0
- bl sub_80FBFB4
-_080FC026:
- pop {r1}
- bx r1
- thumb_func_end CopyMapName
-
- thumb_func_start CopyLocationName
-CopyLocationName: @ 80FC02C
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x42
- beq _080FC03C
- bl CopyMapName
- b _080FC042
-_080FC03C:
- ldr r1, _080FC048 @ =gOtherText_Hideout
- bl StringCopy
-_080FC042:
- pop {r1}
- bx r1
- .align 2, 0
-_080FC048: .4byte gOtherText_Hideout
- thumb_func_end CopyLocationName
-
- thumb_func_start sub_80FC04C
-sub_80FC04C: @ 80FC04C
- push {r4,r5,lr}
- ldr r5, [sp, 0xC]
- lsls r0, 16
- ldr r4, _080FC070 @ =gRegionMapLocations
- lsrs r0, 13
- adds r0, r4
- ldrb r4, [r0]
- strh r4, [r1]
- ldrb r1, [r0, 0x1]
- strh r1, [r2]
- ldrb r1, [r0, 0x2]
- strh r1, [r3]
- ldrb r0, [r0, 0x3]
- strh r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC070: .4byte gRegionMapLocations
- thumb_func_end sub_80FC04C
-
- thumb_func_start sub_80FC074
-sub_80FC074: @ 80FC074
- push {r4,lr}
- ldr r0, _080FC090 @ =gMain
- ldr r1, _080FC094 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x9
- bls _080FC084
- b _080FC1F2
-_080FC084:
- lsls r0, 2
- ldr r1, _080FC098 @ =_080FC09C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FC090: .4byte gMain
-_080FC094: .4byte 0x0000043c
-_080FC098: .4byte _080FC09C
- .align 2, 0
-_080FC09C:
- .4byte _080FC0C4
- .4byte _080FC104
- .4byte _080FC110
- .4byte _080FC120
- .4byte _080FC15C
- .4byte _080FC170
- .4byte _080FC184
- .4byte _080FC1A4
- .4byte _080FC1AA
- .4byte _080FC1C4
-_080FC0C4:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x10
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl ResetPaletteFade
- bl ResetSpriteData
- bl FreeSpriteTileRanges
- bl FreeAllSpritePalettes
- b _080FC1E6
-_080FC104:
- ldr r0, _080FC10C @ =gWindowConfig_81E7224
- bl SetUpWindowConfig
- b _080FC1E6
- .align 2, 0
-_080FC10C: .4byte gWindowConfig_81E7224
-_080FC110:
- ldr r0, _080FC11C @ =gWindowConfig_81E7224
- bl InitMenuWindow
- bl MenuZeroFillScreen
- b _080FC1E6
- .align 2, 0
-_080FC11C: .4byte gWindowConfig_81E7224
-_080FC120:
- ldr r4, _080FC158 @ =0x02000008
- adds r0, r4, 0
- movs r1, 0
- bl sub_80FA8EC
- movs r0, 0
- movs r1, 0
- bl sub_80FBB3C
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80FBCF0
- adds r1, r4, 0
- subs r1, 0x8
- ldrh r0, [r1, 0x1C]
- strh r0, [r1, 0x6]
- movs r2, 0xA4
- lsls r2, 4
- adds r4, r2
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0xC
- bl StringFill
- bl sub_80FC254
- b _080FC1E6
- .align 2, 0
-_080FC158: .4byte 0x02000008
-_080FC15C:
- ldr r0, _080FC168 @ =gUnknown_083E773C
- ldr r1, _080FC16C @ =0x0600c000
- bl LZ77UnCompVram
- b _080FC1E6
- .align 2, 0
-_080FC168: .4byte gUnknown_083E773C
-_080FC16C: .4byte 0x0600c000
-_080FC170:
- ldr r0, _080FC17C @ =gUnknown_083E7774
- ldr r1, _080FC180 @ =0x0600f000
- bl LZ77UnCompVram
- b _080FC1E6
- .align 2, 0
-_080FC17C: .4byte gUnknown_083E7774
-_080FC180: .4byte 0x0600f000
-_080FC184:
- ldr r0, _080FC19C @ =gUnknown_083E771C
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _080FC1A0 @ =gOtherText_FlyToWhere
- movs r1, 0x1
- movs r2, 0x90
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- b _080FC1E6
- .align 2, 0
-_080FC19C: .4byte gUnknown_083E771C
-_080FC1A0: .4byte gOtherText_FlyToWhere
-_080FC1A4:
- bl sub_80FC31C
- b _080FC1E6
-_080FC1AA:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r0, _080FC1C0 @ =sub_80FC214
- bl SetVBlankCallback
- b _080FC1E6
- .align 2, 0
-_080FC1C0: .4byte sub_80FC214
-_080FC1C4:
- ldr r1, _080FC1F8 @ =REG_BLDCNT
- movs r0, 0
- strh r0, [r1]
- subs r1, 0x46
- ldr r2, _080FC1FC @ =0x00001e0d
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- ldr r2, _080FC200 @ =0x00001741
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _080FC204 @ =sub_80FC5B4
- bl sub_80FC244
- ldr r0, _080FC208 @ =sub_80FC228
- bl SetMainCallback2
-_080FC1E6:
- ldr r1, _080FC20C @ =gMain
- ldr r0, _080FC210 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080FC1F2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC1F8: .4byte REG_BLDCNT
-_080FC1FC: .4byte 0x00001e0d
-_080FC200: .4byte 0x00001741
-_080FC204: .4byte sub_80FC5B4
-_080FC208: .4byte sub_80FC228
-_080FC20C: .4byte gMain
-_080FC210: .4byte 0x0000043c
- thumb_func_end sub_80FC074
-
- thumb_func_start sub_80FC214
-sub_80FC214: @ 80FC214
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80FC214
-
- thumb_func_start sub_80FC228
-sub_80FC228: @ 80FC228
- push {lr}
- ldr r0, _080FC240 @ =0x02000000
- ldr r0, [r0]
- bl _call_via_r0
- bl AnimateSprites
- bl BuildOamBuffer
- pop {r0}
- bx r0
- .align 2, 0
-_080FC240: .4byte 0x02000000
- thumb_func_end sub_80FC228
-
- thumb_func_start sub_80FC244
-sub_80FC244: @ 80FC244
- ldr r1, _080FC250 @ =0x02000000
- str r0, [r1]
- movs r0, 0
- strh r0, [r1, 0x4]
- bx lr
- .align 2, 0
-_080FC250: .4byte 0x02000000
- thumb_func_end sub_80FC244
-
- thumb_func_start sub_80FC254
-sub_80FC254: @ 80FC254
- push {r4,r5,lr}
- ldr r4, _080FC2AC @ =0x02000000
- ldrb r0, [r4, 0x1E]
- cmp r0, 0x2
- beq _080FC262
- cmp r0, 0x4
- bne _080FC2EC
-_080FC262:
- movs r1, 0
- ldr r2, _080FC2B0 @ =gUnknown_083E79C0
- adds r5, r4, 0
-_080FC268:
- lsls r0, r1, 3
- adds r4, r0, r2
- ldrh r0, [r5, 0x1C]
- ldrh r3, [r4, 0x4]
- cmp r0, r3
- bne _080FC2B4
- ldrh r0, [r4, 0x6]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080FC2BE
- movs r0, 0x10
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- adds r0, r5, 0
- adds r0, 0x8
- movs r1, 0x11
- movs r2, 0xF
- bl MenuPrint
- ldrb r0, [r5, 0x1F]
- ldr r1, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x1D
- movs r2, 0x11
- bl MenuPrint_RightAligned
- b _080FC310
- .align 2, 0
-_080FC2AC: .4byte 0x02000000
-_080FC2B0: .4byte gUnknown_083E79C0
-_080FC2B4:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080FC268
-_080FC2BE:
- movs r0, 0
- cmp r0, 0
- bne _080FC310
- movs r0, 0x10
- movs r1, 0x10
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _080FC2E8 @ =0x02000008
- movs r1, 0x11
- movs r2, 0x11
- bl MenuPrint
- movs r0, 0x10
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0xF
- bl MenuZeroFillWindowRect
- b _080FC310
- .align 2, 0
-_080FC2E8: .4byte 0x02000008
-_080FC2EC:
- movs r0, 0x10
- movs r1, 0x10
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r1, _080FC318 @ =0x00000a48
- adds r0, r4, r1
- movs r1, 0x11
- movs r2, 0x11
- bl MenuPrint
- movs r0, 0x10
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0xF
- bl MenuZeroFillWindowRect
-_080FC310:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC318: .4byte 0x00000a48
- thumb_func_end sub_80FC254
-
- thumb_func_start sub_80FC31C
-sub_80FC31C: @ 80FC31C
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _080FC360 @ =gUnknown_083E784C
- ldr r4, _080FC364 @ =0x02000888
- adds r1, r4, 0
- bl LZ77UnCompWram
- str r4, [sp]
- ldr r1, _080FC368 @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r1
- movs r1, 0xE0
- lsls r1, 1
- orrs r0, r1
- ldr r1, _080FC36C @ =0x0000ffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 10
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- ldr r0, _080FC370 @ =gUnknown_083E79CC
- bl LoadSpritePalette
- bl sub_80FC374
- bl sub_80FC484
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC360: .4byte gUnknown_083E784C
-_080FC364: .4byte 0x02000888
-_080FC368: .4byte 0xffff0000
-_080FC36C: .4byte 0x0000ffff
-_080FC370: .4byte gUnknown_083E79CC
- thumb_func_end sub_80FC31C
-
- thumb_func_start sub_80FC374
-sub_80FC374: @ 80FC374
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r0, _080FC3D4 @ =0x0000080f
- str r0, [sp, 0xC]
- movs r1, 0
- mov r9, r1
- mov r2, sp
- adds r2, 0x6
- str r2, [sp, 0x14]
- mov r3, sp
- adds r3, 0xA
- str r3, [sp, 0x18]
- mov r0, sp
- adds r0, 0x8
- str r0, [sp, 0x10]
- add r1, sp, 0x4
- mov r10, r1
-_080FC39E:
- ldr r2, [sp, 0x18]
- str r2, [sp]
- mov r0, r9
- add r1, sp, 0x4
- mov r2, sp
- adds r2, 0x6
- ldr r3, [sp, 0x10]
- bl sub_80FC04C
- mov r3, r10
- ldrh r0, [r3]
- adds r0, 0x1
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r3]
- mov r1, sp
- ldrh r0, [r1, 0x6]
- adds r0, 0x2
- lsls r0, 3
- adds r0, 0x4
- strh r0, [r1, 0x6]
- ldr r2, [sp, 0x10]
- ldrh r0, [r2]
- cmp r0, 0x2
- bne _080FC3D8
- movs r7, 0x1
- b _080FC3E4
- .align 2, 0
-_080FC3D4: .4byte 0x0000080f
-_080FC3D8:
- ldr r3, [sp, 0x18]
- ldrh r0, [r3]
- movs r7, 0
- cmp r0, 0x2
- bne _080FC3E4
- movs r7, 0x2
-_080FC3E4:
- mov r0, r10
- movs r2, 0
- ldrsh r1, [r0, r2]
- ldr r3, [sp, 0x14]
- movs r0, 0
- ldrsh r2, [r3, r0]
- ldr r0, _080FC430 @ =gSpriteTemplate_83E7A38
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _080FC458
- ldr r1, _080FC434 @ =gSprites
- mov r8, r1
- lsls r4, r5, 4
- adds r0, r4, r5
- lsls r6, r0, 2
- adds r2, r6, r1
- lsls r3, r7, 6
- ldrb r1, [r2, 0x1]
- movs r0, 0x3F
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x1]
- ldr r0, [sp, 0xC]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080FC43C
- mov r0, r8
- adds r0, 0x1C
- adds r0, r6, r0
- ldr r1, _080FC438 @ =sub_80FC55C
- str r1, [r0]
- b _080FC442
- .align 2, 0
-_080FC430: .4byte gSpriteTemplate_83E7A38
-_080FC434: .4byte gSprites
-_080FC438: .4byte sub_80FC55C
-_080FC43C:
- adds r0, r7, 0x3
- lsls r0, 16
- lsrs r7, r0, 16
-_080FC442:
- adds r4, r5
- lsls r4, 2
- ldr r0, _080FC480 @ =gSprites
- adds r4, r0
- lsls r1, r7, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- mov r2, r9
- strh r2, [r4, 0x2E]
-_080FC458:
- ldr r0, [sp, 0xC]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r0, 0xF
- bls _080FC39E
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC480: .4byte gSprites
- thumb_func_end sub_80FC374
-
- thumb_func_start sub_80FC484
-sub_80FC484: @ 80FC484
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r0, 0
- mov r8, r0
- ldr r6, _080FC54C @ =gUnknown_083E79D4
- ldrh r0, [r6, 0x2]
- cmp r0, 0x58
- beq _080FC53C
- mov r5, sp
- adds r5, 0x6
- add r7, sp, 0x4
- ldr r1, _080FC550 @ =gSprites
- mov r9, r1
- movs r0, 0x1C
- add r0, r9
- mov r10, r0
-_080FC4AC:
- mov r1, r8
- lsls r4, r1, 2
- adds r0, r4, r6
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080FC524
- adds r0, r6, 0x2
- adds r0, r4, r0
- ldrh r6, [r0]
- mov r0, sp
- adds r0, 0xA
- str r0, [sp]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- add r3, sp, 0x8
- bl sub_80FC04C
- ldrh r0, [r7]
- adds r0, 0x1
- lsls r0, 3
- strh r0, [r7]
- ldrh r0, [r5]
- adds r0, 0x2
- lsls r0, 3
- strh r0, [r5]
- movs r0, 0
- ldrsh r1, [r7, r0]
- movs r0, 0
- ldrsh r2, [r5, r0]
- ldr r0, _080FC554 @ =gSpriteTemplate_83E7A38
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080FC524
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- mov r1, r9
- adds r4, r2, r1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r4, 0x3]
- add r2, r10
- ldr r0, _080FC558 @ =sub_80FC55C
- str r0, [r2]
- adds r0, r4, 0
- movs r1, 0x6
- bl StartSpriteAnim
- strh r6, [r4, 0x2E]
-_080FC524:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r6, _080FC54C @ =gUnknown_083E79D4
- lsls r0, 2
- adds r1, r6, 0x2
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x58
- bne _080FC4AC
-_080FC53C:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC54C: .4byte gUnknown_083E79D4
-_080FC550: .4byte gSprites
-_080FC554: .4byte gSpriteTemplate_83E7A38
-_080FC558: .4byte sub_80FC55C
- thumb_func_end sub_80FC484
-
- thumb_func_start sub_80FC55C
-sub_80FC55C: @ 80FC55C
- push {lr}
- adds r2, r0, 0
- ldr r0, _080FC59C @ =0x02000000
- ldrh r1, [r0, 0x1C]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r1, r0
- bne _080FC5A0
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _080FC5AE
- movs r0, 0
- strh r0, [r2, 0x30]
- adds r3, r2, 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]
- b _080FC5AE
- .align 2, 0
-_080FC59C: .4byte 0x02000000
-_080FC5A0:
- movs r0, 0x10
- strh r0, [r2, 0x30]
- adds r2, 0x3E
- ldrb r1, [r2]
- subs r0, 0x15
- ands r0, r1
- strb r0, [r2]
-_080FC5AE:
- pop {r0}
- bx r0
- thumb_func_end sub_80FC55C
-
- thumb_func_start sub_80FC5B4
-sub_80FC5B4: @ 80FC5B4
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _080FC5C8 @ =0x02000000
- ldrh r1, [r4, 0x4]
- cmp r1, 0
- beq _080FC5CC
- cmp r1, 0x1
- beq _080FC5E4
- b _080FC5F4
- .align 2, 0
-_080FC5C8: .4byte 0x02000000
-_080FC5CC:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- b _080FC5F4
-_080FC5E4:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080FC5F4
- ldr r0, _080FC5FC @ =sub_80FC600
- bl sub_80FC244
-_080FC5F4:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC5FC: .4byte sub_80FC600
- thumb_func_end sub_80FC5B4
-
- thumb_func_start sub_80FC600
-sub_80FC600: @ 80FC600
- push {r4,lr}
- ldr r0, _080FC620 @ =0x02000000
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- bne _080FC68A
- bl sub_80FAB60
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _080FC68A
- lsls r0, 2
- ldr r1, _080FC624 @ =_080FC628
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FC620: .4byte 0x02000000
-_080FC624: .4byte _080FC628
- .align 2, 0
-_080FC628:
- .4byte _080FC68A
- .4byte _080FC68A
- .4byte _080FC68A
- .4byte _080FC640
- .4byte _080FC646
- .4byte _080FC674
-_080FC640:
- bl sub_80FC254
- b _080FC68A
-_080FC646:
- ldr r4, _080FC668 @ =0x02000000
- ldrb r0, [r4, 0x1E]
- cmp r0, 0x2
- beq _080FC652
- cmp r0, 0x4
- bne _080FC68A
-_080FC652:
- movs r0, 0x5
- bl m4aSongNumStart
- ldr r1, _080FC66C @ =0x00000a6e
- adds r0, r4, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _080FC670 @ =sub_80FC69C
- bl sub_80FC244
- b _080FC68A
- .align 2, 0
-_080FC668: .4byte 0x02000000
-_080FC66C: .4byte 0x00000a6e
-_080FC670: .4byte sub_80FC69C
-_080FC674:
- movs r0, 0x5
- bl m4aSongNumStart
- ldr r0, _080FC690 @ =0x02000000
- ldr r1, _080FC694 @ =0x00000a6e
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080FC698 @ =sub_80FC69C
- bl sub_80FC244
-_080FC68A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC690: .4byte 0x02000000
-_080FC694: .4byte 0x00000a6e
-_080FC698: .4byte sub_80FC69C
- thumb_func_end sub_80FC600
-
- thumb_func_start sub_80FC69C
-sub_80FC69C: @ 80FC69C
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _080FC6B0 @ =0x02000000
- ldrh r1, [r4, 0x4]
- cmp r1, 0
- beq _080FC6B4
- cmp r1, 0x1
- beq _080FC6CC
- b _080FC792
- .align 2, 0
-_080FC6B0: .4byte 0x02000000
-_080FC6B4:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- b _080FC792
-_080FC6CC:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _080FC792
- bl sub_80FAB10
- ldr r1, _080FC6F4 @ =0x00000a6e
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080FC78C
- ldrh r0, [r4, 0x1C]
- cmp r0, 0xF
- beq _080FC724
- cmp r0, 0xF
- bgt _080FC6F8
- cmp r0, 0
- beq _080FC710
- b _080FC748
- .align 2, 0
-_080FC6F4: .4byte 0x00000a6e
-_080FC6F8:
- cmp r0, 0x3A
- beq _080FC708
- cmp r0, 0x49
- bne _080FC748
- movs r0, 0x16
- bl sub_8053538
- b _080FC786
-_080FC708:
- movs r0, 0x15
- bl sub_8053538
- b _080FC786
-_080FC710:
- ldr r0, _080FC720 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- movs r1, 0xD
- cmp r0, 0
- bne _080FC73A
- movs r1, 0xC
- b _080FC73A
- .align 2, 0
-_080FC720: .4byte gSaveBlock2
-_080FC724:
- ldr r0, _080FC744 @ =0x00000854
- bl FlagGet
- lsls r0, 24
- movs r1, 0xB
- cmp r0, 0
- beq _080FC73A
- ldrb r0, [r4, 0x1F]
- cmp r0, 0
- bne _080FC73A
- movs r1, 0x14
-_080FC73A:
- adds r0, r1, 0
- bl sub_8053538
- b _080FC786
- .align 2, 0
-_080FC744: .4byte 0x00000854
-_080FC748:
- ldr r3, _080FC764 @ =gUnknown_083E7920
- ldr r0, _080FC768 @ =0x02000000
- ldrh r1, [r0, 0x1C]
- lsls r0, r1, 1
- adds r2, r0, r1
- adds r0, r3, 0x2
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080FC76C
- bl sub_8053538
- b _080FC786
- .align 2, 0
-_080FC764: .4byte gUnknown_083E7920
-_080FC768: .4byte 0x02000000
-_080FC76C:
- adds r0, r2, r3
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r1, r3, 0x1
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- bl warp1_set_2
-_080FC786:
- bl sub_80865BC
- b _080FC792
-_080FC78C:
- ldr r0, _080FC79C @ =sub_808AD58
- bl SetMainCallback2
-_080FC792:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC79C: .4byte sub_808AD58
- thumb_func_end sub_80FC69C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s
deleted file mode 100644
index 2fbc559c8..000000000
--- a/asm/reset_rtc_screen.s
+++ /dev/null
@@ -1,1300 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SpriteCB_ResetRtcCusor0
-SpriteCB_ResetRtcCusor0: @ 806A480
- push {lr}
- adds r3, r0, 0
- ldr r2, _0806A4B0 @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0xC
- ldrsh r1, [r0, r2]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r1, r0
- beq _0806A596
- strh r1, [r3, 0x30]
- subs r0, r1, 0x1
- cmp r0, 0x5
- bhi _0806A596
- lsls r0, 2
- ldr r1, _0806A4B4 @ =_0806A4B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806A4B0: .4byte gTasks
-_0806A4B4: .4byte _0806A4B8
- .align 2, 0
-_0806A4B8:
- .4byte _0806A4D0
- .4byte _0806A4F4
- .4byte _0806A518
- .4byte _0806A53C
- .4byte _0806A566
- .4byte _0806A590
-_0806A4D0:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x1
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x35
- b _0806A55E
-_0806A4F4:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x1
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x56
- b _0806A55E
-_0806A518:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x1
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x6B
- b _0806A55E
-_0806A53C:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x1
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x41
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x80
-_0806A55E:
- strh r0, [r3, 0x20]
- movs r0, 0x44
- strh r0, [r3, 0x22]
- b _0806A596
-_0806A566:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0x2
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x42
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x9B
- strh r0, [r3, 0x20]
- movs r0, 0x50
- strh r0, [r3, 0x22]
- b _0806A596
-_0806A590:
- adds r0, r3, 0
- bl DestroySprite
-_0806A596:
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_ResetRtcCusor0
-
- thumb_func_start SpriteCB_ResetRtcCusor1
-SpriteCB_ResetRtcCusor1: @ 806A59C
- push {lr}
- adds r3, r0, 0
- ldr r2, _0806A5CC @ =gTasks
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r2, 0xC
- ldrsh r1, [r0, r2]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r1, r0
- beq _0806A696
- strh r1, [r3, 0x30]
- subs r0, r1, 0x1
- cmp r0, 0x5
- bhi _0806A696
- lsls r0, 2
- ldr r1, _0806A5D0 @ =_0806A5D4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806A5CC: .4byte gTasks
-_0806A5D0: .4byte _0806A5D4
- .align 2, 0
-_0806A5D4:
- .4byte _0806A5EC
- .4byte _0806A610
- .4byte _0806A634
- .4byte _0806A658
- .4byte _0806A682
- .4byte _0806A690
-_0806A5EC:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x40
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x35
- b _0806A67A
-_0806A610:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x40
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x56
- b _0806A67A
-_0806A634:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x40
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x6B
- b _0806A67A
-_0806A658:
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r1, r3, 0
- adds r1, 0x2A
- movs r0, 0
- strb r0, [r1]
- subs r2, 0x12
- ldrb r1, [r2]
- subs r0, 0x40
- ands r0, r1
- strb r0, [r2]
- movs r0, 0x80
-_0806A67A:
- strh r0, [r3, 0x20]
- movs r0, 0x5C
- strh r0, [r3, 0x22]
- b _0806A696
-_0806A682:
- adds r0, r3, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _0806A696
-_0806A690:
- adds r0, r3, 0
- bl DestroySprite
-_0806A696:
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_ResetRtcCusor1
-
- thumb_func_start ResetRtcScreen_CreateCursor
-ResetRtcScreen_CreateCursor: @ 806A69C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0806A70C @ =gUnknown_083764BC
- bl LoadSpritePalette
- ldr r0, _0806A710 @ =gSpriteTemplate_83764E8
- mov r8, r0
- movs r1, 0x35
- movs r2, 0x44
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r6, _0806A714 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r6, 0
- adds r4, 0x1C
- adds r2, r0, r4
- ldr r1, _0806A718 @ =SpriteCB_ResetRtcCusor0
- str r1, [r2]
- adds r0, r6
- strh r5, [r0, 0x2E]
- ldr r1, _0806A71C @ =0x0000ffff
- strh r1, [r0, 0x30]
- mov r0, r8
- movs r1, 0x35
- movs r2, 0x44
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r4
- ldr r1, _0806A720 @ =SpriteCB_ResetRtcCusor1
- str r1, [r4]
- adds r0, r6
- strh r5, [r0, 0x2E]
- movs r1, 0x1
- negs r1, r1
- strh r1, [r0, 0x30]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806A70C: .4byte gUnknown_083764BC
-_0806A710: .4byte gSpriteTemplate_83764E8
-_0806A714: .4byte gSprites
-_0806A718: .4byte SpriteCB_ResetRtcCusor0
-_0806A71C: .4byte 0x0000ffff
-_0806A720: .4byte SpriteCB_ResetRtcCusor1
- thumb_func_end ResetRtcScreen_CreateCursor
-
- thumb_func_start ResetRtcScreen_FreeCursorPalette
-ResetRtcScreen_FreeCursorPalette: @ 806A724
- push {lr}
- ldr r0, _0806A734 @ =gUnknown_083764BC
- ldrh r0, [r0, 0x4]
- bl FreeSpritePaletteByTag
- pop {r0}
- bx r0
- .align 2, 0
-_0806A734: .4byte gUnknown_083764BC
- thumb_func_end ResetRtcScreen_FreeCursorPalette
-
- thumb_func_start ResetRtcScreen_HideChooseTimeWindow
-ResetRtcScreen_HideChooseTimeWindow: @ 806A738
- push {lr}
- movs r0, 0x3
- movs r1, 0x8
- movs r2, 0x19
- movs r3, 0xB
- bl MenuZeroFillWindowRect
- pop {r0}
- bx r0
- thumb_func_end ResetRtcScreen_HideChooseTimeWindow
-
- thumb_func_start ResetRtcScreen_PrintTime
-ResetRtcScreen_PrintTime: @ 806A74C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- adds r0, r2, 0
- adds r4, r3, 0
- ldr r6, [sp, 0x24]
- ldr r2, [sp, 0x28]
- mov r9, r2
- mov r2, r10
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r7, _0806A83C @ =gStringVar4
- ldr r1, _0806A840 @ =0x00002710
- bl __umodsi3
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0x18
- bl __umodsi3
- mov r8, r0
- mov r2, r8
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- adds r0, r6, 0
- movs r1, 0x3C
- bl __umodsi3
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- mov r0, r9
- movs r1, 0x3C
- bl __umodsi3
- mov r9, r0
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r4, _0806A844 @ =gStringVar1
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x18
- movs r3, 0x1
- bl sub_8072C44
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- adds r7, r0, 0
- ldr r1, _0806A848 @ =gOtherText_Day
- bl StringCopy
- adds r7, r0, 0
- adds r0, r4, 0
- mov r1, r8
- movs r2, 0x12
- movs r3, 0x1
- bl sub_8072C44
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- adds r7, r0, 0
- ldr r4, _0806A84C @ =gUnknown_08376500
- adds r1, r4, 0
- bl StringCopy
- adds r7, r0, 0
- adds r1, r6, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r7, r0, 0
- adds r1, r4, 0
- bl StringCopy
- adds r7, r0, 0
- mov r1, r9
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, _0806A83C @ =gStringVar4
- mov r1, r10
- ldr r2, [sp]
- bl MenuPrint
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806A83C: .4byte gStringVar4
-_0806A840: .4byte 0x00002710
-_0806A844: .4byte gStringVar1
-_0806A848: .4byte gOtherText_Day
-_0806A84C: .4byte gUnknown_08376500
- thumb_func_end ResetRtcScreen_PrintTime
-
- thumb_func_start ResetRtcScreen_ShowChooseTimeWindow
-ResetRtcScreen_ShowChooseTimeWindow: @ 806A850
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r6, r0, 0
- mov r8, r1
- adds r4, r2, 0
- adds r5, r3, 0
- lsls r6, 16
- lsrs r6, 16
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x3
- movs r1, 0x8
- movs r2, 0x19
- movs r3, 0xB
- bl MenuDrawTextWindow
- ldr r0, _0806A8A8 @ =gOtherText_OK
- movs r1, 0x14
- movs r2, 0x9
- bl MenuPrint
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x4
- movs r1, 0x9
- adds r2, r6, 0
- mov r3, r8
- bl ResetRtcScreen_PrintTime
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806A8A8: .4byte gOtherText_OK
- thumb_func_end ResetRtcScreen_ShowChooseTimeWindow
-
- thumb_func_start ResetRtcScreen_MoveTimeUpDown
-ResetRtcScreen_MoveTimeUpDown: @ 806A8AC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r3, 16
- lsrs r3, 16
- adds r1, r3, 0
- movs r0, 0x80
- ands r0, r3
- cmp r0, 0
- beq _0806A8C6
- ldrh r0, [r4]
- subs r0, 0x1
- b _0806A8E0
-_0806A8C6:
- movs r0, 0x40
- ands r0, r3
- cmp r0, 0
- beq _0806A8D4
- ldrh r0, [r4]
- adds r0, 0x1
- b _0806A8FE
-_0806A8D4:
- movs r0, 0x20
- ands r0, r3
- cmp r0, 0
- beq _0806A8EE
- ldrh r0, [r4]
- subs r0, 0xA
-_0806A8E0:
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, r5
- bge _0806A90A
- strh r2, [r4]
- b _0806A90A
-_0806A8EE:
- movs r0, 0x10
- ands r1, r0
- cmp r1, 0
- bne _0806A8FA
- movs r0, 0
- b _0806A90C
-_0806A8FA:
- ldrh r0, [r4]
- adds r0, 0xA
-_0806A8FE:
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, r2
- ble _0806A90A
- strh r5, [r4]
-_0806A90A:
- movs r0, 0x1
-_0806A90C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end ResetRtcScreen_MoveTimeUpDown
-
- thumb_func_start Task_ResetRtc_3
-Task_ResetRtc_3: @ 806A914
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0806A928 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x8]
- bx lr
- .align 2, 0
-_0806A928: .4byte gTasks
- thumb_func_end Task_ResetRtc_3
-
- thumb_func_start Task_ResetRtc_2
-Task_ResetRtc_2: @ 806A92C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl ResetRtcScreen_HideChooseTimeWindow
- bl ResetRtcScreen_FreeCursorPalette
- ldr r1, _0806A950 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0806A954 @ =Task_ResetRtc_3
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806A950: .4byte gTasks
-_0806A954: .4byte Task_ResetRtc_3
- thumb_func_end Task_ResetRtc_2
-
- thumb_func_start Task_ResetRtc_1
-Task_ResetRtc_1: @ 806A958
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r7, r0, 3
- ldr r0, _0806A99C @ =gTasks + 0x8
- mov r8, r0
- adds r5, r7, r0
- ldrb r4, [r5, 0x4]
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- ldr r1, _0806A9A0 @ =gUnknown_08376420 - 0xC
- adds r2, r0, r1
- ldr r1, _0806A9A4 @ =gMain
- ldrh r3, [r1, 0x2E]
- movs r0, 0x2
- ands r0, r3
- mov r12, r1
- cmp r0, 0
- beq _0806A9AC
- mov r0, r8
- subs r0, 0x8
- adds r0, r7, r0
- ldr r1, _0806A9A8 @ =Task_ResetRtc_2
- str r1, [r0]
- movs r0, 0
- strh r0, [r5, 0x2]
- movs r0, 0x6
- b _0806A9CC
- .align 2, 0
-_0806A99C: .4byte gTasks + 0x8
-_0806A9A0: .4byte gUnknown_08376420 - 0xC
-_0806A9A4: .4byte gMain
-_0806A9A8: .4byte Task_ResetRtc_2
-_0806A9AC:
- movs r0, 0x10
- ands r0, r3
- cmp r0, 0
- beq _0806A9BA
- ldrb r0, [r2, 0x7]
- cmp r0, 0
- bne _0806A9CC
-_0806A9BA:
- mov r3, r12
- ldrh r1, [r3, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0806A9D6
- ldrb r0, [r2, 0x6]
- cmp r0, 0
- beq _0806A9D6
-_0806A9CC:
- strh r0, [r5, 0x4]
- movs r0, 0x5
- bl PlaySE
- b _0806AA58
-_0806A9D6:
- cmp r4, 0x5
- bne _0806AA24
- mov r0, r12
- ldrh r1, [r0, 0x2E]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0806AA58
- ldr r1, _0806AA18 @ =gLocalTime
- ldrh r0, [r5, 0x6]
- strh r0, [r1]
- ldrh r0, [r5, 0x8]
- strb r0, [r1, 0x2]
- ldrh r0, [r5, 0xA]
- strb r0, [r1, 0x3]
- ldrh r0, [r5, 0xC]
- strb r0, [r1, 0x4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0806AA1C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldr r1, _0806AA20 @ =Task_ResetRtc_2
- str r1, [r0]
- strh r4, [r5, 0x2]
- movs r0, 0x6
- strh r0, [r5, 0x4]
- b _0806AA58
- .align 2, 0
-_0806AA18: .4byte gLocalTime
-_0806AA1C: .4byte gTasks
-_0806AA20: .4byte Task_ResetRtc_2
-_0806AA24:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r5, r0
- ldrh r1, [r2, 0x2]
- ldrh r2, [r2, 0x4]
- mov r3, r12
- ldrh r4, [r3, 0x30]
- movs r3, 0xC0
- ands r3, r4
- bl ResetRtcScreen_MoveTimeUpDown
- cmp r0, 0
- beq _0806AA58
- movs r0, 0x5
- bl PlaySE
- ldrh r2, [r5, 0x6]
- ldrb r3, [r5, 0x8]
- ldrb r0, [r5, 0xA]
- str r0, [sp]
- ldrb r0, [r5, 0xC]
- str r0, [sp, 0x4]
- movs r0, 0x4
- movs r1, 0x9
- bl ResetRtcScreen_PrintTime
-_0806AA58:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end Task_ResetRtc_1
-
- thumb_func_start Task_ResetRtc_0
-Task_ResetRtc_0: @ 806AA64
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r6, r5, 2
- adds r6, r5
- lsls r6, 3
- ldr r0, _0806AACC @ =gTasks + 0x8
- mov r8, r0
- adds r4, r6, r0
- movs r0, 0
- strh r0, [r4]
- ldr r3, _0806AAD0 @ =gLocalTime
- ldrh r0, [r3]
- strh r0, [r4, 0x6]
- movs r1, 0x2
- ldrsb r1, [r3, r1]
- strh r1, [r4, 0x8]
- movs r2, 0x3
- ldrsb r2, [r3, r2]
- strh r2, [r4, 0xA]
- ldrb r3, [r3, 0x4]
- lsls r3, 24
- asrs r3, 24
- strh r3, [r4, 0xC]
- ldrh r0, [r4, 0x6]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- bl ResetRtcScreen_ShowChooseTimeWindow
- adds r0, r5, 0
- bl ResetRtcScreen_CreateCursor
- movs r0, 0x2
- strh r0, [r4, 0x4]
- movs r0, 0x8
- negs r0, r0
- add r8, r0
- add r6, r8
- ldr r0, _0806AAD4 @ =Task_ResetRtc_1
- str r0, [r6]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0806AACC: .4byte gTasks + 0x8
-_0806AAD0: .4byte gLocalTime
-_0806AAD4: .4byte Task_ResetRtc_1
- thumb_func_end Task_ResetRtc_0
-
- thumb_func_start CB2_InitResetRtcScreen
-CB2_InitResetRtcScreen: @ 806AAD8
- push {r4-r7,lr}
- sub sp, 0x4
- movs r0, 0x80
- lsls r0, 19
- movs r4, 0
- strh r4, [r0]
- movs r0, 0
- bl SetVBlankCallback
- movs r2, 0xA0
- lsls r2, 19
- mov r0, sp
- strh r4, [r0]
- ldr r1, _0806AB94 @ =0x040000d4
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _0806AB98 @ =0x81000200
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0xC0
- lsls r2, 19
- movs r3, 0xC0
- lsls r3, 9
- mov r4, sp
- movs r6, 0
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _0806AB9C @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0806AB16:
- 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 _0806AB16
- 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, 0
- movs r1, 0x80
- bl ResetOamRange
- bl LoadOam
- bl remove_some_task
- bl dp12_8087EA4
- bl ResetSpriteData
- bl ResetTasks
- bl ResetPaletteFade
- ldr r4, _0806ABA0 @ =gWindowConfig_81E6CE4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x88
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0806ABA4 @ =VBlankCB_ResetRtcScreen
- bl SetVBlankCallback
- ldr r0, _0806ABA8 @ =CB2_ResetRtcScreen
- bl SetMainCallback2
- ldr r0, _0806ABAC @ =Task_ResetRtcScreen
- movs r1, 0x50
- bl CreateTask
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806AB94: .4byte 0x040000d4
-_0806AB98: .4byte 0x81000200
-_0806AB9C: .4byte 0x81000800
-_0806ABA0: .4byte gWindowConfig_81E6CE4
-_0806ABA4: .4byte VBlankCB_ResetRtcScreen
-_0806ABA8: .4byte CB2_ResetRtcScreen
-_0806ABAC: .4byte Task_ResetRtcScreen
- thumb_func_end CB2_InitResetRtcScreen
-
- thumb_func_start CB2_ResetRtcScreen
-CB2_ResetRtcScreen: @ 806ABB0
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end CB2_ResetRtcScreen
-
- thumb_func_start VBlankCB_ResetRtcScreen
-VBlankCB_ResetRtcScreen: @ 806ABC8
- push {lr}
- bl ProcessSpriteCopyRequests
- bl LoadOam
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end VBlankCB_ResetRtcScreen
-
- thumb_func_start ResetRtcScreen_ShowMessage
-ResetRtcScreen_ShowMessage: @ 806ABDC
- push {r4,lr}
- adds r4, r0, 0
- bl MenuDisplayMessageBox
- adds r0, r4, 0
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ResetRtcScreen_ShowMessage
-
- thumb_func_start Task_ShowResetRtcPrompt
-Task_ShowResetRtcPrompt: @ 806ABF4
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0806AC14 @ =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0806AC18
- cmp r0, 0x1
- beq _0806AC80
- b _0806ACC4
- .align 2, 0
-_0806AC14: .4byte gTasks + 0x8
-_0806AC18:
- bl MenuZeroFillScreen
- movs r0, 0
- movs r1, 0
- movs r2, 0x14
- movs r3, 0xA
- bl MenuDrawTextWindow
- ldr r0, _0806AC98 @ =gSystemText_PresentTime
- movs r1, 0x1
- movs r2, 0x1
- bl MenuPrint
- ldr r0, _0806AC9C @ =gLocalTime
- ldrh r2, [r0]
- ldrb r3, [r0, 0x2]
- ldrb r1, [r0, 0x3]
- str r1, [sp]
- ldrb r0, [r0, 0x4]
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0x3
- bl ResetRtcScreen_PrintTime
- ldr r0, _0806ACA0 @ =gSystemText_PreviousTime
- movs r1, 0x1
- movs r2, 0x5
- bl MenuPrint
- ldr r1, _0806ACA4 @ =gSaveBlock2
- adds r0, r1, 0
- adds r0, 0xA0
- ldrh r2, [r0]
- adds r0, 0x2
- ldrb r3, [r0]
- adds r0, 0x1
- ldrb r0, [r0]
- str r0, [sp]
- adds r0, r1, 0
- adds r0, 0xA4
- ldrb r0, [r0]
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0x7
- bl ResetRtcScreen_PrintTime
- ldr r0, _0806ACA8 @ =gSystemText_ResetRTCPrompt
- bl ResetRtcScreen_ShowMessage
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_0806AC80:
- ldr r0, _0806ACAC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0806ACB0
- adds r0, r5, 0
- bl DestroyTask
- bl DoSoftReset
- b _0806ACC4
- .align 2, 0
-_0806AC98: .4byte gSystemText_PresentTime
-_0806AC9C: .4byte gLocalTime
-_0806ACA0: .4byte gSystemText_PreviousTime
-_0806ACA4: .4byte gSaveBlock2
-_0806ACA8: .4byte gSystemText_ResetRTCPrompt
-_0806ACAC: .4byte gMain
-_0806ACB0:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806ACC4
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl DestroyTask
-_0806ACC4:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end Task_ShowResetRtcPrompt
-
- thumb_func_start Task_ResetRtcScreen
-Task_ResetRtcScreen: @ 806ACCC
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0806ACF4 @ =gTasks + 0x8
- adds r5, r0, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0x6
- bls _0806ACE8
- b _0806AEC4
-_0806ACE8:
- lsls r0, 2
- ldr r1, _0806ACF8 @ =_0806ACFC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0806ACF4: .4byte gTasks + 0x8
-_0806ACF8: .4byte _0806ACFC
- .align 2, 0
-_0806ACFC:
- .4byte _0806AD18
- .4byte _0806AD34
- .4byte _0806AD80
- .4byte _0806ADD8
- .4byte _0806AE5C
- .4byte _0806AE8C
- .4byte _0806AEAE
-_0806AD18:
- movs r0, 0x1
- negs r0, r0
- ldr r1, _0806AD30 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x1
- strh r0, [r5]
- b _0806AEC4
- .align 2, 0
-_0806AD30: .4byte 0x0000ffff
-_0806AD34:
- ldr r0, _0806AD5C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0806AD42
- b _0806AEC4
-_0806AD42:
- ldr r0, _0806AD60 @ =gSaveFileStatus
- ldrh r0, [r0]
- cmp r0, 0
- beq _0806AD4E
- cmp r0, 0x2
- bne _0806AD68
-_0806AD4E:
- ldr r0, _0806AD64 @ =gSystemText_NoSaveFileNoTime
- bl ResetRtcScreen_ShowMessage
- movs r0, 0x5
- strh r0, [r5]
- b _0806AEC4
- .align 2, 0
-_0806AD5C: .4byte gPaletteFade
-_0806AD60: .4byte gSaveFileStatus
-_0806AD64: .4byte gSystemText_NoSaveFileNoTime
-_0806AD68:
- bl RtcCalcLocalTime
- ldr r0, _0806AD7C @ =Task_ShowResetRtcPrompt
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x2]
- b _0806ADFC
- .align 2, 0
-_0806AD7C: .4byte Task_ShowResetRtcPrompt
-_0806AD80:
- ldr r2, _0806ADC4 @ =gTasks
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x4]
- cmp r0, 0x1
- bne _0806AD96
- b _0806AEC4
-_0806AD96:
- bl MenuZeroFillScreen
- ldr r0, _0806ADC8 @ =gSystemText_PleaseResetTime
- bl ResetRtcScreen_ShowMessage
- ldr r2, _0806ADCC @ =gLocalTime
- ldr r0, _0806ADD0 @ =gSaveBlock2
- adds r0, 0xA0
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, _0806ADD4 @ =Task_ResetRtc_0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x2]
- movs r0, 0x3
- strh r0, [r5]
- b _0806AEC4
- .align 2, 0
-_0806ADC4: .4byte gTasks
-_0806ADC8: .4byte gSystemText_PleaseResetTime
-_0806ADCC: .4byte gLocalTime
-_0806ADD0: .4byte gSaveBlock2
-_0806ADD4: .4byte Task_ResetRtc_0
-_0806ADD8:
- ldr r2, _0806AE04 @ =gTasks
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0806AEC4
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0806AE08
- ldrb r0, [r5, 0x2]
- bl DestroyTask
-_0806ADFC:
- movs r0, 0x2
- strh r0, [r5]
- b _0806AEC4
- .align 2, 0
-_0806AE04: .4byte gTasks
-_0806AE08:
- ldrb r0, [r5, 0x2]
- bl DestroyTask
- bl RtcReset
- ldr r4, _0806AE4C @ =gLocalTime
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x2
- ldrsb r1, [r4, r1]
- movs r2, 0x3
- ldrsb r2, [r4, r2]
- movs r3, 0x4
- ldrsb r3, [r4, r3]
- bl RtcCalcLocalTimeOffset
- ldr r2, _0806AE50 @ =gSaveBlock2
- adds r2, 0xA0
- ldr r0, [r4]
- ldr r1, [r4, 0x4]
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, _0806AE54 @ =0x00004040
- ldrh r1, [r4]
- bl VarSet
- bl DisableResetRTC
- ldr r0, _0806AE58 @ =gSystemText_ClockResetDataSave
- bl ResetRtcScreen_ShowMessage
- movs r0, 0x4
- strh r0, [r5]
- b _0806AEC4
- .align 2, 0
-_0806AE4C: .4byte gLocalTime
-_0806AE50: .4byte gSaveBlock2
-_0806AE54: .4byte 0x00004040
-_0806AE58: .4byte gSystemText_ClockResetDataSave
-_0806AE5C:
- movs r0, 0
- bl TrySavingData
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0806AE7C
- ldr r0, _0806AE78 @ =gSystemText_SaveCompleted
- bl ResetRtcScreen_ShowMessage
- movs r0, 0x49
- bl PlaySE
- b _0806AE88
- .align 2, 0
-_0806AE78: .4byte gSystemText_SaveCompleted
-_0806AE7C:
- ldr r0, _0806AECC @ =gSystemText_SaveFailed
- bl ResetRtcScreen_ShowMessage
- movs r0, 0x16
- bl PlaySE
-_0806AE88:
- movs r0, 0x5
- strh r0, [r5]
-_0806AE8C:
- ldr r0, _0806AED0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806AEC4
- movs r0, 0x1
- negs r0, r0
- ldr r1, _0806AED4 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x6
- strh r0, [r5]
-_0806AEAE:
- ldr r0, _0806AED8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0806AEC4
- adds r0, r4, 0
- bl DestroyTask
- bl DoSoftReset
-_0806AEC4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0806AECC: .4byte gSystemText_SaveFailed
-_0806AED0: .4byte gMain
-_0806AED4: .4byte 0x0000ffff
-_0806AED8: .4byte gPaletteFade
- thumb_func_end Task_ResetRtcScreen
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom_header.inc b/asm/rom_header.inc
index 43eec30bb..a852a9f23 100644
--- a/asm/rom_header.inc
+++ b/asm/rom_header.inc
@@ -66,8 +66,12 @@ RomHeaderChecksum:
.byte 0x41 - REVISION
.endif
.else
+ .ifdef SAPPHIRE
+ .byte 0x56
+ .else
.byte 0x42
.endif
+ .endif
RomHeaderReserved2:
.space 2
diff --git a/asm/trader.s b/asm/trader.s
deleted file mode 100644
index 3bda1d8dc..000000000
--- a/asm/trader.s
+++ /dev/null
@@ -1,656 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_810993C
-sub_810993C: @ 810993C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- ldr r0, _081099C8 @ =gSaveBlock1 + 0x2D94
- mov r9, r0
- movs r2, 0
-_0810994E:
- adds r1, r2, 0x1
- lsls r0, r1, 24
- lsrs r5, r0, 24
- str r1, [sp, 0xC]
- cmp r5, 0x3
- bhi _081099AC
- movs r1, 0x1
- add r1, r9
- mov r8, r1
- adds r6, r1, r2
- movs r0, 0xB
- mov r10, r0
- mov r0, r10
- muls r0, r2
- adds r0, 0x5
- mov r1, r9
- adds r7, r1, r0
-_08109970:
- ldrb r0, [r6]
- cmp r0, 0
- bne _081099A2
- adds r2, r0, 0
- mov r0, r8
- adds r1, r0, r5
- ldrb r0, [r1]
- strb r0, [r6]
- strb r2, [r1]
- mov r0, sp
- adds r1, r7, 0
- bl StringCopy
- mov r4, r10
- muls r4, r5
- adds r4, 0x5
- add r4, r9
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- adds r0, r4, 0
- mov r1, sp
- bl StringCopy
-_081099A2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _08109970
-_081099AC:
- ldr r1, [sp, 0xC]
- lsls r0, r1, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _0810994E
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081099C8: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_810993C
-
- thumb_func_start sub_81099CC
-sub_81099CC: @ 81099CC
- push {r4-r6,lr}
- ldr r5, _08109A14 @ =gSaveBlock1 + 0x2D94
- movs r1, 0
- movs r0, 0x2
- strb r0, [r5]
- adds r0, r5, 0
- adds r0, 0x31
- strb r1, [r0]
- movs r4, 0
- ldr r6, _08109A18 @ =gUnknown_083F62D8
-_081099E0:
- movs r0, 0xB
- muls r0, r4
- adds r0, 0x5
- adds r0, r5, r0
- lsls r1, r4, 2
- adds r1, r6
- ldr r1, [r1]
- bl StringCopy
- adds r1, r5, 0x1
- adds r1, r4
- ldr r0, _08109A1C @ =gTraderDecorations
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _081099E0
- bl sub_810993C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08109A14: .4byte gSaveBlock1 + 0x2D94
-_08109A18: .4byte gUnknown_083F62D8
-_08109A1C: .4byte gTraderDecorations
- thumb_func_end sub_81099CC
-
- thumb_func_start sub_8109A20
-sub_8109A20: @ 8109A20
- ldr r0, _08109A2C @ =gSaveBlock1 + 0x2D94
- adds r0, 0x31
- movs r1, 0
- strb r1, [r0]
- bx lr
- .align 2, 0
-_08109A2C: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_8109A20
-
- thumb_func_start sub_8109A30
-sub_8109A30: @ 8109A30
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _08109A44 @ =0x00004020
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_08109A44: .4byte 0x00004020
- thumb_func_end sub_8109A30
-
- thumb_func_start sub_8109A48
-sub_8109A48: @ 8109A48
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r6, 0x1
- movs r5, 0
- ldr r0, _08109AB8 @ =gSaveBlock1 + 0x2D94
- movs r4, 0
- adds r7, r0, 0x1
- adds r1, r7, 0
-_08109A64:
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _08109A72
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08109A72:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08109A64
- lsls r3, r6, 25
- movs r0, 0x80
- lsls r0, 18
- adds r3, r0
- lsrs r3, 24
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xC
- bl MenuDrawTextWindow
- movs r4, 0
- mov r1, r9
- lsls r1, 2
- mov r8, r1
-_08109A98:
- adds r1, r7, r4
- ldrb r0, [r1]
- cmp r0, 0
- beq _08109ADE
- cmp r0, 0x78
- bls _08109AC0
- lsls r2, r5, 25
- movs r0, 0x80
- lsls r0, 18
- adds r2, r0
- lsrs r2, 24
- ldr r0, _08109ABC @ =gOtherText_FiveQuestionsAndSlash
- movs r1, 0x1
- bl MenuPrint
- b _08109AD8
- .align 2, 0
-_08109AB8: .4byte gSaveBlock1 + 0x2D94
-_08109ABC: .4byte gOtherText_FiveQuestionsAndSlash
-_08109AC0:
- ldrb r0, [r1]
- lsls r0, 5
- ldr r1, _08109B28 @ =gDecorations + 0x1
- adds r0, r1
- lsls r2, r5, 25
- movs r1, 0x80
- lsls r1, 18
- adds r2, r1
- lsrs r2, 24
- movs r1, 0x1
- bl MenuPrint
-_08109AD8:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_08109ADE:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08109A98
- ldr r0, _08109B2C @ =gOtherText_CancelNoTerminator
- lsls r2, r5, 25
- movs r1, 0x80
- lsls r1, 18
- adds r2, r1
- lsrs r2, 24
- movs r1, 0x1
- bl MenuPrint
- movs r0, 0
- str r0, [sp]
- movs r0, 0xB
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x2
- adds r3, r6, 0
- bl InitMenu
- ldr r1, _08109B30 @ =gTasks
- mov r0, r8
- add r0, r9
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0xA]
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08109B28: .4byte gDecorations + 0x1
-_08109B2C: .4byte gOtherText_CancelNoTerminator
-_08109B30: .4byte gTasks
- thumb_func_end sub_8109A48
-
- thumb_func_start sub_8109B34
-sub_8109B34: @ 8109B34
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x78
- bls _08109B54
- ldr r1, _08109B4C @ =gSpecialVar_0x8004
- ldr r2, _08109B50 @ =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
- b _08109B58
- .align 2, 0
-_08109B4C: .4byte gSpecialVar_0x8004
-_08109B50: .4byte 0x0000ffff
-_08109B54:
- ldr r0, _08109B78 @ =gSpecialVar_0x8004
- strh r1, [r0]
-_08109B58:
- bl HandleDestroyMenuCursors
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xC
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08109B78: .4byte gSpecialVar_0x8004
- thumb_func_end sub_8109B34
-
- thumb_func_start sub_8109B7C
-sub_8109B7C: @ 8109B7C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r6, _08109BA4 @ =gSaveBlock1 + 0x2D94
- ldr r0, _08109BA8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08109BAC
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- b _08109C3E
- .align 2, 0
-_08109BA4: .4byte gSaveBlock1 + 0x2D94
-_08109BA8: .4byte gMain
-_08109BAC:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08109BC2
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl MoveMenuCursor
- b _08109C3E
-_08109BC2:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08109C28
- movs r0, 0x5
- bl PlaySE
- ldr r5, _08109BFC @ =gSpecialVar_0x8005
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- ldr r1, _08109C00 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- ldrh r2, [r5]
- cmp r0, r2
- bne _08109C04
- adds r0, r4, 0
- movs r1, 0
- bl sub_8109B34
- b _08109C3E
- .align 2, 0
-_08109BFC: .4byte gSpecialVar_0x8005
-_08109C00: .4byte gTasks
-_08109C04:
- ldr r0, _08109C24 @ =gStringVar1
- movs r1, 0xB
- muls r1, r2
- adds r1, 0x5
- adds r1, r6
- bl StringCopy
- adds r0, r6, 0x1
- ldrh r5, [r5]
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r4, 0
- bl sub_8109B34
- b _08109C3E
- .align 2, 0
-_08109C24: .4byte gStringVar1
-_08109C28:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08109C3E
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- movs r1, 0
- bl sub_8109B34
-_08109C3E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8109B7C
-
- thumb_func_start sub_8109C44
-sub_8109C44: @ 8109C44
- ldr r0, _08109C50 @ =gSaveBlock1 + 0x2D94
- ldr r1, _08109C54 @ =gScriptResult
- adds r0, 0x31
- ldrb r0, [r0]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08109C50: .4byte gSaveBlock1 + 0x2D94
-_08109C54: .4byte gScriptResult
- thumb_func_end sub_8109C44
-
- thumb_func_start sub_8109C58
-sub_8109C58: @ 8109C58
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _08109C70 @ =gScriptResult
-_08109C5E:
- adds r0, r4, 0
- bl sub_8134194
- lsls r0, 24
- cmp r0, 0
- beq _08109C74
- movs r0, 0
- strh r0, [r5]
- b _08109C84
- .align 2, 0
-_08109C70: .4byte gScriptResult
-_08109C74:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08109C5E
- ldr r1, _08109C8C @ =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
-_08109C84:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08109C8C: .4byte gScriptResult
- thumb_func_end sub_8109C58
-
- thumb_func_start sub_8109C90
-sub_8109C90: @ 8109C90
- push {r4-r6,lr}
- ldr r6, _08109CDC @ =gScriptResult
- movs r0, 0
- strh r0, [r6]
- ldr r4, _08109CE0 @ =gDecorations
- ldr r5, _08109CE4 @ =gSpecialVar_0x8004
- ldrh r0, [r5]
- lsls r0, 5
- adds r2, r0, r4
- ldr r0, _08109CE8 @ =gSpecialVar_0x8006
- ldrh r0, [r0]
- lsls r0, 5
- adds r0, r4
- ldrb r1, [r2, 0x13]
- ldrb r0, [r0, 0x13]
- cmp r1, r0
- beq _08109CD6
- adds r0, r1, 0
- bl sub_8133F9C
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _08109CD6
- ldr r0, _08109CEC @ =gStringVar2
- ldrh r1, [r5]
- lsls r1, 5
- adds r1, r4
- ldrb r1, [r1, 0x13]
- bl sub_80FE7D4
- movs r0, 0x1
- strh r0, [r6]
-_08109CD6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08109CDC: .4byte gScriptResult
-_08109CE0: .4byte gDecorations
-_08109CE4: .4byte gSpecialVar_0x8004
-_08109CE8: .4byte gSpecialVar_0x8006
-_08109CEC: .4byte gStringVar2
- thumb_func_end sub_8109C90
-
- thumb_func_start sub_8109CF0
-sub_8109CF0: @ 8109CF0
- push {lr}
- ldr r0, _08109D00 @ =sub_80FE7A8
- movs r1, 0
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08109D00: .4byte sub_80FE7A8
- thumb_func_end sub_8109CF0
-
- thumb_func_start sub_8109D04
-sub_8109D04: @ 8109D04
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- bl HandleDestroyMenuCursors
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0
- bl DestroyVerticalScrollIndicator
- movs r0, 0x1
- bl DestroyVerticalScrollIndicator
- ldr r0, _08109D6C @ =gUnknown_020388F7
- movs r1, 0x8
- bl sub_80F9520
- bl BuyMenuFreeMemory
- bl sub_80FEFA4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08109D8C
- ldr r5, _08109D70 @ =gSpecialVar_0x8006
- ldr r0, _08109D74 @ =gUnknown_020388F5
- ldrb r1, [r0]
- ldr r0, _08109D78 @ =gUnknown_020388D0
- ldr r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r5]
- ldr r0, _08109D7C @ =gStringVar3
- ldr r1, _08109D80 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- lsls r1, 5
- ldr r4, _08109D84 @ =gDecorations + 0x1
- adds r1, r4
- bl StringCopy
- ldr r0, _08109D88 @ =gStringVar2
- ldrh r1, [r5]
- lsls r1, 5
- adds r1, r4
- bl StringCopy
- b _08109D94
- .align 2, 0
-_08109D6C: .4byte gUnknown_020388F7
-_08109D70: .4byte gSpecialVar_0x8006
-_08109D74: .4byte gUnknown_020388F5
-_08109D78: .4byte gUnknown_020388D0
-_08109D7C: .4byte gStringVar3
-_08109D80: .4byte gSpecialVar_0x8004
-_08109D84: .4byte gDecorations + 0x1
-_08109D88: .4byte gStringVar2
-_08109D8C:
- ldr r1, _08109DA4 @ =gSpecialVar_0x8006
- ldr r2, _08109DA8 @ =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
-_08109D94:
- adds r0, r6, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08109DA4: .4byte gSpecialVar_0x8006
-_08109DA8: .4byte 0x0000ffff
- thumb_func_end sub_8109D04
-
- thumb_func_start sub_8109DAC
-sub_8109DAC: @ 8109DAC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _08109DDC @ =gSpecialVar_0x8006
- movs r0, 0
- strh r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08109DDC: .4byte gSpecialVar_0x8006
- thumb_func_end sub_8109DAC
-
- thumb_func_start sub_8109DE0
-sub_8109DE0: @ 8109DE0
- push {r4-r6,lr}
- ldr r4, _08109E20 @ =gSaveBlock1 + 0x2D94
- ldr r6, _08109E24 @ =gSpecialVar_0x8006
- ldrb r0, [r6]
- bl sub_81340A8
- ldr r0, _08109E28 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl IsThereStorageSpaceForDecoration
- ldr r5, _08109E2C @ =gSpecialVar_0x8005
- ldrh r1, [r5]
- movs r0, 0xB
- muls r0, r1
- adds r0, 0x5
- adds r0, r4
- ldr r1, _08109E30 @ =gSaveBlock2
- bl StringCopy
- adds r0, r4, 0x1
- ldrh r5, [r5]
- adds r0, r5
- ldrh r1, [r6]
- strb r1, [r0]
- bl sub_810993C
- adds r4, 0x31
- movs r0, 0x1
- strb r0, [r4]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08109E20: .4byte gSaveBlock1 + 0x2D94
-_08109E24: .4byte gSpecialVar_0x8006
-_08109E28: .4byte gSpecialVar_0x8004
-_08109E2C: .4byte gSpecialVar_0x8005
-_08109E30: .4byte gSaveBlock2
- thumb_func_end sub_8109DE0
-
- thumb_func_start sub_8109E34
-sub_8109E34: @ 8109E34
- push {lr}
- ldr r0, _08109E4C @ =sub_8109B7C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl sub_8109A48
- pop {r0}
- bx r0
- .align 2, 0
-_08109E4C: .4byte sub_8109B7C
- thumb_func_end sub_8109E34
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unknown_task.s b/asm/unknown_task.s
deleted file mode 100644
index 39f1497ef..000000000
--- a/asm/unknown_task.s
+++ /dev/null
@@ -1,645 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start remove_some_task
-remove_some_task: @ 8089578
- push {r4,lr}
- ldr r4, _080895A8 @ =gUnknown_03004DC0
- movs r0, 0
- strb r0, [r4, 0x15]
- ldr r1, _080895AC @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _080895B0 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _080895B4 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldrb r0, [r4, 0x18]
- cmp r0, 0xFF
- beq _080895A2
- bl DestroyTask
- movs r0, 0xFF
- strb r0, [r4, 0x18]
-_080895A2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080895A8: .4byte gUnknown_03004DC0
-_080895AC: .4byte 0x040000b0
-_080895B0: .4byte 0x0000c5ff
-_080895B4: .4byte 0x00007fff
- thumb_func_end remove_some_task
-
- thumb_func_start dp12_8087EA4
-dp12_8087EA4: @ 80895B8
- push {r4,lr}
- sub sp, 0x4
- mov r0, sp
- movs r4, 0
- strh r4, [r0]
- ldr r1, _080895EC @ =gUnknown_03004DE0
- ldr r2, _080895F0 @ =0x01000780
- bl CpuSet
- ldr r0, _080895F4 @ =gUnknown_03004DC0
- movs r1, 0
- str r1, [r0]
- str r1, [r0, 0x4]
- str r1, [r0, 0x8]
- str r1, [r0, 0xC]
- strb r4, [r0, 0x14]
- strb r4, [r0, 0x15]
- strb r4, [r0, 0x16]
- strb r4, [r0, 0x17]
- movs r1, 0xFF
- strb r1, [r0, 0x18]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080895EC: .4byte gUnknown_03004DE0
-_080895F0: .4byte 0x01000780
-_080895F4: .4byte gUnknown_03004DC0
- thumb_func_end dp12_8087EA4
-
- thumb_func_start sub_80895F8
-sub_80895F8: @ 80895F8
- push {lr}
- sub sp, 0xC
- str r0, [sp]
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- ldr r0, _0808961C @ =0xa2600001
- cmp r1, r0
- bne _0808962C
- ldr r0, _08089620 @ =gUnknown_03004DC0
- ldr r1, _08089624 @ =gUnknown_03004DE2
- str r1, [r0]
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- str r1, [r0, 0x4]
- ldr r1, _08089628 @ =sub_80896F4
- b _0808963C
- .align 2, 0
-_0808961C: .4byte 0xa2600001
-_08089620: .4byte gUnknown_03004DC0
-_08089624: .4byte gUnknown_03004DE2
-_08089628: .4byte sub_80896F4
-_0808962C:
- ldr r0, _0808965C @ =gUnknown_03004DC0
- ldr r1, _08089660 @ =gUnknown_03004DE4
- str r1, [r0]
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- str r1, [r0, 0x4]
- ldr r1, _08089664 @ =sub_8089714
-_0808963C:
- str r1, [r0, 0x10]
- adds r1, r0, 0
- ldr r0, [sp, 0x4]
- str r0, [r1, 0xC]
- ldr r0, [sp]
- str r0, [r1, 0x8]
- mov r0, sp
- ldrb r0, [r0, 0x8]
- strb r0, [r1, 0x15]
- mov r0, sp
- ldrb r0, [r0, 0x9]
- strb r0, [r1, 0x16]
- strb r0, [r1, 0x17]
- add sp, 0xC
- pop {r0}
- bx r0
- .align 2, 0
-_0808965C: .4byte gUnknown_03004DC0
-_08089660: .4byte gUnknown_03004DE4
-_08089664: .4byte sub_8089714
- thumb_func_end sub_80895F8
-
- thumb_func_start sub_8089668
-sub_8089668: @ 8089668
- push {r4,lr}
- ldr r4, _08089698 @ =gUnknown_03004DC0
- ldrb r0, [r4, 0x15]
- cmp r0, 0
- beq _080896E2
- cmp r0, 0x3
- bne _080896AC
- movs r0, 0
- strb r0, [r4, 0x15]
- ldr r1, _0808969C @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _080896A0 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _080896A4 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldr r1, _080896A8 @ =gUnknown_0202FFA4
- movs r0, 0x1
- strb r0, [r1]
- b _080896E2
- .align 2, 0
-_08089698: .4byte gUnknown_03004DC0
-_0808969C: .4byte 0x040000b0
-_080896A0: .4byte 0x0000c5ff
-_080896A4: .4byte 0x00007fff
-_080896A8: .4byte gUnknown_0202FFA4
-_080896AC:
- ldr r1, _080896E8 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _080896EC @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _080896F0 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldrb r0, [r4, 0x14]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- ldr r0, [r4, 0x8]
- str r0, [r1, 0x4]
- ldr r0, [r4, 0xC]
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r0, [r4, 0x10]
- bl _call_via_r0
- ldrb r0, [r4, 0x14]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r4, 0x14]
-_080896E2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080896E8: .4byte 0x040000b0
-_080896EC: .4byte 0x0000c5ff
-_080896F0: .4byte 0x00007fff
- thumb_func_end sub_8089668
-
- thumb_func_start sub_80896F4
-sub_80896F4: @ 80896F4
- ldr r0, _0808970C @ =gUnknown_03004DC0
- ldr r2, [r0, 0x8]
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _08089710 @ =gUnknown_03004DE0
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- bx lr
- .align 2, 0
-_0808970C: .4byte gUnknown_03004DC0
-_08089710: .4byte gUnknown_03004DE0
- thumb_func_end sub_80896F4
-
- thumb_func_start sub_8089714
-sub_8089714: @ 8089714
- ldr r0, _0808972C @ =gUnknown_03004DC0
- ldr r2, [r0, 0x8]
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- ldr r1, _08089730 @ =gUnknown_03004DE0
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- bx lr
- .align 2, 0
-_0808972C: .4byte gUnknown_03004DC0
-_08089730: .4byte gUnknown_03004DE0
- thumb_func_end sub_8089714
-
- thumb_func_start task00_for_dp12
-task00_for_dp12: @ 8089734
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- movs r6, 0
- ldr r0, _0808975C @ =gUnknown_0202FFA4
- ldrb r0, [r0]
- cmp r0, 0
- beq _08089764
- mov r0, r12
- bl DestroyTask
- ldr r1, _08089760 @ =gUnknown_03004DC0
- movs r0, 0xFF
- strb r0, [r1, 0x18]
- b _080898E4
- .align 2, 0
-_0808975C: .4byte gUnknown_0202FFA4
-_08089760: .4byte gUnknown_03004DC0
-_08089764:
- ldr r1, _08089790 @ =gTasks
- mov r0, r12
- lsls r2, r0, 2
- adds r0, r2, r0
- lsls r0, 3
- adds r3, r0, r1
- movs r4, 0x16
- ldrsh r0, [r3, r4]
- mov r10, r1
- mov r9, r2
- cmp r0, 0
- beq _08089810
- movs r1, 0x14
- ldrsh r0, [r3, r1]
- cmp r0, 0xE
- bhi _08089810
- lsls r0, 2
- ldr r1, _08089794 @ =_08089798
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08089790: .4byte gTasks
-_08089794: .4byte _08089798
- .align 2, 0
-_08089798:
- .4byte _080897D4
- .4byte _08089810
- .4byte _080897DC
- .4byte _08089810
- .4byte _080897E4
- .4byte _08089810
- .4byte _080897EC
- .4byte _08089810
- .4byte _080897F4
- .4byte _08089810
- .4byte _080897FC
- .4byte _08089810
- .4byte _08089804
- .4byte _08089810
- .4byte _0808980C
-_080897D4:
- ldr r0, _080897D8 @ =gUnknown_030042A4
- b _0808980E
- .align 2, 0
-_080897D8: .4byte gUnknown_030042A4
-_080897DC:
- ldr r0, _080897E0 @ =gUnknown_030042A0
- b _0808980E
- .align 2, 0
-_080897E0: .4byte gUnknown_030042A0
-_080897E4:
- ldr r0, _080897E8 @ =gUnknown_030042C0
- b _0808980E
- .align 2, 0
-_080897E8: .4byte gUnknown_030042C0
-_080897EC:
- ldr r0, _080897F0 @ =gUnknown_030041B4
- b _0808980E
- .align 2, 0
-_080897F0: .4byte gUnknown_030041B4
-_080897F4:
- ldr r0, _080897F8 @ =gUnknown_03004288
- b _0808980E
- .align 2, 0
-_080897F8: .4byte gUnknown_03004288
-_080897FC:
- ldr r0, _08089800 @ =gUnknown_03004280
- b _0808980E
- .align 2, 0
-_08089800: .4byte gUnknown_03004280
-_08089804:
- ldr r0, _08089808 @ =gUnknown_030041B0
- b _0808980E
- .align 2, 0
-_08089808: .4byte gUnknown_030041B0
-_0808980C:
- ldr r0, _08089870 @ =gUnknown_030041B8
-_0808980E:
- ldrh r6, [r0]
-_08089810:
- mov r0, r9
- add r0, r12
- lsls r0, 3
- mov r2, r10
- adds r1, r0, r2
- ldrh r2, [r1, 0x10]
- movs r3, 0x10
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0808987C
- subs r0, r2, 0x1
- strh r0, [r1, 0x10]
- movs r4, 0xE
- ldrsh r0, [r1, r4]
- movs r3, 0xA0
- lsls r3, 1
- adds r2, r0, r3
- movs r4, 0x8
- ldrsh r3, [r1, r4]
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- cmp r3, r0
- bge _080898E4
- ldr r5, _08089874 @ =gUnknown_03004DE0
- ldr r0, _08089878 @ =gUnknown_03004DC0
- mov r8, r0
- adds r7, r1, 0
- lsls r0, r2, 1
- adds r4, r0, r5
-_0808984A:
- lsls r2, r3, 1
- mov r0, r8
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r5
- ldrh r0, [r4]
- adds r0, r6
- strh r0, [r2]
- adds r4, 0x2
- adds r3, 0x1
- movs r1, 0xA
- ldrsh r0, [r7, r1]
- cmp r3, r0
- blt _0808984A
- b _080898E4
- .align 2, 0
-_08089870: .4byte gUnknown_030041B8
-_08089874: .4byte gUnknown_03004DE0
-_08089878: .4byte gUnknown_03004DC0
-_0808987C:
- ldrh r0, [r1, 0x12]
- strh r0, [r1, 0x10]
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- movs r3, 0xA0
- lsls r3, 1
- adds r2, r0, r3
- movs r4, 0x8
- ldrsh r3, [r1, r4]
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- cmp r3, r0
- bge _080898C4
- ldr r5, _080898F4 @ =gUnknown_03004DE0
- adds r7, r1, 0
- lsls r0, r2, 1
- adds r4, r0, r5
- ldr r0, _080898F8 @ =gUnknown_03004DC0
- mov r8, r0
-_080898A2:
- lsls r2, r3, 1
- mov r0, r8
- ldrb r1, [r0, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r5
- ldrh r0, [r4]
- adds r0, r6
- strh r0, [r2]
- adds r4, 0x2
- adds r3, 0x1
- movs r1, 0xA
- ldrsh r0, [r7, r1]
- cmp r3, r0
- blt _080898A2
-_080898C4:
- mov r0, r9
- add r0, r12
- lsls r0, 3
- mov r3, r10
- adds r2, r0, r3
- ldrh r0, [r2, 0xE]
- adds r0, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- asrs r0, 16
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bne _080898E4
- movs r0, 0
- strh r0, [r2, 0xE]
-_080898E4:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080898F4: .4byte gUnknown_03004DE0
-_080898F8: .4byte gUnknown_03004DC0
- thumb_func_end task00_for_dp12
-
- thumb_func_start sub_80898FC
-sub_80898FC: @ 80898FC
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- movs r1, 0
- movs r2, 0
- ldr r0, _08089940 @ =gSineTable
- mov r12, r0
-_08089910:
- lsls r0, r1, 1
- adds r3, r0, r6
- lsls r0, r2, 1
- add r0, r12
- movs r7, 0
- ldrsh r0, [r0, r7]
- muls r0, r4
- cmp r0, 0
- bge _08089924
- adds r0, 0xFF
-_08089924:
- asrs r0, 8
- strh r0, [r3]
- adds r0, r2, r5
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xFF
- bls _08089910
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08089940: .4byte gSineTable
- thumb_func_end sub_80898FC
-
- thumb_func_start sub_8089944
-sub_8089944: @ 8089944
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- adds r5, r0, 0
- str r1, [sp, 0x10]
- ldr r0, [sp, 0x40]
- mov r8, r0
- ldr r1, [sp, 0x44]
- mov r9, r1
- ldr r0, [sp, 0x48]
- mov r10, r0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, [sp, 0x10]
- lsls r1, 24
- str r1, [sp, 0x14]
- lsrs r0, r1, 24
- str r0, [sp, 0xC]
- lsls r1, r2, 24
- lsrs r1, 24
- str r1, [sp, 0x18]
- lsls r2, r3, 24
- lsrs r2, 24
- str r2, [sp, 0x1C]
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r3, r9
- lsls r3, 24
- lsrs r3, 24
- mov r9, r3
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- bl dp12_8087EA4
- ldr r0, _08089A50 @ =REG_BG0HOFS
- add r0, r9
- str r0, [sp]
- ldr r0, _08089A54 @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- movs r1, 0
- strb r1, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl sub_80895F8
- ldr r0, _08089A58 @ =task00_for_dp12
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08089A5C @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- strh r5, [r4, 0x8]
- mov r3, sp
- ldrh r3, [r3, 0xC]
- strh r3, [r4, 0xA]
- movs r0, 0x80
- lsls r0, 1
- ldr r1, [sp, 0x18]
- bl __divsi3
- strh r0, [r4, 0xC]
- movs r0, 0
- strh r0, [r4, 0xE]
- mov r1, r8
- strh r1, [r4, 0x10]
- strh r1, [r4, 0x12]
- mov r3, r9
- strh r3, [r4, 0x14]
- mov r0, r10
- strh r0, [r4, 0x16]
- ldr r0, _08089A60 @ =gUnknown_03004DC0
- strb r7, [r0, 0x18]
- ldr r0, _08089A64 @ =gUnknown_0202FFA4
- movs r1, 0
- strb r1, [r0]
- ldr r4, _08089A68 @ =gUnknown_03005060
- ldr r3, [sp, 0xC]
- subs r6, r3, r5
- lsls r3, r6, 24
- lsrs r3, 24
- adds r0, r4, 0
- ldr r1, [sp, 0x18]
- ldr r2, [sp, 0x1C]
- bl sub_80898FC
- ldr r0, [sp, 0xC]
- cmp r5, r0
- bge _08089A3E
- ldr r1, _08089A6C @ =0xfffffd80
- adds r2, r4, r1
- lsls r1, r5, 1
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r1, r3
- adds r3, r0, r2
- adds r1, r2
- adds r2, r4, 0
- adds r5, r6, 0
-_08089A2A:
- ldrh r0, [r2]
- strh r0, [r1]
- ldrh r0, [r2]
- strh r0, [r3]
- adds r2, 0x2
- adds r3, 0x2
- adds r1, 0x2
- subs r5, 0x1
- cmp r5, 0
- bne _08089A2A
-_08089A3E:
- adds r0, r7, 0
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08089A50: .4byte REG_BG0HOFS
-_08089A54: .4byte 0xa2600001
-_08089A58: .4byte task00_for_dp12
-_08089A5C: .4byte gTasks
-_08089A60: .4byte gUnknown_03004DC0
-_08089A64: .4byte gUnknown_0202FFA4
-_08089A68: .4byte gUnknown_03005060
-_08089A6C: .4byte 0xfffffd80
- thumb_func_end sub_8089944
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/common_syms/battle_anim.txt b/common_syms/battle_anim.txt
new file mode 100644
index 000000000..a93ac9b5d
--- /dev/null
+++ b/common_syms/battle_anim.txt
@@ -0,0 +1,3 @@
+gSoundAnimFramesToWait
+gBattleAnimArgs
+gAnimSpriteIndexArray
diff --git a/common_syms/contest_painting.txt b/common_syms/contest_painting.txt
new file mode 100644
index 000000000..2e8490348
--- /dev/null
+++ b/common_syms/contest_painting.txt
@@ -0,0 +1,5 @@
+gUnknown_03005E10
+gUnknown_03005E20
+gUnknown_03005E40
+gUnknown_03005E8C
+gUnknown_03005E90
diff --git a/common_syms/field_camera.txt b/common_syms/field_camera.txt
new file mode 100644
index 000000000..7aad967f8
--- /dev/null
+++ b/common_syms/field_camera.txt
@@ -0,0 +1,3 @@
+gUnknown_03004880
+gUnknown_03004898
+gUnknown_0300489C
diff --git a/common_syms/field_control_avatar.txt b/common_syms/field_control_avatar.txt
new file mode 100644
index 000000000..040a9e6c1
--- /dev/null
+++ b/common_syms/field_control_avatar.txt
@@ -0,0 +1 @@
+gSelectedMapObject
diff --git a/common_syms/field_map_obj.txt b/common_syms/field_map_obj.txt
new file mode 100644
index 000000000..32d8b1915
--- /dev/null
+++ b/common_syms/field_map_obj.txt
@@ -0,0 +1 @@
+gMapObjects
diff --git a/common_syms/fieldmap.txt b/common_syms/fieldmap.txt
new file mode 100644
index 000000000..7819b3b40
--- /dev/null
+++ b/common_syms/fieldmap.txt
@@ -0,0 +1 @@
+gUnknown_03004870
diff --git a/common_syms/intro.txt b/common_syms/intro.txt
new file mode 100644
index 000000000..d069b1014
--- /dev/null
+++ b/common_syms/intro.txt
@@ -0,0 +1,2 @@
+gIntroFrameCounter
+gMultibootProgramStruct
diff --git a/common_syms/mori_debug_menu.txt b/common_syms/mori_debug_menu.txt
new file mode 100644
index 000000000..77ab5531c
--- /dev/null
+++ b/common_syms/mori_debug_menu.txt
@@ -0,0 +1 @@
+gUnknown_03004DA0
diff --git a/common_syms/pokedex.txt b/common_syms/pokedex.txt
new file mode 100644
index 000000000..18b14f3ed
--- /dev/null
+++ b/common_syms/pokedex.txt
@@ -0,0 +1,2 @@
+gUnknown_03005CE8
+gUnknown_03005CEC
diff --git a/common_syms/pokemon_1.txt b/common_syms/pokemon_1.txt
new file mode 100644
index 000000000..c588d53a7
--- /dev/null
+++ b/common_syms/pokemon_1.txt
@@ -0,0 +1,4 @@
+gPlayerPartyCount
+gPlayerParty
+gEnemyPartyCount
+gEnemyParty
diff --git a/common_syms/record_mixing.txt b/common_syms/record_mixing.txt
new file mode 100644
index 000000000..a6f4f8df3
--- /dev/null
+++ b/common_syms/record_mixing.txt
@@ -0,0 +1 @@
+gUnknown_03005D2C
diff --git a/common_syms/rom3.txt b/common_syms/rom3.txt
new file mode 100644
index 000000000..06a965ff6
--- /dev/null
+++ b/common_syms/rom3.txt
@@ -0,0 +1 @@
+gBattleBuffersTransferData
diff --git a/common_syms/rom4.txt b/common_syms/rom4.txt
new file mode 100644
index 000000000..ecdb190b2
--- /dev/null
+++ b/common_syms/rom4.txt
@@ -0,0 +1,4 @@
+word_3004858
+gFieldCallback
+gUnknown_03004860
+gFieldLinkPlayerCount
diff --git a/common_syms/save.txt b/common_syms/save.txt
new file mode 100644
index 000000000..d09a52bcf
--- /dev/null
+++ b/common_syms/save.txt
@@ -0,0 +1,9 @@
+gLastWrittenSector
+gLastSaveCounter
+gLastKnownGoodSector
+gDamagedSaveSectors
+gSaveCounter
+gFastSaveSection
+gUnknown_03005EB4
+gSaveFileStatus
+gGameContinueCallback
diff --git a/common_syms/sound.txt b/common_syms/sound.txt
new file mode 100644
index 000000000..0f6f2fc75
--- /dev/null
+++ b/common_syms/sound.txt
@@ -0,0 +1 @@
+gDisableMusic
diff --git a/common_syms/sound_check_menu.txt b/common_syms/sound_check_menu.txt
new file mode 100644
index 000000000..ba350ad8e
--- /dev/null
+++ b/common_syms/sound_check_menu.txt
@@ -0,0 +1 @@
+gUnknown_03005D30
diff --git a/common_syms/start_menu.txt b/common_syms/start_menu.txt
new file mode 100644
index 000000000..bc0c247d1
--- /dev/null
+++ b/common_syms/start_menu.txt
@@ -0,0 +1 @@
+gCallback_03004AE8
diff --git a/common_syms/tv.txt b/common_syms/tv.txt
new file mode 100644
index 000000000..829139f8f
--- /dev/null
+++ b/common_syms/tv.txt
@@ -0,0 +1 @@
+gUnknown_03005D38
diff --git a/constants/misc_constants.inc b/constants/misc_constants.inc
index 438fed6b6..5f4330928 100644
--- a/constants/misc_constants.inc
+++ b/constants/misc_constants.inc
@@ -32,8 +32,14 @@
.equiv MALE, 0
.equiv FEMALE, 1
+ .ifdef ENGLISH
.equiv GAME_LANGUAGE, 2
-
+ .else
+ .ifdef GERMAN
+ .equiv GAME_LANGUAGE, 5
+ .endif
+ .endif
+
.equiv ENEMY_TYPE1, 0
.equiv ENEMY_TYPE2, 1
.equiv PLAYER_TYPE1, 2
diff --git a/constants/version.inc b/constants/version.inc
index 33d2804fc..c93e439f4 100644
--- a/constants/version.inc
+++ b/constants/version.inc
@@ -1,4 +1,10 @@
.ifdef SAPPHIRE
+ .equiv GAME_VERSION, 1
+ .else
+ .equiv GAME_VERSION, 2
+ .endif
+
+ .ifdef SAPPHIRE
.set BGM_EVIL_TEAM, BGM_AQA_0
.set BGM_GOOD_TEAM, BGM_MGM0
.else
diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s
index c06a4073a..4d809241c 100644
--- a/data-de/event_scripts.s
+++ b/data-de/event_scripts.s
@@ -433,16 +433,16 @@ EventScript_15F419:
compare RESULT, 0
jumpeq EventScript_15F384
closebutton
- special 10
+ special SecretBasePC_PackUp
releaseall
end
EventScript_15F432:
- special 14
+ special SecretBasePC_Decoration
end
EventScript_15F436:
- special 15
+ special SecretBasePC_Registry
end
gUnknown_0815F43A:: @ 815F43A
@@ -475,18 +475,18 @@ gUnknown_0815F49A:: @ 815F49A
end
EventScript_15F4A1:
- special 12
+ special sub_80BC56C
compare RESULT, 1
jumpeq EventScript_15F4E0
compare RESULT, 2
jumpeq EventScript_15F503
- special 303
+ special sub_80BC224
msgbox UnknownString_81A3958, 5
compare RESULT, 0
jumpeq EventScript_15F452
msgbox UnknownString_81A3A22, 3
- special 13
- special 26
+ special sub_80BC5BC
+ special sub_80C683C
releaseall
end
@@ -495,14 +495,14 @@ EventScript_15F4E0:
compare RESULT, 0
jumpeq EventScript_15F452
msgbox UnknownString_81A3A3A, 3
- special 13
- special 26
+ special sub_80BC5BC
+ special sub_80C683C
releaseall
end
EventScript_15F503:
msgbox UnknownString_81A39C0, 3
- special 26
+ special sub_80C683C
closebutton
releaseall
end
@@ -514,7 +514,7 @@ EventScript_15F511:
end
EventScript_15F51D:
- special 26
+ special sub_80C683C
closebutton
releaseall
end
@@ -525,7 +525,7 @@ gUnknown_0815F523:: @ 815F523
end
gUnknown_0815F528:: @ 815F528
- special 307
+ special GetShieldToyTVDecorationInfo
compare RESULT, 0
jumpeq EventScript_15F558
compare RESULT, 1
@@ -925,14 +925,14 @@ LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806
MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806
OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806
SecretBase_RedCave1_EventScript_19F806:: @ 819F806
- special 93
+ special InitSaveDialog
waitstate
return
gUnknown_0819F80B:: @ 819F80B
lock
- special 56
- special 55
+ special PlayTrainerEncounterMusic
+ special sub_80847C8
waitstate
jump EventScript_19F8F2
@@ -941,11 +941,11 @@ gUnknown_0819F818:: @ 819F818
faceplayer
move LAST_TALKED, Movement_19F8F0
waitmove 0
- specialval RESULT, 54
+ specialval RESULT, sub_8082564
compare RESULT, 0
jumpif 5, EventScript_19F83F
- special 56
- special 314
+ special PlayTrainerEncounterMusic
+ special sub_8082524
jump EventScript_19F8F2
EventScript_19F83F:
@@ -955,18 +955,18 @@ gUnknown_0819F840:: @ 819F840
lock
faceplayer
call EventScript_19F8E5
- specialval RESULT, 54
+ specialval RESULT, sub_8082564
compare RESULT, 0
jumpif 5, EventScript_19F877
- special 61
+ special CheckForAlivePartyMons
compare RESULT, 0
jumpif 5, EventScript_19F870
- special 56
- special 314
+ special PlayTrainerEncounterMusic
+ special sub_8082524
jump EventScript_19F8F2
EventScript_19F870:
- special 53
+ special sub_8082718
waittext
waitbutton
release
@@ -978,21 +978,21 @@ EventScript_19F877:
gUnknown_0819F878:: @ 819F878
move LAST_TALKED, Movement_19F8F0
waitmove 0
- special 56
+ special PlayTrainerEncounterMusic
reptrainerbattle
endtrainerbattle
gUnknown_0819F887:: @ 819F887
call EventScript_19F8E5
- specialval RESULT, 58
+ specialval RESULT, sub_8082C9C
compare RESULT, 0
jumpeq EventScript_19F8AD
- special 56
- special 314
- special 52
+ special PlayTrainerEncounterMusic
+ special sub_8082524
+ special sub_80826D8
waittext
waitbutton
- special 59
+ special sub_80826B0
waitstate
releaseall
end
@@ -1001,18 +1001,18 @@ EventScript_19F8AD:
endtrainerbattle
gUnknown_0819F8AE:: @ 819F8AE
- specialval RESULT, 58
+ specialval RESULT, sub_8082C9C
compare RESULT, 0
jumpeq EventScript_19F8DD
- special 61
+ special CheckForAlivePartyMons
compare RESULT, 0
jumpif 5, EventScript_19F8DE
- special 56
- special 314
- special 52
+ special PlayTrainerEncounterMusic
+ special sub_8082524
+ special sub_80826D8
waittext
waitbutton
- special 59
+ special sub_80826B0
waitstate
releaseall
end
@@ -1021,7 +1021,7 @@ EventScript_19F8DD:
endtrainerbattle
EventScript_19F8DE:
- special 53
+ special sub_8082718
waittext
waitbutton
release
@@ -1037,11 +1037,11 @@ Movement_19F8F0::
step_end
EventScript_19F8F2:
- special 52
+ special sub_80826D8
waittext
waitbutton
reptrainerbattle
- specialval RESULT, 51
+ specialval RESULT, sub_8082558
compare RESULT, 0
jumpeq EventScript_19F934
compare RESULT, 2
@@ -1296,7 +1296,7 @@ EverGrandeCity_HallOfFame_EventScript_19FC13:: @ 819FC13
clearflag 751
clearflag 860
clearflag 861
- special 169
+ special sub_810FAA0
checkflag 291
callif 0, EverGrandeCity_HallOfFame_EventScript_19FC62
checkflag 255
@@ -1455,7 +1455,7 @@ OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C
checkanimation 25
move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845
waitmove 0
- special 0
+ special HealPlayerParty
checkflag 273
jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE
jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0
@@ -1476,7 +1476,7 @@ OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7
return
OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE
- specialval RESULT, 308
+ specialval RESULT, IsPokerusInParty
compare RESULT, 1
jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDEA
compare RESULT, 0
@@ -1645,7 +1645,7 @@ HiddenItemScript_Success:
waitfanfare
waittext
msgbox Message_PutAwayItem
- special 0x96
+ special SetFlagInVar
releaseall
end
@@ -1666,7 +1666,7 @@ UnusedMixRecordsScript: @ 819FFD5
jumpeq UnusedMixRecordsScript_Done
jump UnusedMixRecordsScript_Done
UnusedMixRecordsScript_Yes: @ 819FFFA
- special 0x1B
+ special sub_80B929C
waitstate
lock
faceplayer
@@ -1680,7 +1680,7 @@ UnusedMixRecordsScript_Done: @ 81A0000
gUnknown_081A0009:: @ 81A0009
lockall
setvar 0x8004, 0
- special 214
+ special DoPCTurnOnEffect
playsfx 4
msgbox UnknownString_81A09EC, 4
jump EventScript_1A0023
@@ -1689,7 +1689,7 @@ gUnknown_081A0009:: @ 81A0009
EventScript_1A0023:
message gPCText_WhichPCShouldBeAccessed
waittext
- special 262
+ special TryCreatePCMenu
waitstate
jump EventScript_1A0033
end
@@ -1706,7 +1706,7 @@ EventScript_1A0033:
EventScript_1A0070:
playsfx 2
msgbox UnknownString_81A0A54, 4
- special 250
+ special PlayerPC
waitstate
jump EventScript_1A0023
end
@@ -1718,7 +1718,7 @@ EventScript_1A0085:
checkflag 2123
callif 1, EventScript_1A00B5
msgbox UnknownString_81A0A35, 4
- special 60
+ special ShowPokemonStorageSystem
waitstate
jump EventScript_1A0023
end
@@ -1734,7 +1734,7 @@ EventScript_1A00B5:
EventScript_1A00BE:
setvar 0x8004, 0
playsfx 3
- special 215
+ special DoPCTurnOffEffect
releaseall
end
@@ -1742,7 +1742,7 @@ EventScript_1A00CB:
checkflag 2052
jumpif 0, EventScript_1A00BE
playsfx 2
- special 263
+ special AccessHallOfFamePC
waitstate
jump EventScript_1A0033
end
@@ -1789,7 +1789,7 @@ Route123_BerryMastersHouse_EventScript_1A00F3:: @ 81A00F3
SlateportCity_OceanicMuseum_1F_EventScript_1A00F3:: @ 81A00F3
SlateportCity_PokemonFanClub_EventScript_1A00F3:: @ 81A00F3
fadescreen 1
- special 95
+ special sub_80E60D8
fadescreen 0
return
@@ -1805,7 +1805,7 @@ DewfordTown_EventScript_1A0102:: @ 81A0102
DewfordTown_Hall_EventScript_1A0102:: @ 81A0102
checkdailyflags
setvar 0x8004, 0
- special 126
+ special sub_80FA5BC
return
DewfordTown_EventScript_1A010C:: @ 81A010C
@@ -2112,7 +2112,7 @@ SSTidalRooms_EventScript_1A02CA:: @ 81A02CA
fadescreen 1
fanfare 368
waitfanfare
- special 0
+ special HealPlayerParty
fadescreen 0
return
@@ -2120,7 +2120,7 @@ Event_WorldMap:: @ 81A02D6
lockall
msgbox UnknownString_817303D, 4
fadescreen 1
- special 251
+ special FieldShowRegionMap
waitstate
releaseall
end
@@ -2202,7 +2202,7 @@ Route101_EventScript_1A039B:: @ 81A039B
Route101_EventScript_1A03A5:: @ 81A03A5
copyvar 0x8004, 0x8009
- special 213
+ special ShowPokedexRatingMessage
waittext
waitbutton
return
@@ -2210,7 +2210,7 @@ Route101_EventScript_1A03A5:: @ 81A03A5
EverGrandeCity_ChampionsRoom_EventScript_1A03B0:: @ 81A03B0
Route101_EventScript_1A03B0:: @ 81A03B0
setvar 0x8004, 0
- specialval RESULT, 212
+ specialval RESULT, ScriptGetPokedexInfo
copyvar 0x8008, 0x8005
copyvar 0x8009, 0x8006
copyvar 0x800a, RESULT
@@ -2221,7 +2221,7 @@ Route101_EventScript_1A03B0:: @ 81A03B0
compare 0x800a, 0
jumpeq Route101_EventScript_1A14DC
setvar 0x8004, 1
- specialval RESULT, 212
+ specialval RESULT, ScriptGetPokedexInfo
copyvar 0x8008, 0x8005
copyvar 0x8009, 0x8006
buffernum 0, 0x8008
@@ -2329,7 +2329,7 @@ CaveOfOrigin_1F_EventScript_1A04D3:: @ 81A04D3
CaveOfOrigin_B2F_EventScript_1A04D3:: @ 81A04D3
setvar 0x8004, 1
setvar 0x8005, 1
- special 310
+ special sub_810F758
waitstate
releaseall
end
@@ -2534,7 +2534,7 @@ MossdeepCity_StevensHouse_EventScript_1A0678:: @ 81A0678
RustboroCity_DevonCorp_2F_EventScript_1A0678:: @ 81A0678
SlateportCity_House1_EventScript_1A0678:: @ 81A0678
fadescreen 1
- special 158
+ special sub_80BF9F8
waitstate
return
@@ -2569,7 +2569,7 @@ EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693
setmaptile 10, 2, 733, 1
setmaptile 11, 2, 734, 1
setmaptile 12, 2, 733, 1
- special 142
+ special DrawWholeMapView
return
EverGrandeCity_DrakesRoom_EventScript_1A0710:: @ 81A0710
@@ -2585,7 +2585,7 @@ EverGrandeCity_SidneysRoom_EventScript_1A0710:: @ 81A0710
setmaptile 5, 13, 526, 1
setmaptile 6, 13, 526, 1
setmaptile 7, 13, 526, 1
- special 142
+ special DrawWholeMapView
return
EverGrandeCity_DrakesRoom_EventScript_1A0757:: @ 81A0757
@@ -3261,7 +3261,7 @@ Event_NoRegisteredItem:: @ 81A14AF
gUnknown_081A14B8:: @ 81A14B8
lockall
- special 199
+ special ExecuteWhiteOut
waitstate
compare RESULT, 1
jumpeq EventScript_1A14CA
@@ -3272,10 +3272,10 @@ EventScript_1A14CA::
message UnknownString_81A1141
waittext
waitbutton
- special 332
+ special sub_8081924
waitstate
fadescreen 1
- special 200
+ special sp0C8_whiteout_maybe
waitstate
end
@@ -3616,8 +3616,8 @@ SecretBase_RedCave1_Text_1A2BA4:: @ 81A2BA4
.string "Bist du sprachlos? Hihihi...$"
gUnknown_081A2C51:: @ 81A2C51
- special 21
- special 7
+ special sub_80BB70C
+ special sub_80BB63C
compare RESULT, 1
jumpeq EventScript_1A2E45
checkattack MOVE_SECRET_POWER
@@ -3735,11 +3735,11 @@ EventScript_1A2DB8:
playsfx 9
setvar 0x4097, 0
setflag 173
- special 6
- special 8
+ special sub_80BB8CC
+ special sub_80BBAF0
setvar 0x8004, 0
setvar 0x8005, 0
- special 18
+ special sub_80BBDD0
setvar 0x4089, 1
waitstate
end
@@ -3753,13 +3753,13 @@ SecretBase_RedCave1_EventScript_1A2DDE:: @ 81A2DDE
jumpeq SecretBase_RedCave1_EventScript_1A2E08
closebutton
playsfx 9
- special 9
+ special sub_80BC440
end
SecretBase_RedCave1_EventScript_1A2E08:: @ 81A2E08
closebutton
setflag 96
- special 24
+ special sub_80BBC78
waitstate
end
@@ -3772,18 +3772,18 @@ gUnknown_081A2E14:: @ 81A2E14
lockall
setvar 0x4097, 1
playsfx 9
- special 11
+ special sub_80BC114
compare RESULT, 0
jumpeq EventScript_1A2E38
clearflag 173
- special 8
+ special sub_80BBAF0
setvar 0x4089, 0
waitstate
end
EventScript_1A2E38:
setflag 173
- special 8
+ special sub_80BBAF0
setvar 0x4089, 0
waitstate
end
@@ -3795,7 +3795,7 @@ EventScript_1A2E45:
setanimation 0, RESULT
setorcopyvar 0x8004, RESULT
lockall
- special 278
+ special GetSecretBaseNearbyMapName
msgbox UnknownString_81A3C71, 5
compare RESULT, 0
jumpeq EventScript_1A2F3A
@@ -3803,7 +3803,7 @@ EventScript_1A2E45:
compare RESULT, 0
jumpeq EventScript_1A2F3A
fadescreen 1
- special 330
+ special sub_80BC50C
closebutton
fadescreen 0
msgbox UnknownString_81A3CC9, 5
@@ -3873,7 +3873,7 @@ LittlerootTown_MaysHouse_2F_EventScript_1A2F68:: @ 81A2F68
SecretBase_RedCave1_EventScript_1A2F68:: @ 81A2F68
setvar 0x8004, 0
setvar 0x8005, 0
- special 18
+ special sub_80BBDD0
setvar 0x4089, 1
end
@@ -3883,7 +3883,7 @@ gUnknown_081A2F7B:: @ 81A2F7B
end
EventScript_1A2F86:
- special 19
+ special sub_80FF474
end
gUnknown_081A2F8A:: @ 81A2F8A
@@ -3892,7 +3892,7 @@ gUnknown_081A2F8A:: @ 81A2F8A
end
EventScript_1A2F95:
- special 23
+ special sub_8100A7C
compare RESULT, 1
jumpeq EventScript_1A2FBF
addvar 0x8004, 1
@@ -3930,7 +3930,7 @@ SecretBase_YellowCave1_EventScript_1A2FC0:: @ 81A2FC0
SecretBase_YellowCave2_EventScript_1A2FC0:: @ 81A2FC0
SecretBase_YellowCave3_EventScript_1A2FC0:: @ 81A2FC0
SecretBase_YellowCave4_EventScript_1A2FC0:: @ 81A2FC0
- special 17
+ special sub_80BCE90
compare 0x8004, 0
jumpeq SecretBase_RedCave1_EventScript_1A3032
compare 0x8004, 1
@@ -3964,7 +3964,7 @@ SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A308F
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A308F
@@ -3979,7 +3979,7 @@ SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086
SecretBase_RedCave1_EventScript_1A308F:: @ 81A308F
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1B97, 2
end
@@ -3999,7 +3999,7 @@ SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A310B
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A310B
@@ -4014,7 +4014,7 @@ SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102
SecretBase_RedCave1_EventScript_1A310B:: @ 81A310B
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1F2E, 2
end
@@ -4034,7 +4034,7 @@ SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3187
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3187
@@ -4049,7 +4049,7 @@ SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E
SecretBase_RedCave1_EventScript_1A3187:: @ 81A3187
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2230, 2
end
@@ -4069,7 +4069,7 @@ SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3203
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3203
@@ -4084,7 +4084,7 @@ SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA
SecretBase_RedCave1_EventScript_1A3203:: @ 81A3203
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A258A, 2
end
@@ -4104,7 +4104,7 @@ SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A327F
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A327F
@@ -4119,7 +4119,7 @@ SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276
SecretBase_RedCave1_EventScript_1A327F:: @ 81A327F
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A28F4, 2
end
@@ -4139,7 +4139,7 @@ SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A32FB
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A32FB
@@ -4154,7 +4154,7 @@ SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2
SecretBase_RedCave1_EventScript_1A32FB:: @ 81A32FB
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1D59, 2
end
@@ -4174,7 +4174,7 @@ SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3377
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3377
@@ -4189,7 +4189,7 @@ SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E
SecretBase_RedCave1_EventScript_1A3377:: @ 81A3377
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A20AE, 2
end
@@ -4209,7 +4209,7 @@ SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A33F3
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A33F3
@@ -4224,7 +4224,7 @@ SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA
SecretBase_RedCave1_EventScript_1A33F3:: @ 81A33F3
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2420, 2
end
@@ -4244,7 +4244,7 @@ SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A346F
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A346F
@@ -4259,7 +4259,7 @@ SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466
SecretBase_RedCave1_EventScript_1A346F:: @ 81A346F
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2736, 2
end
@@ -4279,7 +4279,7 @@ SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A34EB
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A34EB
@@ -4294,7 +4294,7 @@ SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2
SecretBase_RedCave1_EventScript_1A34EB:: @ 81A34EB
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2AFB, 2
end
@@ -4304,12 +4304,12 @@ SecretBase_RedCave1_EventScript_1A3501:: @ 81A3501
end
SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A
- special 16
+ special sub_80BCE1C
setvar 0x8004, 1
setvar 0x8005, 0
- special 236
+ special sub_813556C
waitstate
- special 0
+ special HealPlayerParty
release
end
@@ -4405,14 +4405,14 @@ BattleTower_Lobby_EventScript_1ADE46:: @ 81ADE46
FallarborTown_ContestLobby_EventScript_1ADE46:: @ 81ADE46
SlateportCity_OceanicMuseum_1F_EventScript_1ADE46:: @ 81ADE46
SlateportCity_PokemonFanClub_EventScript_1ADE46:: @ 81ADE46
- special 68
+ special sub_80BDE48
inccounter GAME_STAT_GOT_INTERVIEWED
release
end
SlateportCity_PokemonFanClub_EventScript_1ADE4D:: @ 81ADE4D
setvar 0x8005, 1
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq SlateportCity_PokemonFanClub_EventScript_1ADED6
copyvar 0x8009, 0x8006
@@ -4457,7 +4457,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADEE0:: @ 81ADEE0
lock
faceplayer
setvar 0x8005, 2
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96
copyvar 0x8009, 0x8006
@@ -4512,11 +4512,11 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96
SlateportCity_PokemonFanClub_EventScript_1ADFA0:: @ 81ADFA0
lock
faceplayer
- specialval RESULT, 69
+ specialval RESULT, sub_80BF544
compare RESULT, 0
jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE4D
setvar 0x8005, 3
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0AC
copyvar 0x8009, 0x8006
@@ -4593,7 +4593,7 @@ VerdanturfTown_ContestLobby_EventScript_1AE0B6:: @ 81AE0B6
checkflag 2
jumpeq FallarborTown_ContestLobby_EventScript_1AE17E
setvar 0x8005, 6
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq FallarborTown_ContestLobby_EventScript_1AE17E
copyvar 0x8009, 0x8006
@@ -4625,7 +4625,7 @@ FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D
FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137
setvar 0x8004, 24
- special 70
+ special SetContestCategoryStringVarForInterview
msgbox FallarborTown_ContestLobby_Text_1A70A5, 4
setvar 0x8004, 11
copyvar 0x8005, 0x8009
@@ -4653,7 +4653,7 @@ VerdanturfTown_ContestLobby_EventScript_1AE188:: @ 81AE188
compare 0x4086, 2
jumpif 5, FallarborTown_ContestLobby_EventScript_1AE1FE
setvar 0x8005, 6
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq FallarborTown_ContestLobby_EventScript_1AE1FE
switch 0x4088
@@ -4690,7 +4690,7 @@ BattleTower_Lobby_EventScript_1AE1FF:: @ 81AE1FF
checkflag 2
jumpeq BattleTower_Lobby_EventScript_1AE2E3
setvar 0x8005, 7
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq BattleTower_Lobby_EventScript_1AE2E3
copyvar 0x8009, 0x8006
@@ -4759,7 +4759,7 @@ BattleTower_Lobby_EventScript_1AE2ED:: @ 81AE2ED
compare 0x40bc, 0
jumpeq BattleTower_Lobby_EventScript_1AE30F
setvar 0x8005, 7
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq BattleTower_Lobby_EventScript_1AE30F
clearflag 918
@@ -4854,7 +4854,7 @@ MauvilleCity_GameCorner_EventScript_1C40AC:: @ 81C40AC
end
MauvilleCity_GameCorner_EventScript_1C40DA:: @ 81C40DA
- special 162
+ special PlayRoulette
waitstate
end
@@ -4927,7 +4927,7 @@ gUnknown_081C6BDE:: @ 81C6BDE
waitmove 0
playsfx 43
pause 60
- special 319
+ special sp13F_fall_to_last_warp
waitstate
end
diff --git a/data-de/field_move_scripts.inc b/data-de/field_move_scripts.inc
index d0ed559ec..91c3dcca8 100644
--- a/data-de/field_move_scripts.inc
+++ b/data-de/field_move_scripts.inc
@@ -90,10 +90,10 @@ DoRockSmashMovement: @ 81B0F0C
move LAST_TALKED, RockSmashMovement
waitmove 0
disappear LAST_TALKED
- specialval RESULT, 298
+ specialval RESULT, sub_810F5BC
compare RESULT, 1
jumpeq DoRockSmashMovement_Done
- special 171
+ special RockSmashWildEncounter
compare RESULT, 0
jumpeq DoRockSmashMovement_Done
waitstate
diff --git a/data-de/items.inc b/data-de/items.inc
deleted file mode 100644
index ab23ef5a0..000000000
--- a/data-de/items.inc
+++ /dev/null
@@ -1,5236 +0,0 @@
- .align 2
-gItems:: @ 83C5564
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MEISTERBALL$", 14
- .2byte ITEM_MASTER_BALL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MasterBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 0
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 0
-
- .string "HYPERBALL$", 14
- .2byte ITEM_ULTRA_BALL
- .2byte 1200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_UltraBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 1
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 1
-
- .string "SUPERBALL$", 14
- .2byte ITEM_GREAT_BALL
- .2byte 600 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GreatBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 2
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 2
-
- .string "POKéBALL$", 14
- .2byte ITEM_POKE_BALL
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PokeBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 3
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 3
-
- .string "SAFARIBALL$", 14
- .2byte ITEM_SAFARI_BALL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SafariBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 4
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 4
-
- .string "NETZBALL$", 14
- .2byte ITEM_NET_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_NetBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 5
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 5
-
- .string "TAUCHBALL$", 14
- .2byte ITEM_DIVE_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DiveBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 6
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 6
-
- .string "NESTBALL$", 14
- .2byte ITEM_NEST_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_NestBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 7
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 7
-
- .string "WIEDERBALL$", 14
- .2byte ITEM_REPEAT_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RepeatBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 8
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 8
-
- .string "TIMERBALL$", 14
- .2byte ITEM_TIMER_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TimerBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 9
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 9
-
- .string "LUXUSBALL$", 14
- .2byte ITEM_LUXURY_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_LuxuryBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 10
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 10
-
- .string "PREMIERBALL$", 14
- .2byte ITEM_PREMIER_BALL
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PremierBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 11
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 11
-
- .string "TRANK$", 14
- .2byte ITEM_POTION
- .2byte 300 @ price
- .byte HOLD_EFFECT_NONE
- .byte 20
- .4byte gItemDescription_Potion
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "GEGENGIFT$", 14
- .2byte ITEM_ANTIDOTE
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Antidote
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "FEUERHEILER$", 14
- .2byte ITEM_BURN_HEAL
- .2byte 250 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BurnHeal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "EISHEILER$", 14
- .2byte ITEM_ICE_HEAL
- .2byte 250 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_IceHeal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "AUFWECKER$", 14
- .2byte ITEM_AWAKENING
- .2byte 250 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Awakening
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "PARA-HEILER$", 14
- .2byte ITEM_PARALYZE_HEAL
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ParalyzeHeal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "TOP-GENESUNG$", 14
- .2byte ITEM_FULL_RESTORE
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 255
- .4byte gItemDescription_FullRestore
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "TOP-TRANK$", 14
- .2byte ITEM_MAX_POTION
- .2byte 2500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 255
- .4byte gItemDescription_MaxPotion
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "HYPERTRANK$", 14
- .2byte ITEM_HYPER_POTION
- .2byte 1200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 200
- .4byte gItemDescription_HyperPotion
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "SUPERTRANK$", 14
- .2byte ITEM_SUPER_POTION
- .2byte 700 @ price
- .byte HOLD_EFFECT_NONE
- .byte 50
- .4byte gItemDescription_SuperPotion
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "HYPERHEILER$", 14
- .2byte ITEM_FULL_HEAL
- .2byte 600 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_FullHeal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "BELEBER$", 14
- .2byte ITEM_REVIVE
- .2byte 1500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Revive
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "TOP-BELEBER$", 14
- .2byte ITEM_MAX_REVIVE
- .2byte 4000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MaxRevive
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "TAFELWASSER$", 14
- .2byte ITEM_FRESH_WATER
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 50
- .4byte gItemDescription_FreshWater
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "SPRUDEL$", 14
- .2byte ITEM_SODA_POP
- .2byte 300 @ price
- .byte HOLD_EFFECT_NONE
- .byte 60
- .4byte gItemDescription_SodaPop
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "LIMONADE$", 14
- .2byte ITEM_LEMONADE
- .2byte 350 @ price
- .byte HOLD_EFFECT_NONE
- .byte 80
- .4byte gItemDescription_Lemonade
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "KUHMUH-MILCH$", 14
- .2byte ITEM_MOOMOO_MILK
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 100
- .4byte gItemDescription_MoomooMilk
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ENERGIESTAUB$", 14
- .2byte ITEM_ENERGY_POWDER
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EnergyPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "KRAFTWURZEL$", 14
- .2byte ITEM_ENERGY_ROOT
- .2byte 800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EnergyRoot
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "HEILPUDER$", 14
- .2byte ITEM_HEAL_POWDER
- .2byte 450 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HealPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "VITALKRAUT$", 14
- .2byte ITEM_REVIVAL_HERB
- .2byte 2800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RevivalHerb
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ÄTHER$", 14
- .2byte ITEM_ETHER
- .2byte 1200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 10
- .4byte gItemDescription_Ether
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "TOP-ÄTHER$", 14
- .2byte ITEM_MAX_ETHER
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 255
- .4byte gItemDescription_MaxEther
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "ELIXIER$", 14
- .2byte ITEM_ELIXIR
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 10
- .4byte gItemDescription_Elixir
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "TOP-ELIXIER$", 14
- .2byte ITEM_MAX_ELIXIR
- .2byte 4500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 255
- .4byte gItemDescription_MaxElixir
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "LAVAKEKS$", 14
- .2byte ITEM_LAVA_COOKIE
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_LavaCookie
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "BLAUE FLÖTE$", 14
- .2byte ITEM_BLUE_FLUTE
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlueFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "GELBE FLÖTE$", 14
- .2byte ITEM_YELLOW_FLUTE
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_YellowFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ROTE FLÖTE$", 14
- .2byte ITEM_RED_FLUTE
- .2byte 300 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RedFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "SCHW. FLÖTE$", 14
- .2byte ITEM_BLACK_FLUTE
- .2byte 400 @ price
- .byte HOLD_EFFECT_NONE
- .byte 50
- .4byte gItemDescription_BlackFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_BlackWhiteFlute
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WEISSE FLÖTE$", 14
- .2byte ITEM_WHITE_FLUTE
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 150
- .4byte gItemDescription_WhiteFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_BlackWhiteFlute
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BEERENSAFT$", 14
- .2byte ITEM_BERRY_JUICE
- .2byte 100 @ price
- .byte HOLD_EFFECT_RESTORE_HP
- .byte 20
- .4byte gItemDescription_BerryJuice
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ZAUBERASCHE$", 14
- .2byte ITEM_SACRED_ASH
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SacredAsh
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_SacredAsh
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KÜSTENSALZ$", 14
- .2byte ITEM_SHOAL_SALT
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ShoalSalt
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KÜSTENSCHALE$", 14
- .2byte ITEM_SHOAL_SHELL
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ShoalShell
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PURPURSTÜCK$", 14
- .2byte ITEM_RED_SHARD
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RedShard
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "INDIGOSTÜCK$", 14
- .2byte ITEM_BLUE_SHARD
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlueShard
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GELBSTÜCK$", 14
- .2byte ITEM_YELLOW_SHARD
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_YellowShard
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GRÜNSTÜCK$", 14
- .2byte ITEM_GREEN_SHARD
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GreenShard
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KP-PLUS$", 14
- .2byte ITEM_HP_UP
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HPUp
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PROTEIN$", 14
- .2byte ITEM_PROTEIN
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Protein
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "EISEN$", 14
- .2byte ITEM_IRON
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Iron
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "CARBON$", 14
- .2byte ITEM_CARBOS
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Carbos
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KALZIUM$", 14
- .2byte ITEM_CALCIUM
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Calcium
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SONDERBONBON$", 14
- .2byte ITEM_RARE_CANDY
- .2byte 4800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RareCandy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_RareCandy
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "AP-PLUS$", 14
- .2byte ITEM_PP_UP
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PPUp
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPUp
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ZINK$", 14
- .2byte ITEM_ZINC
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Zinc
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "AP-TOP$", 14
- .2byte ITEM_PP_MAX
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PPMax
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPUp
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MEGABLOCK$", 14
- .2byte ITEM_GUARD_SPEC
- .2byte 700 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GuardSpec
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "ANGRIFFPLUS$", 14
- .2byte ITEM_DIRE_HIT
- .2byte 650 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DireHit
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X-ANGRIFF$", 14
- .2byte ITEM_X_ATTACK
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XAttack
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X-ABWEHR$", 14
- .2byte ITEM_X_DEFEND
- .2byte 550 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XDefend
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X-TEMPO$", 14
- .2byte ITEM_X_SPEED
- .2byte 350 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XSpeed
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X-TREFFER$", 14
- .2byte ITEM_X_ACCURACY
- .2byte 950 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XAccuracy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X-SPEZIAL$", 14
- .2byte ITEM_X_SPECIAL
- .2byte 350 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XSpecial
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "POKéPUPPE$", 14
- .2byte ITEM_POKE_DOLL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PokeDoll
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_Escape
- .4byte 0
-
- .string "ENECO-RUTE$", 14
- .2byte ITEM_FLUFFY_TAIL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_FluffyTail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_Escape
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SUPERSCHUTZ$", 14
- .2byte ITEM_SUPER_REPEL
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 200
- .4byte gItemDescription_SuperRepel
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_Repel
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TOP-SCHUTZ$", 14
- .2byte ITEM_MAX_REPEL
- .2byte 700 @ price
- .byte HOLD_EFFECT_NONE
- .byte 250
- .4byte gItemDescription_MaxRepel
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_Repel
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "FLUCHTSEIL$", 14
- .2byte ITEM_ESCAPE_ROPE
- .2byte 550 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EscapeRope
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_EscapeRope
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SCHUTZ$", 14
- .2byte ITEM_REPEL
- .2byte 350 @ price
- .byte HOLD_EFFECT_NONE
- .byte 100
- .4byte gItemDescription_Repel
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_Repel
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SONNENSTEIN$", 14
- .2byte ITEM_SUN_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SunStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MONDSTEIN$", 14
- .2byte ITEM_MOON_STONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MoonStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "FEUERSTEIN$", 14
- .2byte ITEM_FIRE_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_FireStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DONNERSTEIN$", 14
- .2byte ITEM_THUNDER_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ThunderStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WASSERSTEIN$", 14
- .2byte ITEM_WATER_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WaterStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLATTSTEIN$", 14
- .2byte ITEM_LEAF_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_LeafStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MINIPILZ$", 14
- .2byte ITEM_TINY_MUSHROOM
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TinyMushroom
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RIESENPILZ$", 14
- .2byte ITEM_BIG_MUSHROOM
- .2byte 5000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BigMushroom
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PERLE$", 14
- .2byte ITEM_PEARL
- .2byte 1400 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Pearl
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RIESENPERLE$", 14
- .2byte ITEM_BIG_PEARL
- .2byte 7500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BigPearl
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "STERNENSTAUB$", 14
- .2byte ITEM_STARDUST
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Stardust
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "STERNENSTÜCK$", 14
- .2byte ITEM_STAR_PIECE
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_StarPiece
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "NUGGET$", 14
- .2byte ITEM_NUGGET
- .2byte 10000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Nugget
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HERZSCHUPPE$", 14
- .2byte ITEM_HEART_SCALE
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HeartScale
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ZIGZAGBRIEF$", 14
- .2byte ITEM_ORANGE_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_OrangeMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HAFENBRIEF$", 14
- .2byte ITEM_HARBOR_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HarborMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 1
-
- .string "GLITZERBRIEF$", 14
- .2byte ITEM_GLITTER_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GlitterMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 2
-
- .string "EILBRIEF$", 14
- .2byte ITEM_MECH_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MechMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 3
-
- .string "WALDBRIEF$", 14
- .2byte ITEM_WOOD_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WoodMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 4
-
- .string "WELLENBRIEF$", 14
- .2byte ITEM_WAVE_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WaveMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 5
-
- .string "PERLENBRIEF$", 14
- .2byte ITEM_BEAD_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BeadMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 6
-
- .string "DUNKELBRIEF$", 14
- .2byte ITEM_SHADOW_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ShadowMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 7
-
- .string "TROPENBRIEF$", 14
- .2byte ITEM_TROPIC_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TropicMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 8
-
- .string "TRAUMBRIEF$", 14
- .2byte ITEM_DREAM_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DreamMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 9
-
- .string "EDELBRIEF$", 14
- .2byte ITEM_FAB_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_FabMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 10
-
- .string "RETROBRIEF$", 14
- .2byte ITEM_RETRO_MAIL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RetroMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 11
-
- .string "AMRENABEERE$", 14
- .2byte ITEM_CHERI_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_PAR
- .byte 0
- .4byte gItemDescription_CheriBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "MARONBEERE$", 14
- .2byte ITEM_CHESTO_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_SLP
- .byte 0
- .4byte gItemDescription_ChestoBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "PIRSIFBEERE$", 14
- .2byte ITEM_PECHA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_PSN
- .byte 0
- .4byte gItemDescription_PechaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "FRAGIABEERE$", 14
- .2byte ITEM_RAWST_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_BRN
- .byte 0
- .4byte gItemDescription_RawstBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "WILBIRBEERE$", 14
- .2byte ITEM_ASPEAR_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_FRZ
- .byte 0
- .4byte gItemDescription_AspearBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "JONAGOBEERE$", 14
- .2byte ITEM_LEPPA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_RESTORE_PP
- .byte 10
- .4byte gItemDescription_LeppaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "SINELBEERE$", 14
- .2byte ITEM_ORAN_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_RESTORE_HP
- .byte 10
- .4byte gItemDescription_OranBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "PERSIMBEERE$", 14
- .2byte ITEM_PERSIM_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_CONFUSION
- .byte 0
- .4byte gItemDescription_PersimBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "PRUNUSBEERE$", 14
- .2byte ITEM_LUM_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_STATUS
- .byte 0
- .4byte gItemDescription_LumBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "TSITRUBEERE$", 14
- .2byte ITEM_SITRUS_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_RESTORE_HP
- .byte 30
- .4byte gItemDescription_SitrusBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "GIEFEBEERE$", 14
- .2byte ITEM_FIGY_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_SPICY
- .byte 8
- .4byte gItemDescription_FigyBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WIKIBEERE$", 14
- .2byte ITEM_WIKI_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_DRY
- .byte 8
- .4byte gItemDescription_WikiBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MAGOBEERE$", 14
- .2byte ITEM_MAGO_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_SWEET
- .byte 8
- .4byte gItemDescription_MagoBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GAUVEBEERE$", 14
- .2byte ITEM_AGUAV_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_BITTER
- .byte 8
- .4byte gItemDescription_AguavBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "YAPABEERE$", 14
- .2byte ITEM_IAPAPA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_SOUR
- .byte 8
- .4byte gItemDescription_IapapaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HIMMIHBEERE$", 14
- .2byte ITEM_RAZZ_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RazzBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MORBBEERE$", 14
- .2byte ITEM_BLUK_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlukBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "NANABBEERE$", 14
- .2byte ITEM_NANAB_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_NanabBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "NIRBEBEERE$", 14
- .2byte ITEM_WEPEAR_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WepearBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SANANABEERE$", 14
- .2byte ITEM_PINAP_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PinapBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GRANABEERE$", 14
- .2byte ITEM_POMEG_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PomegBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SETANGBEERE$", 14
- .2byte ITEM_KELPSY_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_KelpsyBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "QUALOTBEERE$", 14
- .2byte ITEM_QUALOT_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_QualotBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HONMELBEERE$", 14
- .2byte ITEM_HONDEW_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HondewBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LABRUSBEERE$", 14
- .2byte ITEM_GREPA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GrepaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TAMOTBEERE$", 14
- .2byte ITEM_TAMATO_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TamatoBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SAIMBEERE$", 14
- .2byte ITEM_CORNN_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_CornnBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MAGOSTBEERE$", 14
- .2byte ITEM_MAGOST_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MagostBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RABUTABEERE$", 14
- .2byte ITEM_RABUTA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RabutaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TRONZIBEERE$", 14
- .2byte ITEM_NOMEL_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_NomelBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KIWANBEERE$", 14
- .2byte ITEM_SPELON_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SpelonBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PALLMBEERE$", 14
- .2byte ITEM_PAMTRE_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PamtreBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WASMELBEERE$", 14
- .2byte ITEM_WATMEL_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WatmelBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DURINBEERE$", 14
- .2byte ITEM_DURIN_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DurinBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MYRTILBEERE$", 14
- .2byte ITEM_BELUE_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BelueBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LYDZIBEERE$", 14
- .2byte ITEM_LIECHI_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_ATTACK_UP
- .byte 4
- .4byte gItemDescription_LiechiBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LINGANBEERE$", 14
- .2byte ITEM_GANLON_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_DEFENSE_UP
- .byte 4
- .4byte gItemDescription_GanlonBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SALKABEERE$", 14
- .2byte ITEM_SALAC_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_SPEED_UP
- .byte 4
- .4byte gItemDescription_SalacBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TAHAYBEERE$", 14
- .2byte ITEM_PETAYA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_SP_ATTACK_UP
- .byte 4
- .4byte gItemDescription_PetayaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "APIKOBEERE$", 14
- .2byte ITEM_APICOT_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_SP_DEFENSE_UP
- .byte 4
- .4byte gItemDescription_ApicotBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LANSATBEERE$", 14
- .2byte ITEM_LANSAT_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CRITICAL_UP
- .byte 4
- .4byte gItemDescription_LansatBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KRAMBOBEERE$", 14
- .2byte ITEM_STARF_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_RANDOM_STAT_UP
- .byte 4
- .4byte gItemDescription_StarfBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ENIGMABEERE$", 14
- .2byte ITEM_ENIGMA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EnigmaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_EnigmaBerry
- .4byte 1
- .4byte ItemUseInBattle_EnigmaBerry
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLENDPUDER$", 14
- .2byte ITEM_BRIGHT_POWDER
- .2byte 10 @ price
- .byte HOLD_EFFECT_EVASION_UP
- .byte 10
- .4byte gItemDescription_BrightPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SCHLOHKRAUT$", 14
- .2byte ITEM_WHITE_HERB
- .2byte 100 @ price
- .byte HOLD_EFFECT_RESTORE_STATS
- .byte 0
- .4byte gItemDescription_WhiteHerb
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MACHOBAND$", 14
- .2byte ITEM_MACHO_BRACE
- .2byte 3000 @ price
- .byte HOLD_EFFECT_MACHO_BRACE
- .byte 0
- .4byte gItemDescription_MachoBrace
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "EP-TEILER$", 14
- .2byte ITEM_EXP_SHARE
- .2byte 3000 @ price
- .byte HOLD_EFFECT_EXP_SHARE
- .byte 0
- .4byte gItemDescription_ExpShare
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "FLINKKLAUE$", 14
- .2byte ITEM_QUICK_CLAW
- .2byte 100 @ price
- .byte HOLD_EFFECT_QUICK_CLAW
- .byte 20
- .4byte gItemDescription_QuickClaw
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SANFTGLOCKE$", 14
- .2byte ITEM_SOOTHE_BELL
- .2byte 100 @ price
- .byte HOLD_EFFECT_HAPPINESS_UP
- .byte 0
- .4byte gItemDescription_SootheBell
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MENTALKRAUT$", 14
- .2byte ITEM_MENTAL_HERB
- .2byte 100 @ price
- .byte HOLD_EFFECT_CURE_ATTRACT
- .byte 0
- .4byte gItemDescription_MentalHerb
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WAHLBAND$", 14
- .2byte ITEM_CHOICE_BAND
- .2byte 100 @ price
- .byte HOLD_EFFECT_CHOICE_BAND
- .byte 0
- .4byte gItemDescription_ChoiceBand
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KING-STEIN$", 14
- .2byte ITEM_KINGS_ROCK
- .2byte 100 @ price
- .byte HOLD_EFFECT_FLINCH
- .byte 10
- .4byte gItemDescription_KingsRock
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SILBERSTAUB$", 14
- .2byte ITEM_SILVER_POWDER
- .2byte 100 @ price
- .byte HOLD_EFFECT_BUG_POWER
- .byte 10
- .4byte gItemDescription_SilverPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MÜNZAMULETT$", 14
- .2byte ITEM_AMULET_COIN
- .2byte 100 @ price
- .byte HOLD_EFFECT_DOUBLE_PRIZE
- .byte 10
- .4byte gItemDescription_AmuletCoin
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SCHUTZBAND$", 14
- .2byte ITEM_CLEANSE_TAG
- .2byte 200 @ price
- .byte HOLD_EFFECT_REPEL
- .byte 0
- .4byte gItemDescription_CleanseTag
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SEELENTAU$", 14
- .2byte ITEM_SOUL_DEW
- .2byte 200 @ price
- .byte HOLD_EFFECT_SOUL_DEW
- .byte 0
- .4byte gItemDescription_SoulDew
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ABYSSZAHN$", 14
- .2byte ITEM_DEEP_SEA_TOOTH
- .2byte 200 @ price
- .byte HOLD_EFFECT_DEEP_SEA_TOOTH
- .byte 0
- .4byte gItemDescription_DeepSeaTooth
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ABYSSPLATTE$", 14
- .2byte ITEM_DEEP_SEA_SCALE
- .2byte 200 @ price
- .byte HOLD_EFFECT_DEEP_SEA_SCALE
- .byte 0
- .4byte gItemDescription_DeepSeaScale
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RAUCHBALL$", 14
- .2byte ITEM_SMOKE_BALL
- .2byte 200 @ price
- .byte HOLD_EFFECT_CAN_ALWAYS_RUN
- .byte 0
- .4byte gItemDescription_SmokeBall
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "EWIGSTEIN$", 14
- .2byte ITEM_EVERSTONE
- .2byte 200 @ price
- .byte HOLD_EFFECT_PREVENT_EVOLVE
- .byte 0
- .4byte gItemDescription_Everstone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "FOKUS-BAND$", 14
- .2byte ITEM_FOCUS_BAND
- .2byte 200 @ price
- .byte HOLD_EFFECT_FOCUS_BAND
- .byte 10
- .4byte gItemDescription_FocusBand
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GLÜCKS-EI$", 14
- .2byte ITEM_LUCKY_EGG
- .2byte 200 @ price
- .byte HOLD_EFFECT_LUCKY_EGG
- .byte 0
- .4byte gItemDescription_LuckyEgg
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SCOPE-LINSE$", 14
- .2byte ITEM_SCOPE_LENS
- .2byte 200 @ price
- .byte HOLD_EFFECT_SCOPE_LENS
- .byte 0
- .4byte gItemDescription_ScopeLens
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "METALLMANTEL$", 14
- .2byte ITEM_METAL_COAT
- .2byte 100 @ price
- .byte HOLD_EFFECT_STEEL_POWER
- .byte 10
- .4byte gItemDescription_MetalCoat
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ÜBERRESTE$", 14
- .2byte ITEM_LEFTOVERS
- .2byte 200 @ price
- .byte HOLD_EFFECT_LEFTOVERS
- .byte 10
- .4byte gItemDescription_Leftovers
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DRACHENHAUT$", 14
- .2byte ITEM_DRAGON_SCALE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_DRAGON_SCALE
- .byte 10
- .4byte gItemDescription_DragonScale
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KUGELBLITZ$", 14
- .2byte ITEM_LIGHT_BALL
- .2byte 100 @ price
- .byte HOLD_EFFECT_LIGHT_BALL
- .byte 0
- .4byte gItemDescription_LightBall
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PUDERSAND$", 14
- .2byte ITEM_SOFT_SAND
- .2byte 100 @ price
- .byte HOLD_EFFECT_GROUND_POWER
- .byte 10
- .4byte gItemDescription_SoftSand
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GRANITSTEIN$", 14
- .2byte ITEM_HARD_STONE
- .2byte 100 @ price
- .byte HOLD_EFFECT_ROCK_POWER
- .byte 10
- .4byte gItemDescription_HardStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WUNDERSAAT$", 14
- .2byte ITEM_MIRACLE_SEED
- .2byte 100 @ price
- .byte HOLD_EFFECT_GRASS_POWER
- .byte 10
- .4byte gItemDescription_MiracleSeed
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SCHATTENGLAS$", 14
- .2byte ITEM_BLACK_GLASSES
- .2byte 100 @ price
- .byte HOLD_EFFECT_DARK_POWER
- .byte 10
- .4byte gItemDescription_BlackGlasses
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SCHWARZGURT$", 14
- .2byte ITEM_BLACK_BELT
- .2byte 100 @ price
- .byte HOLD_EFFECT_FIGHTING_POWER
- .byte 10
- .4byte gItemDescription_BlackBelt
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MAGNET$", 14
- .2byte ITEM_MAGNET
- .2byte 100 @ price
- .byte HOLD_EFFECT_ELECTRIC_POWER
- .byte 10
- .4byte gItemDescription_Magnet
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ZAUBERWASSER$", 14
- .2byte ITEM_MYSTIC_WATER
- .2byte 100 @ price
- .byte HOLD_EFFECT_WATER_POWER
- .byte 10
- .4byte gItemDescription_MysticWater
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HACKATTACK$", 14
- .2byte ITEM_SHARP_BEAK
- .2byte 100 @ price
- .byte HOLD_EFFECT_FLYING_POWER
- .byte 10
- .4byte gItemDescription_SharpBeak
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GIFTSTICH$", 14
- .2byte ITEM_POISON_BARB
- .2byte 100 @ price
- .byte HOLD_EFFECT_POISON_POWER
- .byte 10
- .4byte gItemDescription_PoisonBarb
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "EWIGES EIS$", 14
- .2byte ITEM_NEVER_MELT_ICE
- .2byte 100 @ price
- .byte HOLD_EFFECT_ICE_POWER
- .byte 10
- .4byte gItemDescription_NeverMeltIce
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BANNSTICKER$", 14
- .2byte ITEM_SPELL_TAG
- .2byte 100 @ price
- .byte HOLD_EFFECT_GHOST_POWER
- .byte 10
- .4byte gItemDescription_SpellTag
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KRÜMMLÖFFEL$", 14
- .2byte ITEM_TWISTED_SPOON
- .2byte 100 @ price
- .byte HOLD_EFFECT_PSYCHIC_POWER
- .byte 10
- .4byte gItemDescription_TwistedSpoon
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HOLZKOHLE$", 14
- .2byte ITEM_CHARCOAL
- .2byte 9800 @ price
- .byte HOLD_EFFECT_FIRE_POWER
- .byte 10
- .4byte gItemDescription_Charcoal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DRACHENZAHN$", 14
- .2byte ITEM_DRAGON_FANG
- .2byte 100 @ price
- .byte HOLD_EFFECT_DRAGON_POWER
- .byte 10
- .4byte gItemDescription_DragonFang
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SEIDENSCHAL$", 14
- .2byte ITEM_SILK_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NORMAL_POWER
- .byte 10
- .4byte gItemDescription_SilkScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "UP-GRADE$", 14
- .2byte ITEM_UP_GRADE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_UP_GRADE
- .byte 0
- .4byte gItemDescription_UpGrade
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SEEGESANG$", 14
- .2byte ITEM_SHELL_BELL
- .2byte 200 @ price
- .byte HOLD_EFFECT_SHELL_BELL
- .byte 8
- .4byte gItemDescription_ShellBell
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SEERAUCH$", 14
- .2byte ITEM_SEA_INCENSE
- .2byte 9600 @ price
- .byte HOLD_EFFECT_WATER_POWER
- .byte 5
- .4byte gItemDescription_SeaIncense
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LAXRAUCH$", 14
- .2byte ITEM_LAX_INCENSE
- .2byte 9600 @ price
- .byte HOLD_EFFECT_EVASION_UP
- .byte 5
- .4byte gItemDescription_LaxIncense
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LUCKY PUNCH$", 14
- .2byte ITEM_LUCKY_PUNCH
- .2byte 10 @ price
- .byte HOLD_EFFECT_LUCKY_PUNCH
- .byte 0
- .4byte gItemDescription_LuckyPunch
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "METALLSTAUB$", 14
- .2byte ITEM_METAL_POWDER
- .2byte 10 @ price
- .byte HOLD_EFFECT_METAL_POWDER
- .byte 0
- .4byte gItemDescription_MetalPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KAMPFKNOCHEN$", 14
- .2byte ITEM_THICK_CLUB
- .2byte 500 @ price
- .byte HOLD_EFFECT_THICK_CLUB
- .byte 0
- .4byte gItemDescription_ThickClub
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LAUCHSTANGE$", 14
- .2byte ITEM_STICK
- .2byte 200 @ price
- .byte HOLD_EFFECT_STICK
- .byte 0
- .4byte gItemDescription_Stick
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ROTER SCHAL$", 14
- .2byte ITEM_RED_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RedScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLAUER SCHAL$", 14
- .2byte ITEM_BLUE_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlueScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ROSA SCHAL$", 14
- .2byte ITEM_PINK_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PinkScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GRÜNER SCHAL$", 14
- .2byte ITEM_GREEN_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GreenScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GELBER SCHAL$", 14
- .2byte ITEM_YELLOW_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_YellowScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "EILRAD$", 14
- .2byte ITEM_MACH_BIKE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MachBike
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Bike
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MÜNZKORB$", 14
- .2byte ITEM_COIN_CASE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_CoinCase
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CoinCase
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DETEKTOR$", 14
- .2byte ITEM_ITEMFINDER
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Itemfinder
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Itemfinder
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ANGEL$", 14
- .2byte ITEM_OLD_ROD
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_OldRod
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Rod
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PROFIANGEL$", 14
- .2byte ITEM_GOOD_ROD
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GoodRod
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Rod
- .4byte 0
- .4byte NULL
- .4byte 1
-
- .string "SUPERANGEL$", 14
- .2byte ITEM_SUPER_ROD
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SuperRod
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Rod
- .4byte 0
- .4byte NULL
- .4byte 2
-
- .string "BOOTSTICKET$", 14
- .2byte ITEM_SS_TICKET
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SSTicket
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WETTB.-KARTE$", 14
- .2byte ITEM_CONTEST_PASS
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ContestPass
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WAILMERKANNE$", 14
- .2byte ITEM_WAILMER_PAIL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WailmerPail
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_WailmerPail
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DEVON-WAREN$", 14
- .2byte ITEM_DEVON_GOODS
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DevonGoods
- .byte 2
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ASCHETASCHE$", 14
- .2byte ITEM_SOOT_SACK
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SootSack
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KELLERÖFFNER$", 14
- .2byte ITEM_BASEMENT_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BasementKey
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KUNSTRAD$", 14
- .2byte ITEM_ACRO_BIKE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_AcroBike
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Bike
- .4byte 0
- .4byte NULL
- .4byte 1
-
- .string "{POKEBLOCK}BOX$", 14
- .2byte ITEM_POKEBLOCK_CASE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PokeblockCase
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 3
- .4byte ItemUseOutOfBattle_PokeblockCase
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BRIEF$", 14
- .2byte ITEM_LETTER
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Letter
- .byte 2
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ÄON-TICKET$", 14
- .2byte ITEM_EON_TICKET
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EonTicket
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 1
-
- .string "ROTE KUGEL$", 14
- .2byte ITEM_RED_ORB
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RedOrb
- .byte 2
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLAUE KUGEL$", 14
- .2byte ITEM_BLUE_ORB
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlueOrb
- .byte 2
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SCANNER$", 14
- .2byte ITEM_SCANNER
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Scanner
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WÜSTENGLAS$", 14
- .2byte ITEM_GO_GOGGLES
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GoGoggles
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "METEORIT$", 14
- .2byte ITEM_METEORITE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Meteorite
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "K1-SCHLÜSSEL$", 14
- .2byte ITEM_ROOM_1_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Room1Key
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "K2-SCHLÜSSEL$", 14
- .2byte ITEM_ROOM_2_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Room2Key
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "K4-SCHLÜSSEL$", 14
- .2byte ITEM_ROOM_4_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Room4Key
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "K6-SCHLÜSSEL$", 14
- .2byte ITEM_ROOM_6_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Room6Key
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "L.-SCHLÜSSEL$", 14
- .2byte ITEM_STORAGE_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_StorageKey
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WURZELFOSSIL$", 14
- .2byte ITEM_ROOT_FOSSIL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RootFossil
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KLAUENFOSSIL$", 14
- .2byte ITEM_CLAW_FOSSIL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ClawFossil
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DEVON-SCOPE$", 14
- .2byte ITEM_DEVON_SCOPE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DevonScope
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM01$", 14
- .2byte ITEM_TM01
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM01
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM02$", 14
- .2byte ITEM_TM02
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM02
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM03$", 14
- .2byte ITEM_TM03
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM03
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM04$", 14
- .2byte ITEM_TM04
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM04
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM05$", 14
- .2byte ITEM_TM05
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM05
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM06$", 14
- .2byte ITEM_TM06
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM06
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM07$", 14
- .2byte ITEM_TM07
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM07
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM08$", 14
- .2byte ITEM_TM08
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM08
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM09$", 14
- .2byte ITEM_TM09
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM09
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM10$", 14
- .2byte ITEM_TM10
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM10
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM11$", 14
- .2byte ITEM_TM11
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM11
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM12$", 14
- .2byte ITEM_TM12
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM12
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM13$", 14
- .2byte ITEM_TM13
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM13
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM14$", 14
- .2byte ITEM_TM14
- .2byte 5500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM14
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM15$", 14
- .2byte ITEM_TM15
- .2byte 7500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM15
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM16$", 14
- .2byte ITEM_TM16
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM16
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM17$", 14
- .2byte ITEM_TM17
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM17
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM18$", 14
- .2byte ITEM_TM18
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM18
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM19$", 14
- .2byte ITEM_TM19
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM19
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM20$", 14
- .2byte ITEM_TM20
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM20
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM21$", 14
- .2byte ITEM_TM21
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM21
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM22$", 14
- .2byte ITEM_TM22
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM22
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM23$", 14
- .2byte ITEM_TM23
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM23
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM24$", 14
- .2byte ITEM_TM24
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM24
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM25$", 14
- .2byte ITEM_TM25
- .2byte 5500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM25
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM26$", 14
- .2byte ITEM_TM26
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM26
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM27$", 14
- .2byte ITEM_TM27
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM27
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM28$", 14
- .2byte ITEM_TM28
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM28
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM29$", 14
- .2byte ITEM_TM29
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM29
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM30$", 14
- .2byte ITEM_TM30
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM30
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM31$", 14
- .2byte ITEM_TM31
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM31
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM32$", 14
- .2byte ITEM_TM32
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM32
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM33$", 14
- .2byte ITEM_TM33
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM33
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM34$", 14
- .2byte ITEM_TM34
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM34
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM35$", 14
- .2byte ITEM_TM35
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM35
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM36$", 14
- .2byte ITEM_TM36
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM36
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM37$", 14
- .2byte ITEM_TM37
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM37
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM38$", 14
- .2byte ITEM_TM38
- .2byte 5500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM38
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM39$", 14
- .2byte ITEM_TM39
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM39
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM40$", 14
- .2byte ITEM_TM40
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM40
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM41$", 14
- .2byte ITEM_TM41
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM41
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM42$", 14
- .2byte ITEM_TM42
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM42
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM43$", 14
- .2byte ITEM_TM43
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM43
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM44$", 14
- .2byte ITEM_TM44
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM44
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM45$", 14
- .2byte ITEM_TM45
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM45
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM46$", 14
- .2byte ITEM_TM46
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM46
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM47$", 14
- .2byte ITEM_TM47
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM47
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM48$", 14
- .2byte ITEM_TM48
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM48
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM49$", 14
- .2byte ITEM_TM49
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM49
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM50$", 14
- .2byte ITEM_TM50
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM50
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "VM01$", 14
- .2byte ITEM_HM01
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM01
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "VM02$", 14
- .2byte ITEM_HM02
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM02
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "VM03$", 14
- .2byte ITEM_HM03
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM03
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "VM04$", 14
- .2byte ITEM_HM04
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM04
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "VM05$", 14
- .2byte ITEM_HM05
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM05
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "VM06$", 14
- .2byte ITEM_HM06
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM06
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "VM07$", 14
- .2byte ITEM_HM07
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM07
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "VM08$", 14
- .2byte ITEM_HM08
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM08
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
diff --git a/data-de/menu_cursor.s b/data-de/menu_cursor.s
index d511436c7..5f5fcd2d7 100644
--- a/data-de/menu_cursor.s
+++ b/data-de/menu_cursor.s
@@ -382,4 +382,6 @@ gUnknown_0842F788:: @ 842F788
.align 2
gUnknown_0842F790:: @ 842F790
.4byte 0xFFFF0000, 70
+
+gUnknown_0842F798:: @ 842F798
.4byte 0xFFFF0000, 134
diff --git a/data-de/region_map_locations.inc b/data-de/region_map_locations.inc
deleted file mode 100644
index 1f4863206..000000000
--- a/data-de/region_map_locations.inc
+++ /dev/null
@@ -1,327 +0,0 @@
-gMapName_LittlerootTown: @ 83E6FF4
- .string "WURZELHEIM$"
-
-gMapName_OldaleTown: @ 83E7006
- .string "ROSALTSTADT$"
-
-gMapName_DewfordTown: @ 83E7014
- .string "FAUSTAUHAVEN$"
-
-gMapName_LavaridgeTown: @ 83E7023
- .string "BAD LAVASTADT$"
-
-gMapName_FallarborTown: @ 83E7034
- .string "LAUBWECHSEL{NAME_END}FELD$"
-
-gMapName_VerdanturfTown: @ 83E7045
- .string "WIESENFLUR$"
-
-gMapName_PacifidlogTown: @ 83E7057
- .string "FLOSSBRUNN$"
-
-gMapName_PetalburgCity: @ 83E7069
- .string "BLÜTENBURG{NAME_END} CITY$"
-
-gMapName_SlateportCity: @ 83E707A
- .string "GRAPHITPORT{NAME_END} CITY$"
-
-gMapName_MauvilleCity: @ 83E708B
- .string "MALVENFROH{NAME_END} CITY$"
-
-gMapName_RustboroCity: @ 83E709B
- .string "METAROST{NAME_END} CITY$"
-
-gMapName_FortreeCity: @ 83E70AB
- .string "BAUMHAUSEN{NAME_END} CITY$"
-
-gMapName_LilycoveCity: @ 83E70BA
- .string "SEEGRASULB{NAME_END} CITY$"
-
-gMapName_MossdeepCity: @ 83E70CA
- .string "MOOSBACH{NAME_END} CITY$"
-
-gMapName_SootopolisCity: @ 83E70DA
- .string "XENEROVILLE$"
-
-gMapName_EverGrandeCity: @ 83E70EC
- .string "PRACHTPOLIS{NAME_END} CITY$"
-
-gMapName_Route101: @ 83E70FF
- .string "ROUTE 101$"
-
-gMapName_Route102: @ 83E7109
- .string "ROUTE 102$"
-
-gMapName_Route103: @ 83E7113
- .string "ROUTE 103$"
-
-gMapName_Route104: @ 83E711D
- .string "ROUTE 104$"
-
-gMapName_Route105: @ 83E7127
- .string "ROUTE 105$"
-
-gMapName_Route106: @ 83E7131
- .string "ROUTE 106$"
-
-gMapName_Route107: @ 83E713B
- .string "ROUTE 107$"
-
-gMapName_Route108: @ 83E7145
- .string "ROUTE 108$"
-
-gMapName_Route109: @ 83E714F
- .string "ROUTE 109$"
-
-gMapName_Route110: @ 83E7159
- .string "ROUTE 110$"
-
-gMapName_Route111: @ 83E7163
- .string "ROUTE 111$"
-
-gMapName_Route112: @ 83E716D
- .string "ROUTE 112$"
-
-gMapName_Route113: @ 83E7177
- .string "ROUTE 113$"
-
-gMapName_Route114: @ 83E7181
- .string "ROUTE 114$"
-
-gMapName_Route115: @ 83E718B
- .string "ROUTE 115$"
-
-gMapName_Route116: @ 83E7195
- .string "ROUTE 116$"
-
-gMapName_Route117: @ 83E719F
- .string "ROUTE 117$"
-
-gMapName_Route118: @ 83E71A9
- .string "ROUTE 118$"
-
-gMapName_Route119: @ 83E71B3
- .string "ROUTE 119$"
-
-gMapName_Route120: @ 83E71BD
- .string "ROUTE 120$"
-
-gMapName_Route121: @ 83E71C7
- .string "ROUTE 121$"
-
-gMapName_Route122: @ 83E71D1
- .string "ROUTE 122$"
-
-gMapName_Route123: @ 83E71DB
- .string "ROUTE 123$"
-
-gMapName_Route124: @ 83E71E5
- .string "ROUTE 124$"
-
-gMapName_Route125: @ 83E71EF
- .string "ROUTE 125$"
-
-gMapName_Route126: @ 83E71F9
- .string "ROUTE 126$"
-
-gMapName_Route127: @ 83E7203
- .string "ROUTE 127$"
-
-gMapName_Route128: @ 83E720D
- .string "ROUTE 128$"
-
-gMapName_Route129: @ 83E7217
- .string "ROUTE 129$"
-
-gMapName_Route130: @ 83E7221
- .string "ROUTE 130$"
-
-gMapName_Route131: @ 83E722B
- .string "ROUTE 131$"
-
-gMapName_Route132: @ 83E7235
- .string "ROUTE 132$"
-
-gMapName_Route133: @ 83E723F
- .string "ROUTE 133$"
-
-gMapName_Route134: @ 83E7249
- .string "ROUTE 134$"
-
-gMapName_Underwater: @ 83E7253
- .string "UNTERWASSER$"
-
-gMapName_GraniteCave: @ 83E725E
- .string "GRANITHÖHLE$"
-
-gMapName_MtChimney: @ 83E726B
- .string "SCHLOTBERG$"
-
-gMapName_SafariZone: @ 83E7277
- .string "SAFARI-ZONE$"
-
-gMapName_BattleTower: @ 83E7283
- .string "DUELLTURM$"
-
-gMapName_PetalburgWoods: @ 83E7290
- .string "BLÜTENBURGWALD$"
-
-gMapName_RusturfTunnel: @ 83E72A0
- .string "METAFLURTUNNEL$"
-
-gMapName_AbandonedShip: @ 83E72AF
- .string "SCHIFFSWRACK$"
-
-gMapName_NewMauville: @ 83E72BE
- .string "NEU MALVENFROH$"
-
-gMapName_MeteorFalls: @ 83E72CB
- .string "METEORFÄLLE$"
-
-gMapName_MtPyre: @ 83E72D8
- .string "PYROBERG$"
-
-gMapName_EvilTeamHideout: @ 83E72E1
- .string "{EVIL_TEAM}s VERSTECK$"
-
-gMapName_ShoalCave: @ 83E72EC
- .string "KÜSTENHÖHLE$"
-
-gMapName_SeafloorCavern: @ 83E72F7
- .string "TIEFSEEHÖHLE$"
-
-gMapName_VictoryRoad: @ 83E7307
- .string "SIEGESSTRASSE$"
-
-gMapName_MirageIsland: @ 83E7314
- .string "WUNDEREILAND$"
-
-gMapName_CaveOfOrigin: @ 83E7322
- .string "URZEITHÖHLE$"
-
-gMapName_SouthernIsland: @ 83E7331
- .string "INSEL IM SÜDEN$"
-
-gMapName_FieryPath: @ 83E7341
- .string "FEURIGER PFAD$"
-
-gMapName_JaggedPass: @ 83E734C
- .string "STEILPASS$"
-
-gMapName_SealedChamber: @ 83E7358
- .string "SIEGELKAMMER$"
-
-gMapName_ScorchedSlab: @ 83E7367
- .string "SONNENGROTTE$"
-
-gMapName_IslandCave: @ 83E7375
- .string "INSELHÖHLE$"
-
-gMapName_DesertRuins: @ 83E7381
- .string "WÜSTENRUINE$"
-
-gMapName_AncientTomb: @ 83E738E
- .string "GRABMAL$"
-
-gMapName_InsideOfTruck: @ 83E739B
- .string "IM MÖBELWAGEN$"
-
-gMapName_SkyPillar: @ 83E73AB
- .string "HIMMELTURM$"
-
-gMapName_SecretBase: @ 83E73B6
- .string "GEHEIMBASIS$"
-
-gMapName_None: @ 83E73C2
- .string "$"
-
- .align 2
-gRegionMapLocations:: @ 83E73C4
- region_map_location 4, 11, 1, 1, LittlerootTown
- region_map_location 4, 9, 1, 1, OldaleTown
- region_map_location 2, 14, 1, 1, DewfordTown
- region_map_location 5, 3, 1, 1, LavaridgeTown
- region_map_location 3, 0, 1, 1, FallarborTown
- region_map_location 4, 6, 1, 1, VerdanturfTown
- region_map_location 17, 10, 1, 1, PacifidlogTown
- region_map_location 1, 9, 1, 1, PetalburgCity
- region_map_location 8, 10, 1, 2, SlateportCity
- region_map_location 8, 6, 2, 1, MauvilleCity
- region_map_location 0, 5, 1, 2, RustboroCity
- region_map_location 12, 0, 1, 1, FortreeCity
- region_map_location 18, 3, 2, 1, LilycoveCity
- region_map_location 24, 5, 2, 1, MossdeepCity
- region_map_location 21, 7, 1, 1, SootopolisCity
- region_map_location 27, 8, 1, 2, EverGrandeCity
- region_map_location 4, 10, 1, 1, Route101
- region_map_location 2, 9, 2, 1, Route102
- region_map_location 4, 8, 4, 1, Route103
- region_map_location 0, 7, 1, 3, Route104
- region_map_location 0, 10, 1, 3, Route105
- region_map_location 0, 13, 2, 1, Route106
- region_map_location 3, 14, 3, 1, Route107
- region_map_location 6, 14, 2, 1, Route108
- region_map_location 8, 12, 1, 3, Route109
- region_map_location 8, 7, 1, 3, Route110
- region_map_location 8, 0, 1, 6, Route111
- region_map_location 6, 3, 2, 1, Route112
- region_map_location 4, 0, 4, 1, Route113
- region_map_location 1, 0, 2, 3, Route114
- region_map_location 0, 2, 1, 3, Route115
- region_map_location 1, 5, 4, 1, Route116
- region_map_location 5, 6, 3, 1, Route117
- region_map_location 10, 6, 2, 1, Route118
- region_map_location 11, 0, 1, 6, Route119
- region_map_location 13, 0, 1, 4, Route120
- region_map_location 14, 3, 4, 1, Route121
- region_map_location 16, 4, 1, 2, Route122
- region_map_location 12, 6, 5, 1, Route123
- region_map_location 20, 3, 4, 3, Route124
- region_map_location 24, 3, 2, 2, Route125
- region_map_location 20, 6, 3, 3, Route126
- region_map_location 23, 6, 3, 3, Route127
- region_map_location 23, 9, 4, 1, Route128
- region_map_location 24, 10, 2, 1, Route129
- region_map_location 21, 10, 3, 1, Route130
- region_map_location 18, 10, 3, 1, Route131
- region_map_location 15, 10, 2, 1, Route132
- region_map_location 12, 10, 3, 1, Route133
- region_map_location 9, 10, 3, 1, Route134
- region_map_location 20, 3, 4, 3, Underwater
- region_map_location 20, 6, 3, 3, Underwater
- region_map_location 23, 6, 3, 3, Underwater
- region_map_location 23, 9, 4, 1, Underwater
- region_map_location 21, 7, 1, 1, Underwater
- region_map_location 1, 13, 1, 1, GraniteCave
- region_map_location 6, 2, 1, 1, MtChimney
- region_map_location 16, 2, 1, 1, SafariZone
- region_map_location 22, 12, 1, 1, BattleTower
- region_map_location 0, 8, 1, 1, PetalburgWoods
- region_map_location 2, 5, 1, 1, RusturfTunnel
- region_map_location 6, 14, 1, 1, AbandonedShip
- region_map_location 8, 7, 1, 1, NewMauville
- region_map_location 0, 3, 1, 1, MeteorFalls
- region_map_location 1, 2, 1, 1, MeteorFalls
- region_map_location 16, 4, 1, 1, MtPyre
- region_map_location 19, 3, 1, 1, EvilTeamHideout
- region_map_location 24, 4, 1, 1, ShoalCave
- region_map_location 24, 9, 1, 1, SeafloorCavern
- region_map_location 24, 9, 1, 1, Underwater
- region_map_location 27, 9, 1, 1, VictoryRoad
- region_map_location 17, 10, 1, 1, MirageIsland
- region_map_location 21, 7, 1, 1, CaveOfOrigin
- region_map_location 12, 14, 1, 1, SouthernIsland
- region_map_location 6, 3, 1, 1, FieryPath
- region_map_location 7, 3, 1, 1, FieryPath
- region_map_location 6, 3, 1, 1, JaggedPass
- region_map_location 7, 2, 1, 1, JaggedPass
- region_map_location 11, 10, 1, 1, SealedChamber
- region_map_location 11, 10, 1, 1, Underwater
- region_map_location 13, 0, 1, 1, ScorchedSlab
- region_map_location 0, 10, 1, 1, IslandCave
- region_map_location 8, 3, 1, 1, DesertRuins
- region_map_location 13, 2, 1, 1, AncientTomb
- region_map_location 0, 0, 1, 1, InsideOfTruck
- region_map_location 19, 10, 1, 1, SkyPillar
- region_map_location 0, 0, 1, 1, SecretBase
- region_map_location 0, 0, 1, 1, None
diff --git a/data-de/text/credits.inc b/data-de/text/credits.inc
index 1d2d63161..3b6119866 100644
--- a/data-de/text/credits.inc
+++ b/data-de/text/credits.inc
@@ -634,7 +634,11 @@ CreditsEBU::
credits_entry 0, Text_EBU
CreditsVersion::
+ .ifdef SAPPHIRE
+ credits_entry 0, Text_Version_Sapphire
+ .else
credits_entry 0, Text_Version_Ruby
+ .endif
CreditsNOEProductTesting::
credits_entry 0, Category_NOEProductTesting
diff --git a/data-de/text/item_descriptions.inc b/data-de/text/item_descriptions.inc
deleted file mode 100644
index cde8cfdc8..000000000
--- a/data-de/text/item_descriptions.inc
+++ /dev/null
@@ -1,1393 +0,0 @@
-gItemDescription_MasterBall: @ 83C2028
- .string "Der beste BALL.\n"
- .string "Fängt das POKéMON\n"
- .string "garantiert.$"
-
-gItemDescription_UltraBall: @ 83C205B
- .string "BALL mit hoher Er-\n"
- .string "folgsquote. Besser\n"
- .string "als ein SUPERBALL.$"
-
-gItemDescription_GreatBall: @ 83C2095
- .string "BALL mit guter Er-\n"
- .string "folgsquote. Besser\n"
- .string "als ein POKéBALL.$"
-
-gItemDescription_PokeBall: @ 83C20CC
- .string "Damit fängst\n"
- .string "du wilde\n"
- .string "POKéMON.$"
-
-gItemDescription_SafariBall: @ 83C20F3
- .string "Ein BALL, der nur\n"
- .string "in der SAFARI-ZONE\n"
- .string "eingesetzt wird.$"
-
-gItemDescription_NetBall: @ 83C2128
- .string "BALL fängt POKéMON\n"
- .string "des Typs WASSER\n"
- .string "und KÄFER besser.$"
-
-gItemDescription_DiveBall: @ 83C215F
- .string "BALL fängt besser\n"
- .string "POKéMON auf\n"
- .string "dem Meeresgrund.$"
-
-gItemDescription_NestBall: @ 83C2197
- .string "BALL mit höherer\n"
- .string "Erfolgsquote bei\n"
- .string "schwachen POKéMON.$"
-
-gItemDescription_RepeatBall: @ 83C21C3
- .string "BALL fängt besser\n"
- .string "bereits gefangene\n"
- .string "POKéMON.$"
-
-gItemDescription_TimerBall: @ 83C21F6
- .string "BALL wird effekti-\n"
- .string "ver, je länger der\n"
- .string "Kampf dauert.$"
-
-gItemDescription_LuxuryBall: @ 83C2228
- .string "Behaglicher BALL,\n"
- .string "der POKéMON\n"
- .string "freundlicher macht.$"
-
-gItemDescription_PremierBall: @ 83C2256
- .string "Seltener BALL, als\n"
- .string "Reminiszenz an ir-\n"
- .string "gendein Ereignis.$"
-
-gItemDescription_Potion: @ 83C2287
- .string "Füllt die KP eines\n"
- .string "POKéMON um\n"
- .string "20 Punkte auf.$"
-
-gItemDescription_Antidote: @ 83C22B2
- .string "Heilt Vergiftungen\n"
- .string "bei POKéMON.$"
-
-gItemDescription_BurnHeal: @ 83C22CC
- .string "Heilt Verbrennun-\n"
- .string "gen bei POKéMON.$"
-
-gItemDescription_IceHeal: @ 83C22E5
- .string "Taut POKéMON\n"
- .string "wieder auf.$"
-
-gItemDescription_Awakening: @ 83C2300
- .string "Weckt schlafendes\n"
- .string "POKéMON auf.$"
-
-gItemDescription_ParalyzeHeal: @ 83C231C
- .string "Heilt Paralyse\n"
- .string "eines POKéMON.$"
-
-gItemDescription_FullRestore: @ 83C2337
- .string "Stellt KP und\n"
- .string "Status eines\n"
- .string "POKéMON wieder her.$"
-
-gItemDescription_MaxPotion: @ 83C2366
- .string "Füllt die KP\n"
- .string "vollständig auf.$"
-
-gItemDescription_HyperPotion: @ 83C238A
- .string "Füllt die KP eines\n"
- .string "POKéMON um\n"
- .string "200 Punkte auf.$"
-
-gItemDescription_SuperPotion: @ 83C23B6
- .string "Füllt die KP eines\n"
- .string "POKéMON um\n"
- .string "50 Punkte auf.$"
-
-gItemDescription_FullHeal: @ 83C23E1
- .string "Beseitigt alle\n"
- .string "Statusprobleme\n"
- .string "eines POKéMON.$"
-
-gItemDescription_Revive: @ 83C240F
- .string "Belebt POKéMON\n"
- .string "und füllt die KP zur\n"
- .string "Hälfte wieder auf.$"
-
-gItemDescription_MaxRevive: @ 83C243B
- .string "Belebt POKéMON\n"
- .string "und füllt KP voll-\n"
- .string "ständig wieder auf.$"
-
-gItemDescription_FreshWater: @ 83C2466
- .string "Ein stilles Wasser,\n"
- .string "das die KP um 50\n"
- .string "Punkte auffüllt.$"
-
-gItemDescription_SodaPop: @ 83C2495
- .string "Ein Mineralwasser,\n"
- .string "das die KP um 60\n"
- .string "Punkte auffüllt.$"
-
-gItemDescription_Lemonade: @ 83C24C7
- .string "Ein süßes Getränk,\n"
- .string "das die KP um 80\n"
- .string "Punkte auffüllt.$"
-
-gItemDescription_MoomooMilk: @ 83C24F9
- .string "Vitaminreiche Milch,\n"
- .string "die die KP um 100\n"
- .string "Punkte auffüllt.$"
-
-gItemDescription_EnergyPowder: @ 83C252B
- .string "Ein bitteres Pulver,\n"
- .string "das die KP um\n"
- .string "50 Punkte auffüllt.$"
-
-gItemDescription_EnergyRoot: @ 83C255A
- .string "Eine bittere Wurzel,\n"
- .string "die die KP um 200\n"
- .string "Punkte auffüllt.$"
-
-gItemDescription_HealPowder: @ 83C2588
- .string "Ein bitteres Pulver,\n"
- .string "das alle Statuspro-\n"
- .string "bleme heilt.$"
-
-gItemDescription_RevivalHerb: @ 83C25B8
- .string "Ein bitteres Kraut,\n"
- .string "das besiegte\n"
- .string "POKéMON belebt.$"
-
-gItemDescription_Ether: @ 83C25EB
- .string "Füllt AP einer aus-\n"
- .string "gewählten Attacke\n"
- .string "um 10 Punkte auf.$"
-
-gItemDescription_MaxEther: @ 83C2615
- .string "Füllt AP einer aus-\n"
- .string "gewählten Attacke\n"
- .string "vollständig auf.$"
-
-gItemDescription_Elixir: @ 83C263F
- .string "Füllt alle AP\n"
- .string "um 10 Punkte auf.$"
-
-gItemDescription_MaxElixir: @ 83C2663
- .string "Füllt alle AP eines\n"
- .string "POKéMON voll-\n"
- .string "ständig auf.$"
-
-gItemDescription_LavaCookie: @ 83C268F
- .string "Eine regionale Spe-\n"
- .string "zialität. Heilt alle\n"
- .string "Statusprobleme.$"
-
-gItemDescription_BlueFlute: @ 83C26C1
- .string "Eine gläserne Flöte,\n"
- .string "die schlafende\n"
- .string "POKéMON aufweckt.$"
-
-gItemDescription_YellowFlute: @ 83C26EE
- .string "Eine gläserne Flöte,\n"
- .string "die verwirrte\n"
- .string "POKéMON heilt.$"
-
-gItemDescription_RedFlute: @ 83C2721
- .string "Eine gläserne Flöte,\n"
- .string "die POKéMON von\n"
- .string "Anziehung heilt.$"
-
-gItemDescription_BlackFlute: @ 83C2755
- .string "Eine gläserne Flöte,\n"
- .string "die wilde\n"
- .string "POKéMON abhält.$"
-
-gItemDescription_WhiteFlute: @ 83C2781
- .string "Eine gläserne Flöte,\n"
- .string "die wilde\n"
- .string "POKéMON anzieht.$"
-
-gItemDescription_BerryJuice: @ 83C27A8
- .string "Reiner Fruchtsaft,\n"
- .string "der die KP um\n"
- .string "20 Punkte auffüllt.$"
-
-gItemDescription_SacredAsh: @ 83C27D9
- .string "Belebt und\n"
- .string "erfrischt alle\n"
- .string "besiegten POKéMON.$"
-
-gItemDescription_ShoalSalt: @ 83C2809
- .string "Salz, das sich tief\n"
- .string "in der KÜSTEN- \n"
- .string "HÖHLE befand.$"
-
-gItemDescription_ShoalShell: @ 83C2838
- .string "Muschelschale, die\n"
- .string "sich in der KÜSTEN- \n"
- .string "HÖHLE befand.$"
-
-gItemDescription_RedShard: @ 83C2865
- .string "Scherbe eines\n"
- .string "antiken Relikts\n"
- .string "von geringem Wert.$"
-
-gItemDescription_BlueShard: @ 83C2898
- .string "Scherbe eines\n"
- .string "antiken Relikts\n"
- .string "von geringem Wert.$"
-
-gItemDescription_YellowShard: @ 83C28CB
- .string "Scherbe eines\n"
- .string "antiken Relikts\n"
- .string "von geringem Wert.$"
-
-gItemDescription_GreenShard: @ 83C28FE
- .string "Scherbe eines\n"
- .string "antiken Relikts\n"
- .string "von geringem Wert.$"
-
-gItemDescription_HPUp: @ 83C2931
- .string "Hebt die KP\n"
- .string "eines POKéMON.$"
-
-gItemDescription_Protein: @ 83C294F
- .string "Hebt den\n"
- .string "ANGR.-Wert\n"
- .string "eines POKéMON.$"
-
-gItemDescription_Iron: @ 83C2976
- .string "Hebt den\n"
- .string "VERT.-Wert\n"
- .string "eines POKéMON.$"
-
-gItemDescription_Carbos: @ 83C299E
- .string "Hebt den\n"
- .string "INIT.-Wert\n"
- .string "eines POKéMON.$"
-
-gItemDescription_Calcium: @ 83C29C4
- .string "Hebt den\n"
- .string "SP. ANGR.-Wert\n"
- .string "eines POKéMON.$"
-
-gItemDescription_RareCandy: @ 83C29EC
- .string "Hebt den Level\n"
- .string "eines POKéMON\n"
- .string "um eins an.$"
-
-gItemDescription_PPUp: @ 83C2A12
- .string "Hebt die maximale\n"
- .string "Anzahl der AP\n"
- .string "einer Attacke.$"
-
-gItemDescription_Zinc: @ 83C2A3C
- .string "Hebt den\n"
- .string "SP. VERT.-Wert\n"
- .string "eines POKéMON.$"
-
-gItemDescription_PPMax: @ 83C2A64
- .string "Maximiert die\n"
- .string "Anzahl der AP\n"
- .string "einer Attacke.$"
-
-gItemDescription_GuardSpec: @ 83C2A93
- .string "Statusänderung\n"
- .string "wird für einen\n"
- .string "Kampf verhindert.$"
-
-gItemDescription_DireHit: @ 83C2AC0
- .string "Hebt die\n"
- .string "Volltrefferquote\n"
- .string "für einen Kampf.$"
-
-gItemDescription_XAttack: @ 83C2AF1
- .string "Hebt den\n"
- .string "ANGR.-Wert\n"
- .string "für einen Kampf.$"
-
-gItemDescription_XDefend: @ 83C2B1B
- .string "Hebt den\n"
- .string "VERT.-Wert\n"
- .string "für einen Kampf.$"
-
-gItemDescription_XSpeed: @ 83C2B46
- .string "Hebt den\n"
- .string "INIT.-Wert\n"
- .string "für einen Kampf.$"
-
-gItemDescription_XAccuracy: @ 83C2B6F
- .string "Hebt die\n"
- .string "GENAUIGKEIT\n"
- .string "für einen Kampf.$"
-
-gItemDescription_XSpecial: @ 83C2BA2
- .string "Hebt den\n"
- .string "SP. ANGR.-Wert\n"
- .string "für einen Kampf.$"
-
-gItemDescription_PokeDoll: @ 83C2BCD
- .string "Ermöglicht Flucht\n"
- .string "im Kampf gegen\n"
- .string "wilde POKéMON.$"
-
-gItemDescription_FluffyTail: @ 83C2BFE
- .string "Entfliehe damit\n"
- .string "jedem Kampf mit ei-\n"
- .string "nem wilden POKéMON.$"
-
-gItemDescription_SuperRepel: @ 83C2C2F
- .string "Hält 200 Schritte\n"
- .string "lang schwache,\n"
- .string "wilde POKéMON ab.$"
-
-gItemDescription_MaxRepel: @ 83C2C57
- .string "Hält 250 Schritte\n"
- .string "lang schwache,\n"
- .string "wilde POKéMON ab.$"
-
-gItemDescription_EscapeRope: @ 83C2C7F
- .string "Ermöglicht die\n"
- .string "Flucht aus Höhlen\n"
- .string "oder Ähnlichem.$"
-
-gItemDescription_Repel: @ 83C2CB1
- .string "Hält 100 Schritte\n"
- .string "lang schwache,\n"
- .string "wilde POKéMON ab.$"
-
-gItemDescription_SunStone: @ 83C2CD9
- .string "Löst bei bestimm-\n"
- .string "ten POKéMON die\n"
- .string "Entwicklung aus.$"
-
-gItemDescription_MoonStone: @ 83C2D02
- .string "Löst bei bestimm-\n"
- .string "ten POKéMON die\n"
- .string "Entwicklung aus.$"
-
-gItemDescription_FireStone: @ 83C2D2B
- .string "Löst bei bestimm-\n"
- .string "ten POKéMON die\n"
- .string "Entwicklung aus.$"
-
-gItemDescription_ThunderStone: @ 83C2D54
- .string "Löst bei bestimm-\n"
- .string "ten POKéMON die\n"
- .string "Entwicklung aus.$"
-
-gItemDescription_WaterStone: @ 83C2D7D
- .string "Löst bei bestimm-\n"
- .string "ten POKéMON die\n"
- .string "Entwicklung aus.$"
-
-gItemDescription_LeafStone: @ 83C2DA6
- .string "Löst bei bestimm-\n"
- .string "ten POKéMON die\n"
- .string "Entwicklung aus.$"
-
-gItemDescription_TinyMushroom: @ 83C2DCF
- .string "Ein gemeiner\n"
- .string "Pilz von \n"
- .string "geringem Wert.$"
-
-gItemDescription_BigMushroom: @ 83C2E00
- .string "Ein seltener\n"
- .string "Pilz von \n"
- .string "hohem Wert.$"
-
-gItemDescription_Pearl: @ 83C2E31
- .string "Eine hübsche Perle\n"
- .string "von geringem Wert.$"
-
-gItemDescription_BigPearl: @ 83C2E56
- .string "Schöne, große Per-\n"
- .string "le, die einen hohen\n"
- .string "Preis erzielen kann.$"
-
-gItemDescription_Stardust: @ 83C2E8C
- .string "Schöner, roter\n"
- .string "Sand, der von\n"
- .string "großem Wert ist.$"
-
-gItemDescription_StarPiece: @ 83C2EBD
- .string "Roter Edelstein,\n"
- .string "der einen hohen\n"
- .string "Preis erzielen kann.$"
-
-gItemDescription_Nugget: @ 83C2EF3
- .string "Ein Barren aus pu-\n"
- .string "rem Gold, der von\n"
- .string "großem Wert ist.$"
-
-gItemDescription_HeartScale: @ 83C2F27
- .string "Hübsche Schuppe,\n"
- .string "höchst begehrt\n"
- .string "bei Sammlern.$"
-
-gItemDescription_OrangeMail: @ 83C2F54
- .string "BRIEF (Tragen) mit \n"
- .string "ZIGZACHS-\n"
- .string "Aufdruck.$"
-
-gItemDescription_HarborMail: @ 83C2F84
- .string "BRIEF (Tragen) mit \n"
- .string "WINGULL-\n"
- .string "Aufdruck.$"
-
-gItemDescription_GlitterMail: @ 83C2FB2
- .string "BRIEF (Tragen) mit \n"
- .string "PIKACHU-\n"
- .string "Aufdruck.$"
-
-gItemDescription_MechMail: @ 83C2FE0
- .string "BRIEF (Tragen) mit \n"
- .string "MAGNETILO-\n"
- .string "Aufdruck.$"
-
-gItemDescription_WoodMail: @ 83C3010
- .string "BRIEF (Tragen) mit \n"
- .string "BUMMELZ-\n"
- .string "Aufdruck.$"
-
-gItemDescription_WaveMail: @ 83C303E
- .string "BRIEF (Tragen) mit \n"
- .string "WAILMER-\n"
- .string "Aufdruck.$"
-
-gItemDescription_BeadMail: @ 83C306C
- .string "BRIEF mit Abbildung\n"
- .string "des POKéMON, das\n"
- .string "ihn trägt.$"
-
-gItemDescription_ShadowMail: @ 83C309C
- .string "BRIEF (Tragen) mit \n"
- .string "ZWIRRLICHT-\n"
- .string "Aufdruck.$"
-
-gItemDescription_TropicMail: @ 83C30CA
- .string "BRIEF (Tragen) mit \n"
- .string "BLUBELLA-\n"
- .string "Aufdruck.$"
-
-gItemDescription_DreamMail: @ 83C30FA
- .string "BRIEF mit Abbildung\n"
- .string "des POKéMON, das\n"
- .string "ihn trägt.$"
-
-gItemDescription_FabMail: @ 83C312A
- .string "BRIEF (Tragen) mit \n"
- .string "edlem Aufdruck.$"
-
-gItemDescription_RetroMail: @ 83C3159
- .string "BRIEF mit den Ab-\n"
- .string "bildungen dreier\n"
- .string "POKéMON-Gesichter.$"
-
-gItemDescription_CheriBerry: @ 83C3187
- .string "Item (Tragen) be-\n"
- .string "wirkt Selbstheilung\n"
- .string "bei Paralyse.$"
-
-gItemDescription_ChestoBerry: @ 83C31B3
- .string "Item (Tragen)\n"
- .string "weckt schlafendes\n"
- .string "POKéMON im Kampf.$"
-
-gItemDescription_PechaBerry: @ 83C31DF
- .string "Item (Tragen) be-\n"
- .string "wirkt Selbstheilung\n"
- .string "bei Vergiftung.$"
-
-gItemDescription_RawstBerry: @ 83C320B
- .string "Item (Tragen) be-\n"
- .string "wirkt Selbstheilung\n"
- .string "bei Verbrennung.$"
-
-gItemDescription_AspearBerry: @ 83C3234
- .string "Item (Tragen) be-\n"
- .string "wirkt Selbstheilung\n"
- .string "bei Frost.$"
-
-gItemDescription_LeppaBerry: @ 83C3261
- .string "Item (Tragen) füllt\n"
- .string "AP im Kampf um\n"
- .string "10 Punkte auf.$"
-
-gItemDescription_OranBerry: @ 83C328C
- .string "Item (Tragen) füllt\n"
- .string "KP im Kampf um\n"
- .string "10 Punkte auf.$"
-
-gItemDescription_PersimBerry: @ 83C32B7
- .string "Item (Tragen) be-\n"
- .string "wirkt Selbstheilung\n"
- .string "bei Verwirrung.$"
-
-gItemDescription_LumBerry: @ 83C32E3
- .string "Item (Tragen) be-\n"
- .string "wirkt Selbstheilung\n"
- .string "bei Statusproblem.$"
-
-gItemDescription_SitrusBerry: @ 83C330C
- .string "Item (Tragen) füllt\n"
- .string "KP im Kampf um\n"
- .string "30 Punkte auf.$"
-
-gItemDescription_FigyBerry: @ 83C3337
- .string "Item (Tragen) füllt\n"
- .string "im Kampf KP auf, be-\n"
- .string "wirkt evtl. Verwirr.$"
-
-gItemDescription_WikiBerry: @ 83C3365
- .string "Item (Tragen) füllt\n"
- .string "KP auf, bewirkt\n"
- .string "evtl. Verwirrung.$"
-
-gItemDescription_MagoBerry: @ 83C3393
- .string "Item (Tragen) füllt\n"
- .string "KP auf, bewirkt\n"
- .string "evtl. Verwirrung.$"
-
-gItemDescription_AguavBerry: @ 83C33C1
- .string "Item (Tragen) füllt\n"
- .string "KP auf, bewirkt\n"
- .string "evtl. Verwirrung.$"
-
-gItemDescription_IapapaBerry: @ 83C33EF
- .string "Item (Tragen) füllt\n"
- .string "KP auf, bewirkt\n"
- .string "evtl. Verwirrung.$"
-
-gItemDescription_RazzBerry: @ 83C341D
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "HIMMIH wächst.$"
-
-gItemDescription_BlukBerry: @ 83C3451
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "MORB wächst.$"
-
-gItemDescription_NanabBerry: @ 83C3485
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "NANAB wächst.$"
-
-gItemDescription_WepearBerry: @ 83C34BA
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "NIRBE wächst.$"
-
-gItemDescription_PinapBerry: @ 83C34F0
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "SANANA wächst.$"
-
-gItemDescription_PomegBerry: @ 83C3525
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "GRANA wächst.$"
-
-gItemDescription_KelpsyBerry: @ 83C355A
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "SETANG wächst.$"
-
-gItemDescription_QualotBerry: @ 83C3590
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "QUALOT wächst.$"
-
-gItemDescription_HondewBerry: @ 83C35C6
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "HONMEL wächst.$"
-
-gItemDescription_GrepaBerry: @ 83C35FC
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "LABRUS wächst.$"
-
-gItemDescription_TamatoBerry: @ 83C3631
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "TAMOT wächst.$"
-
-gItemDescription_CornnBerry: @ 83C3667
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "SAIM wächst.$"
-
-gItemDescription_MagostBerry: @ 83C369C
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "MAGOST wächst.$"
-
-gItemDescription_RabutaBerry: @ 83C36D2
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "RABUTA wächst.$"
-
-gItemDescription_NomelBerry: @ 83C3708
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "TRONZI wächst.$"
-
-gItemDescription_SpelonBerry: @ 83C373D
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "KIWAN wächst.$"
-
-gItemDescription_PamtreBerry: @ 83C3773
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "PALLM wächst.$"
-
-gItemDescription_WatmelBerry: @ 83C37A9
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "WASMEL wächst.$"
-
-gItemDescription_DurinBerry: @ 83C37DF
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "DURIN wächst.$"
-
-gItemDescription_BelueBerry: @ 83C3814
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "MYRTIL wächst.$"
-
-gItemDescription_LiechiBerry: @ 83C3849
- .string "Item (Tragen) hebt\n"
- .string "ANGR.-Wert in einer\n"
- .string "Notlage.$"
-
-gItemDescription_GanlonBerry: @ 83C3874
- .string "Item (Tragen) hebt\n"
- .string "VERT.-Wert in einer\n"
- .string "Notlage.$"
-
-gItemDescription_SalacBerry: @ 83C38A0
- .string "Item (Tragen) hebt\n"
- .string "INIT.-Wert in einer\n"
- .string "Notlage.$"
-
-gItemDescription_PetayaBerry: @ 83C38CA
- .string "Item (Tragen) hebt\n"
- .string "SP. ANGR.-Wert\n"
- .string "in einer Notlage.$"
-
-gItemDescription_ApicotBerry: @ 83C38F6
- .string "Item (Tragen) hebt\n"
- .string "SP. VERT.-Wert\n"
- .string "in einer Notlage.$"
-
-gItemDescription_LansatBerry: @ 83C3922
- .string "Item (Tragen) hebt\n"
- .string "Volltrefferquote\n"
- .string "in einer Notlage.$"
-
-gItemDescription_StarfBerry: @ 83C395A
- .string "Item (Tragen) hebt\n"
- .string "einen Statuswert\n"
- .string "in einer Notlage.$"
-
-gItemDescription_EnigmaBerry: @ 83C398D
- .string "Säe {POKEBLOCK}-Zutat\n"
- .string "in Lehmboden, damit\n"
- .string "Mysterium wächst.$"
-
-gItemDescription_BrightPowder: @ 83C39C6
- .string "Item (Tragen)\n"
- .string "senkt die Genauig-\n"
- .string "keit des Gegners.$"
-
-gItemDescription_WhiteHerb: @ 83C39F9
- .string "Item (Tragen) hebt\n"
- .string "jede Statusverän-\n"
- .string "derung auf.$"
-
-gItemDescription_MachoBrace: @ 83C3A25
- .string "Item (Tragen) för-\n"
- .string "dert Wachstum,\n"
- .string "aber senkt INIT.$"
-
-gItemDescription_ExpShare: @ 83C3A5A
- .string "Item (Tragen) teilt\n"
- .string "die Kampf-EP.$"
-
-gItemDescription_QuickClaw: @ 83C3A8A
- .string "Item (Tragen) hebt\n"
- .string "die Erstschlag-\n"
- .string "quote.$"
-
-gItemDescription_SootheBell: @ 83C3AC1
- .string "Item (Tragen) be-\n"
- .string "sänftigt und för-\n"
- .string "dert Sympathie.$"
-
-gItemDescription_MentalHerb: @ 83C3AF8
- .string "Item (Tragen) er-\n"
- .string "löst POKéMON von\n"
- .string "der Anziehung.$"
-
-gItemDescription_ChoiceBand: @ 83C3B2B
- .string "Stärkt eine Atta-\n"
- .string "cke. Aber nur diese\n"
- .string "ist einsetzbar.$"
-
-gItemDescription_KingsRock: @ 83C3B5E
- .string "Item (Tragen) kann\n"
- .string "Gegner zurück-\n"
- .string "weichen lassen.$"
-
-gItemDescription_SilverPowder: @ 83C3B98
- .string "Item (Tragen) ver-\n"
- .string "bessert KÄFER-\n"
- .string "Attacken.$"
-
-gItemDescription_AmuletCoin: @ 83C3BCD
- .string "Doppelter Geldbe-\n"
- .string "trag, wenn Träger \n"
- .string "am Kampf teilnimmt.$"
-
-gItemDescription_CleanseTag: @ 83C3BFF
- .string "Item (Tragen) kann\n"
- .string "wilde POKéMON\n"
- .string "abhalten.$"
-
-gItemDescription_SoulDew: @ 83C3C2A
- .string "Item (Tragen) hebt\n"
- .string "SP.ANG & SP.VER von\n"
- .string "LATIOS & LATIAS.$"
-
-gItemDescription_DeepSeaTooth: @ 83C3C62
- .string "Item (Tragen) hebt\n"
- .string "SP. ANGR. von\n"
- .string "PERLU.$"
-
-gItemDescription_DeepSeaScale: @ 83C3C93
- .string "Item (Tragen) hebt\n"
- .string "SP. VERT. von\n"
- .string "PERLU.$"
-
-gItemDescription_SmokeBall: @ 83C3CC4
- .string "Item (Tragen) er-\n"
- .string "möglicht Flucht vor\n"
- .string "wilden POKéMON.$"
-
-gItemDescription_Everstone: @ 83C3CFE
- .string "Wundersamer Stein\n"
- .string "zum Tragen. Bewirkt\n"
- .string "Entwicklungsstopp.$"
-
-gItemDescription_FocusBand: @ 83C3D36
- .string "Item (Tragen) kann\n"
- .string "manchmal K.O.\n"
- .string "verhindern.$"
-
-gItemDescription_LuckyEgg: @ 83C3D67
- .string "Item (Tragen)\n"
- .string "erhöht im Kampf er-\n"
- .string "haltene Extra-EP.$"
-
-gItemDescription_ScopeLens: @ 83C3D9D
- .string "Item (Tragen)\n"
- .string "erhöht die\n"
- .string "Volltrefferquote.$"
-
-gItemDescription_MetalCoat: @ 83C3DCD
- .string "Item (Tragen)\n"
- .string "verstärkt STAHL-\n"
- .string "Attacken.$"
-
-gItemDescription_Leftovers: @ 83C3E04
- .string "Item (Tragen) füllt\n"
- .string "im Kampf langsam\n"
- .string "KP wieder auf.$"
-
-gItemDescription_DragonScale: @ 83C3E36
- .string "Seltsame Haut zum\n"
- .string "Tragen für POKéMON\n"
- .string "des Typs DRACHEN.$"
-
-gItemDescription_LightBall: @ 83C3E64
- .string "Item (Tragen)\n"
- .string "erhöht PIKACHUS\n"
- .string "SP. ANGR.$"
-
-gItemDescription_SoftSand: @ 83C3E94
- .string "Item (Tragen)\n"
- .string "verstärkt BODEN-\n"
- .string "Attacken.$"
-
-gItemDescription_HardStone: @ 83C3ECC
- .string "Item (Tragen)\n"
- .string "verstärkt GESTEIN-\n"
- .string "Attacken.$"
-
-gItemDescription_MiracleSeed: @ 83C3F02
- .string "Item (Tragen)\n"
- .string "verstärkt PFLAN-\n"
- .string "ZEN-Attacken.$"
-
-gItemDescription_BlackGlasses: @ 83C3F39
- .string "Item (Tragen)\n"
- .string "verstärkt UNLICHT-\n"
- .string "Attacken.$"
-
-gItemDescription_BlackBelt: @ 83C3F6F
- .string "Item (Tragen)\n"
- .string "verstärkt KAMPF-\n"
- .string "Attacken.$"
-
-gItemDescription_Magnet: @ 83C3F9D
- .string "Item (Tragen)\n"
- .string "verstärkt ELEKTRO-\n"
- .string "Attacken.$"
-
-gItemDescription_MysticWater: @ 83C3FCB
- .string "Item (Tragen)\n"
- .string "verstärkt WASSER-\n"
- .string "Attacken.$"
-
-gItemDescription_SharpBeak: @ 83C4002
- .string "Item (Tragen)\n"
- .string "verstärkt FLUG-\n"
- .string "Attacken.$"
-
-gItemDescription_PoisonBarb: @ 83C403A
- .string "Item (Tragen)\n"
- .string "verstärkt GIFT-\n"
- .string "Attacken.$"
-
-gItemDescription_NeverMeltIce: @ 83C4072
- .string "Item (Tragen)\n"
- .string "verstärkt EIS-\n"
- .string "Attacken.$"
-
-gItemDescription_SpellTag: @ 83C40A7
- .string "Item (Tragen)\n"
- .string "verstärkt GEIST-\n"
- .string "Attacken.$"
-
-gItemDescription_TwistedSpoon: @ 83C40DE
- .string "Item (Tragen)\n"
- .string "verstärkt PSYCHO-\n"
- .string "Attacken.$"
-
-gItemDescription_Charcoal: @ 83C410B
- .string "Item (Tragen)\n"
- .string "verstärkt FEUER-\n"
- .string "Attacken.$"
-
-gItemDescription_DragonFang: @ 83C4141
- .string "Item (Tragen)\n"
- .string "verstärkt DRACHEN-\n"
- .string "Attacken.$"
-
-gItemDescription_SilkScarf: @ 83C4179
- .string "Item (Tragen)\n"
- .string "verstärkt NORMAL-\n"
- .string "Attacken.$"
-
-gItemDescription_UpGrade: @ 83C41B1
- .string "Eine mysteriöse\n"
- .string "Box der SILPH CO.$"
-
-gItemDescription_ShellBell: @ 83C41D2
- .string "Item (Tragen) füllt\n"
- .string "im Kampf langsam \n"
- .string "KP wieder auf.$"
-
-gItemDescription_SeaIncense: @ 83C4206
- .string "Item (Tragen)\n"
- .string "verstärkt WASSER-\n"
- .string "Attacken.$"
-
-gItemDescription_LaxIncense: @ 83C4239
- .string "Item (Tragen)\n"
- .string "senkt Genauigkeit\n"
- .string "des Gegners.$"
-
-gItemDescription_LuckyPunch: @ 83C426E
- .string "Item (Tragen)\n"
- .string "erhöht CHANEIRAS\n"
- .string "Volltrefferquote.$"
-
-gItemDescription_MetalPowder: @ 83C42A3
- .string "Item (Tragen)\n"
- .string "erhöht VERT.-Wert\n"
- .string "von DITTO.$"
-
-gItemDescription_ThickClub: @ 83C42C4
- .string "Irgendeine Art\n"
- .string "Knochen von\n"
- .string "geringem Wert.$"
-
-gItemDescription_Stick: @ 83C42F1
- .string "Gemeiner Lauch,\n"
- .string "der nur von\n"
- .string "geringem Wert ist.$"
-
-gItemDescription_RedScarf: @ 83C431A
- .string "Item (Tragen) hebt\n"
- .string "COOL.-Wert für den\n"
- .string "WETTBEWERB.$"
-
-gItemDescription_BlueScarf: @ 83C4344
- .string "Item (Tragen) hebt\n"
- .string "SCHÖN.-Wert für den\n"
- .string "WETTBEWERB.$"
-
-gItemDescription_PinkScarf: @ 83C4370
- .string "Item (Tragen) hebt\n"
- .string "ANMUT-Wert für den\n"
- .string "WETTBEWERB.$"
-
-gItemDescription_GreenScarf: @ 83C439A
- .string "Item (Tragen) hebt\n"
- .string "KLUG.-Wert für den\n"
- .string "WETTBEWERB.$"
-
-gItemDescription_YellowScarf: @ 83C43C5
- .string "Item (Tragen) hebt\n"
- .string "STÄRKE-Wert für\n"
- .string "den WETTBEWERB.$"
-
-gItemDescription_MachBike: @ 83C43F0
- .string "Klapprad, das dop-\n"
- .string "pelt so schnell ist\n"
- .string "wie ein Fußgänger.$"
-
-gItemDescription_CoinCase: @ 83C4425
- .string "Kann bis zu 9.999\n"
- .string "MÜNZEN aufnehmen.$"
-
-gItemDescription_Itemfinder: @ 83C444A
- .string "Ein Gerät, das ver-\n"
- .string "borgene Items via \n"
- .string "Schallwellen ortet.$"
-
-gItemDescription_OldRod: @ 83C447C
- .string "Damit kannst du in\n"
- .string "jedem Gewässer\n"
- .string "POKéMON angeln.$"
-
-gItemDescription_GoodRod: @ 83C44AF
- .string "Eine recht gute\n"
- .string "Angel zum\n"
- .string "POKéMON-Fischen.$"
-
-gItemDescription_SuperRod: @ 83C44DF
- .string "Die beste Angel,\n"
- .string "um nach POKéMON\n"
- .string "zu fischen.$"
-
-gItemDescription_SSTicket: @ 83C450F
- .string "Ein Ticket zur\n"
- .string "Fahrt auf\n"
- .string "einer Fähre.$"
-
-gItemDescription_ContestPass: @ 83C453B
- .string "Ausweis zur Teil-\n"
- .string "nahme an POKéMON- \n"
- .string "WETTBEWERBEN.$"
-
-gItemDescription_WailmerPail: @ 83C456C
- .string "Ein Gegenstand zum\n"
- .string "Gießen von Pflan-\n"
- .string "zen wie BEEREN.$"
-
-gItemDescription_DevonGoods: @ 83C4599
- .string "Päckchen, das Ma-\n"
- .string "schinenteile von\n"
- .string "DEVON enthält.$"
-
-gItemDescription_SootSack: @ 83C45C8
- .string "Beutel zum Sammeln\n"
- .string "und Aufbewahren\n"
- .string "von Vulkanasche.$"
-
-gItemDescription_BasementKey: @ 83C45F5
- .string "Schlüssel für NEU\n"
- .string "MALVENFROH unter\n"
- .string "MALVENFROH CITY.$"
-
-gItemDescription_AcroBike: @ 83C4625
- .string "Klapprad ermög-\n"
- .string "licht Sprünge und\n"
- .string "Wheelies.$"
-
-gItemDescription_PokeblockCase: @ 83C4656
- .string "Box für {POKEBLOCK},\n"
- .string "die im BEERENMIXER\n"
- .string "hergestellt werden.$"
-
-gItemDescription_Letter: @ 83C468B
- .string "Brief an TROY\n"
- .string "vom PRÄSIDENTEN\n"
- .string "der DEVON CORP.$"
-
-gItemDescription_EonTicket: @ 83C46C4
- .string "Bootsticket zu\n"
- .string "einer fernen Insel\n"
- .string "im Süden.$"
-
-gItemDescription_RedOrb: @ 83C46F9
- .string "Rot glühende Kugel,\n"
- .string "die eine uralte\n"
- .string "Macht bergen soll.$"
-
-gItemDescription_BlueOrb: @ 83C472E
- .string "Blau glühende Kugel,\n"
- .string "die eine uralte\n"
- .string "Macht bergen soll.$"
-
-gItemDescription_Scanner: @ 83C4764
- .string "Ein Gerät, das\n"
- .string "im SCHIFFSWRACK\n"
- .string "gefunden wurde.$"
-
-gItemDescription_GoGoggles: @ 83C478E
- .string "Schicke Brille, die\n"
- .string "die Augen vor Sand-\n"
- .string "stürmen schützt.$"
-
-gItemDescription_Meteorite: @ 83C47C6
- .string "Meteorit. Fundort:\n"
- .string "METEORFÄLLE.$"
-
-gItemDescription_Room1Key: @ 83C47E9
- .string "Schlüssel zur Tür\n"
- .string "einer Kabine auf\n"
- .string "dem SCHIFFSWRACK.$"
-
-gItemDescription_Room2Key: @ 83C481C
- .string "Schlüssel zur Tür\n"
- .string "einer Kabine auf\n"
- .string "dem SCHIFFSWRACK.$"
-
-gItemDescription_Room4Key: @ 83C484F
- .string "Schlüssel zur Tür\n"
- .string "einer Kabine auf\n"
- .string "dem SCHIFFSWRACK.$"
-
-gItemDescription_Room6Key: @ 83C4882
- .string "Schlüssel zur Tür\n"
- .string "einer Kabine auf\n"
- .string "dem SCHIFFSWRACK.$"
-
-gItemDescription_StorageKey: @ 83C48B5
- .string "Schlüssel zum\n"
- .string "Lagerraum auf\n"
- .string "dem SCHIFFSWRACK.$"
-
-gItemDescription_RootFossil: @ 83C48E7
- .string "Fossil eines ural-\n"
- .string "ten POKéMON, das in\n"
- .string "der Tiefsee lebte.$"
-
-gItemDescription_ClawFossil: @ 83C491B
- .string "Fossil eines ural-\n"
- .string "ten POKéMON, das in\n"
- .string "der Tiefsee lebte.$"
-
-gItemDescription_DevonScope: @ 83C494F
- .string "Gerät von DEVON, \n"
- .string "das unsichtbare\n"
- .string "POKéMON entlarvt.$"
-
-gItemDescription_TM01: @ 83C4985
- .string "Stark. POKéMON er-\n"
- .string "schrickt vielleicht\n"
- .string "bei gegn. Attacke.$"
-
-gItemDescription_TM02: @ 83C49BC
- .string "Gegner wird mit\n"
- .string "langen, scharfen\n"
- .string "Krallen attackiert.$"
-
-gItemDescription_TM03: @ 83C49EE
- .string "Eine Ultraschall-\n"
- .string "welle, die den Geg-\n"
- .string "ner verwirren kann.$"
-
-gItemDescription_TM04: @ 83C4A1D
- .string "Verstärkt SP. ANGR.\n"
- .string "und SP. VERT. durch\n"
- .string "Konzentration.$"
-
-gItemDescription_TM05: @ 83C4A4E
- .string "Brüller schlägt Geg-\n"
- .string "ner in die Flucht \n"
- .string "und beendet Kampf.$"
-
-gItemDescription_TM06: @ 83C4A88
- .string "Vergiftet den Geg-\n"
- .string "ner und schadet \n"
- .string "ihm zunehmend.$"
-
-gItemDescription_TM07: @ 83C4ABD
- .string "Hagelsturm schadet\n"
- .string "allen POKéMON außer\n"
- .string "denen des Typs EIS.$"
-
-gItemDescription_TM08: @ 83C4AF2
- .string "Stärkt den Körper.\n"
- .string "So steigt ANGR.-\n"
- .string "und VERT.-Wert.$"
-
-gItemDescription_TM09: @ 83C4B24
- .string "Bepflanzt den\n"
- .string "Gegner mit 2 bis 5\n"
- .string "Samen auf einmal.$"
-
-gItemDescription_TM10: @ 83C4B54
- .string "Die Stärke dieser\n"
- .string "Attacke hängt vom \n"
- .string "jew. POKéMON ab.$"
-
-gItemDescription_TM11: @ 83C4B85
- .string "Verstärkt FEUER-\n"
- .string "Attacken über \n"
- .string "5 Runden.$"
-
-gItemDescription_TM12: @ 83C4BB6
- .string "Reizt Geg. so, dass\n"
- .string "er nur Angriffs-\n"
- .string "attacken einsetzt.$"
-
-gItemDescription_TM13: @ 83C4BE7
- .string "Eisig kalter Strahl,\n"
- .string "der den Gegner\n"
- .string "einfrieren kann.$"
-
-gItemDescription_TM14: @ 83C4C17
- .string "Eis- und Schnee- \n"
- .string "Attacke, die Gegner\n"
- .string "einfrieren kann.$"
-
-gItemDescription_TM15: @ 83C4C50
- .string "Stark, muss sich\n"
- .string "aber in der nächs-\n"
- .string "ten Runde aufladen.$"
-
-gItemDescription_TM16: @ 83C4C7E
- .string "Wand aus Licht, die\n"
- .string "Senkung des SP.\n"
- .string "ANGR. verringert.$"
-
-gItemDescription_TM17: @ 83C4CB2
- .string "Schützt, könnte\n"
- .string "aber bei häufigem\n"
- .string "Einsatz versagen.$"
-
-gItemDescription_TM18: @ 83C4CEA
- .string "Verstärkt WASSER-\n"
- .string "Attacken über\n"
- .string "5 Runden.$"
-
-gItemDescription_TM19: @ 83C4D1C
- .string "Füllt KP um die Hälf-\n"
- .string "te der zugefügten\n"
- .string "Schadenspunkte.$"
-
-gItemDescription_TM20: @ 83C4D54
- .string "Mystische Macht\n"
- .string "verhindert Status-\n"
- .string "veränderungen.$"
-
-gItemDescription_TM21: @ 83C4D87
- .string "Je unbeliebter der\n"
- .string "Trainer, desto grö-\n"
- .string "ßer die Wirkung.$"
-
-gItemDescription_TM22: @ 83C4DC1
- .string "Erst wird Sonnen-\n"
- .string "licht absorbiert,\n"
- .string "dann erfolgt Angr.$"
-
-gItemDescription_TM23: @ 83C4DFB
- .string "Schlag mit harter\n"
- .string "Rute. Kann gleichz.\n"
- .string "VERT.-Wert senken.$"
-
-gItemDescription_TM24: @ 83C4E31
- .string "Starke Elektro-\n"
- .string "Attacke kann\n"
- .string "Paralyse bewirken.$"
-
-gItemDescription_TM25: @ 83C4E66
- .string "Mächtiger Donner-\n"
- .string "schlag, der Paraly-\n"
- .string "se bewirken kann.$"
-
-gItemDescription_TM26: @ 83C4E9B
- .string "Starkes Beben hat\n"
- .string "keinen Einfluss auf\n"
- .string "fliegende Gegner.$"
-
-gItemDescription_TM27: @ 83C4ECD
- .string "Je beliebter der\n"
- .string "Trainer, desto grö-\n"
- .string "ßer die Wirkung.$"
-
-gItemDescription_TM28: @ 83C4F07
- .string "Erst gräbt sich An-\n"
- .string "greifer ein, dann\n"
- .string "erfolgt Angriff.$"
-
-gItemDescription_TM29: @ 83C4F3E
- .string "Starke PSYCHO-At-\n"
- .string "tacke, die SP. VERT.\n"
- .string "senken kann.$"
-
-gItemDescription_TM30: @ 83C4F70
- .string "Dunkler Klumpen,\n"
- .string "der SP. VERT.\n"
- .string "senken kann.$"
-
-gItemDescription_TM31: @ 83C4FA4
- .string "Zerstört Barrieren\n"
- .string "wie SCHUTZSCHILD,\n"
- .string "fügt Schaden zu.$"
-
-gItemDescription_TM32: @ 83C4FDB
- .string "Virtueller Doppel-\n"
- .string "gänger erhöht\n"
- .string "den Flucht-Wert.$"
-
-gItemDescription_TM33: @ 83C500B
- .string "Wand aus Licht, die\n"
- .string "physische Atta-\n"
- .string "cken schwächt.$"
-
-gItemDescription_TM34: @ 83C5042
- .string "Fügt Gegner einen\n"
- .string "Stromschlag zu,\n"
- .string "der nie verfehlt.$"
-
-gItemDescription_TM35: @ 83C507D
- .string "Entfesselt Feuer-\n"
- .string "strahl, der Gegner\n"
- .string "verbrennen kann.$"
-
-gItemDescription_TM36: @ 83C50AC
- .string "Bewirft Gegner mit\n"
- .string "Matsch, der ihn\n"
- .string "vergiften kann.$"
-
-gItemDescription_TM37: @ 83C50DC
- .string "Sandsturm trifft\n"
- .string "etliche Runden lang\n"
- .string "die Kämpfenden.$"
-
-gItemDescription_TM38: @ 83C5115
- .string "Kraftvolle FEUER-\n"
- .string "Attacke, die Gegner\n"
- .string "verbrennen kann.$"
-
-gItemDescription_TM39: @ 83C5143
- .string "Stoppt GESTEIN-\n"
- .string "Attacken. Kann\n"
- .string "INIT.-Wert senken.$"
-
-gItemDescription_TM40: @ 83C517A
- .string "Eine extrem schnel-\n"
- .string "le Attacke, die\n"
- .string "unausweichlich ist.$"
-
-gItemDescription_TM41: @ 83C51AA
- .string "Blockiert gerade\n"
- .string "verwendete Atta-\n"
- .string "cke des Gegners.$"
-
-gItemDescription_TM42: @ 83C51DE
- .string "Stärkt ANGR.-Wert\n"
- .string "bei Gift, Brand oder\n"
- .string "Paralyse.$"
-
-gItemDescription_TM43: @ 83C5211
- .string "Die Umgebung\n"
- .string "beeinflusst die Art\n"
- .string "der Attacke.$"
-
-gItemDescription_TM44: @ 83C5245
- .string "POKéMON schläft\n"
- .string "2 Runden. Füllt KP\n"
- .string "und heilt Status.$"
-
-gItemDescription_TM45: @ 83C527F
- .string "Erschwert Angriff\n"
- .string "auf Gegner des an-\n"
- .string "deren Geschlechts.$"
-
-gItemDescription_TM46: @ 83C52B6
- .string "Beim Angriff wird\n"
- .string "Item des Gegners\n"
- .string "evtl. gestohlen.$"
-
-gItemDescription_TM47: @ 83C52E9
- .string "Den Gegner\n"
- .string "treffen stählerne\n"
- .string "Flügelschläge.$"
-
-gItemDescription_TM48: @ 83C531A
- .string "Austausch der\n"
- .string "Fähigkeiten bei der\n"
- .string "nächsten Attacke.$"
-
-gItemDescription_TM49: @ 83C5354
- .string "Stiehlt die\n"
- .string "Effekte der gegne-\n"
- .string "rischen Attacke.$"
-
-gItemDescription_TM50: @ 83C538D
- .string "Höchste Kraft,\n"
- .string "aber senkt SP.\n"
- .string "ANGR. enorm.$"
-
-gItemDescription_HM01: @ 83C53C4
- .string "Gegner wird mit\n"
- .string "klingenscharfen\n"
- .string "Krallen attackiert.$"
-
-gItemDescription_HM02: @ 83C53F0
- .string "PKMN fliegt hoch,\n"
- .string "dann erfolgt rasan-\n"
- .string "ter Luftangriff.$"
-
-gItemDescription_HM03: @ 83C5424
- .string "Eine riesige Flut-\n"
- .string "welle ergießt sich\n"
- .string "über dem Gegner.$"
-
-gItemDescription_HM04: @ 83C545A
- .string "Den Gegner trifft \n"
- .string "ein energiegelade-\n"
- .string "ner Kraftschlag.$"
-
-gItemDescription_HM05: @ 83C5485
- .string "Ein gleißender\n"
- .string "Lichtstrahl, der\n"
- .string "Genau. senken kann.$"
-
-gItemDescription_HM06: @ 83C54BD
- .string "Steinbrecherische\n"
- .string "Attacke, die VERT.-\n"
- .string "Wert senken kann.$"
-
-gItemDescription_HM07: @ 83C54F4
- .string "Mächtige Attacke,\n"
- .string "die Wasserfälle\n"
- .string "bezwingbar macht.$"
-
-gItemDescription_HM08: @ 83C552B
- .string "PKMN taucht ab,\n"
- .string "dann erfolgt An-\n"
- .string "griff aus der Tiefe.$"
-
-gItemDescription_Dummy: @ 83C5562
- .string "$"
diff --git a/data/battle_anim_807B69C.s b/data/battle_anim_807B69C.s
deleted file mode 100644
index 0ed7d7cf0..000000000
--- a/data/battle_anim_807B69C.s
+++ /dev/null
@@ -1,23 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gSubspriteTable_83931B8:: @ 83931B8
- subsprite -16, -16, 2, 0, 64x64
- subsprite -16, 48, 2, 64, 64x32
- subsprite 48, -16, 2, 96, 32x64
- subsprite 48, 48, 2, 128, 32x32
-
- .align 2
-gSubspriteTables_83931D8:: @ 83931D8
- .4byte 4, gSubspriteTable_83931B8
-
- .align 2
-gSpriteTemplate_83931E0:: @ 83931E0
- spr_template 10010, 10010, gOamData_837E05C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83931F8:: @ 83931F8
- spr_template 10136, 10136, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807B870
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index fbb0826fc..853760b4a 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -4,7 +4,7 @@
.section script_data, "aw", %progbits
-gUnknown_081D6BBC:: @ 81D6BBC
+gBattleScriptsEffectsTable:: @ 81D6BBC
.4byte MoveEffect_Hit
.4byte MoveEffect_Sleep
.4byte MoveEffect_PoisonHit
@@ -305,11 +305,11 @@ MoveEffect_Sleep: @ 81D6F81
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifstatus TARGET, SLP, BattleScript_1D6FC4
jumpifcannotsleep BattleScript_1D6FE0
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -638,9 +638,9 @@ MoveEffect_Roar: @ 81D72C5
ppreduce
jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_1D988D
jumpifspecialstatusflag TARGET, 0x400, 0, BattleScript_1D93EC
- accuracycheck BattleScript_1D83D6, 65535
+ accuracycheck BattleScript_ButItFailed, 65535
accuracycheck BattleScript_1D6F77, 0
- forcerandomswitch BattleScript_1D83D6
+ forcerandomswitch BattleScript_ButItFailed
MoveEffect_MultiHit: @ 81D72ED
attackcanceler
@@ -707,7 +707,7 @@ MoveEffect_Conversion: @ 81D73B1
attackcanceler
attackstring
ppreduce
- changetypestoenemyattacktype BattleScript_1D83D6
+ changetypestoenemyattacktype BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TypeTransform
@@ -737,13 +737,13 @@ MoveEffect_Toxic: @ 81D73F4
attackstring
ppreduce
jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifstatus TARGET, PSN, BattleScript_1D7455
jumpifstatus TARGET, TOX, BattleScript_1D7455
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8
jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8
- accuracycheck BattleScript_1D83D6, 0
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -810,7 +810,7 @@ MoveEffect_Ohko: @ 81D74E4
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65535
+ accuracycheck BattleScript_ButItFailed, 65535
atk6
jumpifbyte 4, 0x2024c68, 41, BattleScript_1D6F48
koplussomethings BattleScript_1D7505
@@ -939,7 +939,7 @@ MoveEffect_FocusEnergy: @ 81D7689
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_1D83D6
+ jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_ButItFailed
setincreasedcriticalchance
attackanimation
waitanimation
@@ -958,9 +958,9 @@ MoveEffect_Confuse: @ 81D76BF
attackstring
ppreduce
jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_1D98E5
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifsecondarytstatus TARGET, S_CONFUSED, BattleScript_1D76FE
- accuracycheck BattleScript_1D83D6, 0
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -1041,13 +1041,13 @@ MoveEffect_Poison: @ 81D7795
attackstring
ppreduce
jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifstatus TARGET, PSN, BattleScript_1D7455
jumpifstatus TARGET, TOX, BattleScript_1D7455
jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8
jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -1062,12 +1062,12 @@ MoveEffect_Paralyze: @ 81D77F6
attackstring
ppreduce
jumpifability TARGET, ABILITY_LIMBER, BattleScript_1D7859
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
atk6
- jumpifbyte 4, 0x2024c68, 41, BattleScript_1D83D6
+ jumpifbyte 4, 0x2024c68, 41, BattleScript_ButItFailed
jumpifstatus TARGET, PAR, BattleScript_1D784B
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -1190,9 +1190,9 @@ MoveEffect_Mimic: @ 81D7988
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 65535
- copyattack BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 65535
+ copyattack BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_LearnedMove2
@@ -1214,7 +1214,7 @@ MoveEffect_LeechSeed: @ 81D79C2
attackstring
pause 32
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_1D79D9, 0
BattleScript_1D79D9: @ 81D79D9
@@ -1240,8 +1240,8 @@ MoveEffect_Disable: @ 81D79FB
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- disablelastusedattack BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ disablelastusedattack BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_MoveWasDisabled
@@ -1285,7 +1285,7 @@ MoveEffect_Encore: @ 81D7A5D
accuracycheck BattleScript_1D6F72, 0
attackstring
ppreduce
- setencore BattleScript_1D83D6
+ setencore BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_EncoreGot
@@ -1296,8 +1296,8 @@ MoveEffect_PainSplit: @ 81D7A79
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65535
- painsplitdamagecalculator BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65535
+ painsplitdamagecalculator BattleScript_ButItFailed
attackanimation
waitanimation
orword 0x2024c6c, 0x100
@@ -1315,7 +1315,7 @@ MoveEffect_Snore: @ 81D7AB0
jumpifstatus USER, SLP, BattleScript_1D7AC2
attackstring
ppreduce
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
BattleScript_1D7AC2: @ 81D7AC2
jumpifhalfword 0, 0x2024be8, 214, BattleScript_1D7AD6
@@ -1334,7 +1334,7 @@ MoveEffect_Conversion2: @ 81D7AEA
attackcanceler
attackstring
ppreduce
- settypetorandomresistance BattleScript_1D83D6
+ settypetorandomresistance BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TypeTransform
@@ -1345,8 +1345,8 @@ MoveEffect_LockOn: @ 81D7AFF
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
setalwayshitflag
attackanimation
waitanimation
@@ -1358,8 +1358,8 @@ MoveEffect_Sketch: @ 81D7B21
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- copymovepermanently BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ copymovepermanently BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_SketchedMove
@@ -1371,7 +1371,7 @@ MoveEffect_SleepTalk: @ 81D7B40
jumpifstatus USER, SLP, BattleScript_1D7B52
attackstring
ppreduce
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
BattleScript_1D7B52: @ 81D7B52
printstring BATTLE_TEXT_FastAsleep
@@ -1382,7 +1382,7 @@ BattleScript_1D7B52: @ 81D7B52
orword 0x2024c6c, 0x800
selectrandommovefromusermoves BattleScript_1D7B72
pause 64
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
BattleScript_1D7B72: @ 81D7B72
attackanimation
@@ -1410,8 +1410,8 @@ MoveEffect_Spite: @ 81D7B99
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- reducepprandom BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ reducepprandom BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_ReducedBy
@@ -1512,8 +1512,8 @@ MoveEffect_MeanLook: @ 81D7CCC
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65534
- jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65534
+ jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_ButItFailed
attackanimation
waitanimation
setbyte 0x2024d21, 32
@@ -1526,10 +1526,10 @@ MoveEffect_Nightmare: @ 81D7CF4
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_ButItFailed
jumpifstatus TARGET, SLP, BattleScript_1D7D1A
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
BattleScript_1D7D1A: @ 81D7D1A
attackanimation
@@ -1553,7 +1553,7 @@ MoveEffect_Curse: @ 81D7D3B
ppreduce
jumpifstat USER, 2, 3, 0, BattleScript_1D7D60
jumpifstat USER, 1, 1, 12, BattleScript_1D7D60
- jumpifstat USER, 0, 2, 12, BattleScript_1D83D6
+ jumpifstat USER, 0, 2, 12, BattleScript_ButItFailed
BattleScript_1D7D60: @ 81D7D60
copyarray 0x2024c08, 0x2024c07, 1
@@ -1588,8 +1588,8 @@ BattleScript_1D7DC4: @ 81D7DC4
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- cursetarget BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ cursetarget BattleScript_ButItFailed
orword 0x2024c6c, 0x100
setbyte 0x2016002, 0
attackanimation
@@ -1640,7 +1640,7 @@ MoveEffect_PerishSong: @ 81D7E3D
attackcanceler
attackstring
ppreduce
- setperishsong BattleScript_1D83D6
+ setperishsong BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_PerishSong
@@ -1687,7 +1687,7 @@ MoveEffect_Swagger: @ 81D7EA2
accuracycheck BattleScript_1D6F72, 0
attackstring
ppreduce
- jumpifconfusedandattackmaxed 1, BattleScript_1D83D6
+ jumpifconfusedandattackmaxed 1, BattleScript_ButItFailed
attackanimation
waitanimation
setbyte 0x201601e, 33
@@ -1724,8 +1724,8 @@ MoveEffect_Attract: @ 81D7F1F
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- tryinfatuatetarget BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ tryinfatuatetarget BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_FellLove
@@ -1773,10 +1773,10 @@ MoveEffect_BatonPass: @ 81D7F7C
attackcanceler
attackstring
ppreduce
- jumpifcannotswitch 129, BattleScript_1D83D6
+ jumpifcannotswitch 129, BattleScript_ButItFailed
attackanimation
waitanimation
- openpartyscreen USER, BattleScript_1D83D6
+ openpartyscreen USER, BattleScript_ButItFailed
atke2 USER
waitstateatk
atk51 USER, 2
@@ -1858,7 +1858,7 @@ MoveEffect_BellyDrum: @ 81D8038
attackcanceler
attackstring
ppreduce
- maxattackhalvehp BattleScript_1D83D6
+ maxattackhalvehp BattleScript_ButItFailed
orword 0x2024c6c, 0x100
attackanimation
waitanimation
@@ -1872,7 +1872,7 @@ MoveEffect_PsychUp: @ 81D805A
attackcanceler
attackstring
ppreduce
- copyfoestats BattleScript_1D83D6
+ copyfoestats BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_CopyStatChanges
@@ -1971,7 +1971,7 @@ MoveEffect_FutureSight: @ 81D817D
attackcanceler
attackstring
ppreduce
- setfutureattack BattleScript_1D83D6
+ setfutureattack BattleScript_ButItFailed
attackanimation
waitanimation
printfromtable BattleTextList_4015E2
@@ -2017,9 +2017,9 @@ MoveEffect_Teleport: @ 81D8233
attackcanceler
attackstring
ppreduce
- jumpifhalfword 4, 0x20239f8, 8, BattleScript_1D83D6
+ jumpifhalfword 4, 0x20239f8, 8, BattleScript_ButItFailed
atk76 USER, 2
- jumpifbyte 0, 0x2024d1e, 1, BattleScript_1D83D6
+ jumpifbyte 0, 0x2024d1e, 1, BattleScript_ButItFailed
jumpifbyte 0, 0x2024d1e, 2, BattleScript_1D8839
attackanimation
waitanimation
@@ -2038,7 +2038,7 @@ MoveEffect_BeatUp: @ 81D826E
BattleScript_1D8281: @ 81D8281
atk25
- beatupcalculation BattleScript_1D82C4, BattleScript_1D83D6
+ beatupcalculation BattleScript_1D82C4, BattleScript_ButItFailed
printstring BATTLE_TEXT_PokeAttack
critcalc
jumpifbyte 1, 0x2024c0d, 2, BattleScript_1D829C
@@ -2156,7 +2156,7 @@ BattleScript_1D83D4: @ 81D83D4
BattleScript_1D83D5: @ 81D83D5
ppreduce
-BattleScript_1D83D6:: @ 81D83D6
+BattleScript_ButItFailed:: @ 81D83D6
pause 32
orbyte 0x2024c68, 32
resultmessage
@@ -2243,8 +2243,8 @@ MoveEffect_Torment: @ 81D8495
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- settorment BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ settorment BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TormentSubject
@@ -2257,7 +2257,7 @@ MoveEffect_Flatter: @ 81D84B1
accuracycheck BattleScript_1D6F72, 0
attackstring
ppreduce
- jumpifconfusedandattackmaxed 4, BattleScript_1D83D6
+ jumpifconfusedandattackmaxed 4, BattleScript_ButItFailed
attackanimation
waitanimation
setbyte 0x201601e, 20
@@ -2279,12 +2279,12 @@ MoveEffect_WillOWisp: @ 81D850F
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifstatus TARGET, BRN, BattleScript_1D8575
jumpiftype TARGET, TYPE_FIRE, BattleScript_1D83E8
jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_1D855B
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -2309,7 +2309,7 @@ MoveEffect_Memento: @ 81D8583
jumpifbyte 0, 0x2024d24, 1, BattleScript_1D860A
attackstring
ppreduce
- jumpifattackandspecialattackcannotfall BattleScript_1D83D6
+ jumpifattackandspecialattackcannotfall BattleScript_ButItFailed
setuserhptozero
attackanimation
waitanimation
@@ -2415,8 +2415,8 @@ MoveEffect_Taunt: @ 81D86AB
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- settaunt BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ settaunt BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TauntFell
@@ -2427,7 +2427,7 @@ MoveEffect_HelpingHand: @ 81D86C7
attackcanceler
attackstring
ppreduce
- sethelpinghand BattleScript_1D83D6
+ sethelpinghand BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_ReadyToHelp
@@ -2438,9 +2438,9 @@ MoveEffect_Trick: @ 81D86DC
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
- itemswap BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
+ itemswap BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_SwitchedItems
@@ -2453,8 +2453,8 @@ MoveEffect_RolePlay: @ 81D870A
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65535
- copyability BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65535
+ copyability BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_CopiedObject
@@ -2465,7 +2465,7 @@ MoveEffect_Wish: @ 81D8726
attackcanceler
attackstring
ppreduce
- atkd4 0, BattleScript_1D83D6
+ atkd4 0, BattleScript_ButItFailed
attackanimation
waitanimation
jump BattleScript_EndTurn
@@ -2484,7 +2484,7 @@ MoveEffect_Ingrain: @ 81D874D
attackcanceler
attackstring
ppreduce
- setroots BattleScript_1D83D6
+ setroots BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_PlantedRoots
@@ -2510,7 +2510,7 @@ MoveEffect_Recycle: @ 81D8782
attackcanceler
attackstring
ppreduce
- recycleitem BattleScript_1D83D6
+ recycleitem BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_FoundOne
@@ -2562,11 +2562,11 @@ MoveEffect_Yawn: @ 81D87EE
ppreduce
jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_1D882F
jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_1D882F
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifhalverset TARGET, 32, BattleScript_1D9037
- accuracycheck BattleScript_1D83D6, 65535
- jumpifcannotsleep BattleScript_1D83D6
- setyawn BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65535
+ jumpifcannotsleep BattleScript_ButItFailed
+ setyawn BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_DrowsyMade
@@ -2590,7 +2590,7 @@ MoveEffect_Endeavor: @ 81D8852
attackcanceler
attackstring
ppreduce
- setdamagetohealthdifference BattleScript_1D83D6
+ setdamagetohealthdifference BattleScript_ButItFailed
copyarray 0x2024bf0, 0x2024bec, 4
accuracycheck BattleScript_1D6F77, 0
atk6
@@ -2608,8 +2608,8 @@ MoveEffect_SkillSwap: @ 81D8893
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65535
- abilityswap BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65535
+ abilityswap BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_AbilitySwap
@@ -2620,7 +2620,7 @@ MoveEffect_Imprison: @ 81D88AF
attackcanceler
attackstring
ppreduce
- imprisoneffect BattleScript_1D83D6
+ imprisoneffect BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_SealedMove
@@ -2631,7 +2631,7 @@ MoveEffect_Refresh: @ 81D88C4
attackcanceler
attackstring
ppreduce
- cureifburnedparalysedorpoisoned BattleScript_1D83D6
+ cureifburnedparalysedorpoisoned BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_StatusNormal
@@ -2643,7 +2643,7 @@ MoveEffect_Grudge: @ 81D88DB
attackcanceler
attackstring
ppreduce
- setgrudge BattleScript_1D83D6
+ setgrudge BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_GrudgeBear
@@ -2740,7 +2740,7 @@ MoveEffect_WaterSport: @ 81D89D7
attackcanceler
attackstring
ppreduce
- settypebasedhalvers BattleScript_1D83D6
+ settypebasedhalvers BattleScript_ButItFailed
attackanimation
waitanimation
printfromtable BattleTextList_4015D4
@@ -2767,7 +2767,7 @@ MoveEffect_Tickle: @ 81D8A0A
jumpifstat TARGET, 0, 2, 0, BattleScript_1D8A7D
BattleScript_1D8A1F: @ 81D8A1F
- accuracycheck BattleScript_1D83D6, 0
+ accuracycheck BattleScript_ButItFailed, 0
attackanimation
waitanimation
setbyte 0x20160dc, 0
@@ -2924,7 +2924,7 @@ MoveEffect_Camouflage: @ 81D8C43
attackcanceler
attackstring
ppreduce
- settypetoterrain BattleScript_1D83D6
+ settypetoterrain BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TypeTransform
@@ -3364,7 +3364,7 @@ gUnknown_081D90B2:: @ 81D90B2
gUnknown_081D90F1:: @ 81D90F1
printstring BATTLE_TEXT_UnleashedEnergy
waitmessage 64
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
gUnknown_081D90FC:: @ 81D90FC
attackanimation
@@ -3385,7 +3385,7 @@ BattleScript_1D9116: @ 81D9116
atk52 TARGET
jump BattleScript_EndTurn
-gUnknown_081D9128:: @ 81D9128
+BattleScript_MistProtected:: @ 81D9128
pause 32
printstring BATTLE_TEXT_MistProtect
waitmessage 64
@@ -3531,17 +3531,17 @@ BattleScript_RapidSpinAway:: @ 81D92C0
breakfree
return
-gUnknown_081D92C2:: @ 81D92C2
+BattleScript_WrapFree:: @ 81D92C2
printstring BATTLE_TEXT_GotFreeFrom
waitmessage 64
return
-gUnknown_081D92C9:: @ 81D92C9
+BattleScript_LeechSeedFree:: @ 81D92C9
printstring BATTLE_TEXT_LeechShed
waitmessage 64
return
-gUnknown_081D92D0:: @ 81D92D0
+BattleScript_SpikesFree:: @ 81D92D0
printstring BATTLE_TEXT_SpikesBlownAway
waitmessage 64
return
@@ -4164,7 +4164,7 @@ BattleScript_1D988D: @ 81D988D
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D989B:: @ 81D989B
+BattleScript_AbilityNoStatLoss:: @ 81D989B
pause 32
printstring BATTLE_TEXT_PreventedStatLoss
waitmessage 64
@@ -4188,7 +4188,7 @@ BattleScript_PSNPrevention:: @ 81D98BD
waitmessage 64
return
-gUnknown_081D98C9:: @ 81D98C9
+BattleScript_ObliviousPreventsAttraction:: @ 81D98C9
pause 32
printstring BATTLE_TEXT_PreventedRomance
waitmessage 64
@@ -4214,7 +4214,7 @@ gUnknown_081D98F3:: @ 81D98F3
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D9903:: @ 81D9903
+BattleScript_AbilityNoSpecificStatLoss:: @ 81D9903
pause 32
printstring BATTLE_TEXT_PreventedLoss
waitmessage 64
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index 3f0dc8af1..b10b7f96f 100644
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -51,7 +51,7 @@ BattleScript_1D9EBC: @ 81D9EBC
atk98 1
pokemoncatchfunction
-gUnknown_081D9EC2:: @ 81D9EC2
+BattleScript_SuccessBallThrow:: @ 81D9EC2
jumpifhalfword 0, gLastUsedItem, 5, BattleScript_1D9ED0
atk60 11
@@ -76,12 +76,12 @@ BattleScript_1D9EF8: @ 81D9EF8
setbyte gBattleOutcome, 7
activesidesomething
-gUnknown_081D9F00:: @ 81D9F00
+BattleScript_WallyBallThrow:: @ 81D9F00
printstring BATTLE_TEXT_BallCaught2
setbyte gBattleOutcome, 7
activesidesomething
-gUnknown_081D9F0A:: @ 81D9F0A
+BattleScript_ShakeBallThrow:: @ 81D9F0A
printfromtable BattleTextList_4015E6
waitmessage 64
jumpifbyte 5, gBattleTypeFlags, 128, BattleScript_1D9F34
@@ -93,7 +93,7 @@ gUnknown_081D9F0A:: @ 81D9F0A
BattleScript_1D9F34: @ 81D9F34
atkf6
-gUnknown_081D9F35:: @ 81D9F35
+BattleScript_TrainerBallBlock:: @ 81D9F35
waitmessage 64
printstring BATTLE_TEXT_BlockBall
waitmessage 64
diff --git a/data/berry_tag_screen.s b/data/berry_tag_screen.s
deleted file mode 100644
index d1be8a9d7..000000000
--- a/data/berry_tag_screen.s
+++ /dev/null
@@ -1,12 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_0841192C:: @ 841192C
- .4byte ContestStatsText_VerySoft
- .4byte ContestStatsText_Soft
- .4byte ContestStatsText_Hard
- .4byte ContestStatsText_VeryHard
- .4byte ContestStatsText_SuperHard
diff --git a/data/crc16_table.inc b/data/crc16_table.inc
deleted file mode 100644
index a1f8babd0..000000000
--- a/data/crc16_table.inc
+++ /dev/null
@@ -1,34 +0,0 @@
- .align 1
-gCrc16Table:: @ 82087DC
- .2byte 0x0000, 0x1189, 0x2312, 0x329B, 0x4624, 0x57AD, 0x6536, 0x74BF
- .2byte 0x8C48, 0x9DC1, 0xAF5A, 0xBED3, 0xCA6C, 0xDBE5, 0xE97E, 0xF8F7
- .2byte 0x1081, 0x0108, 0x3393, 0x221A, 0x56A5, 0x472C, 0x75B7, 0x643E
- .2byte 0x9CC9, 0x8D40, 0xBFDB, 0xAE52, 0xDAED, 0xCB64, 0xF9FF, 0xE876
- .2byte 0x2102, 0x308B, 0x0210, 0x1399, 0x6726, 0x76AF, 0x4434, 0x55BD
- .2byte 0xAD4A, 0xBCC3, 0x8E58, 0x9FD1, 0xEB6E, 0xFAE7, 0xC87C, 0xD9F5
- .2byte 0x3183, 0x200A, 0x1291, 0x0318, 0x77A7, 0x662E, 0x54B5, 0x453C
- .2byte 0xBDCB, 0xAC42, 0x9ED9, 0x8F50, 0xFBEF, 0xEA66, 0xD8FD, 0xC974
- .2byte 0x4204, 0x538D, 0x6116, 0x709F, 0x0420, 0x15A9, 0x2732, 0x36BB
- .2byte 0xCE4C, 0xDFC5, 0xED5E, 0xFCD7, 0x8868, 0x99E1, 0xAB7A, 0xBAF3
- .2byte 0x5285, 0x430C, 0x7197, 0x601E, 0x14A1, 0x0528, 0x37B3, 0x263A
- .2byte 0xDECD, 0xCF44, 0xFDDF, 0xEC56, 0x98E9, 0x8960, 0xBBFB, 0xAA72
- .2byte 0x6306, 0x728F, 0x4014, 0x519D, 0x2522, 0x34AB, 0x0630, 0x17B9
- .2byte 0xEF4E, 0xFEC7, 0xCC5C, 0xDDD5, 0xA96A, 0xB8E3, 0x8A78, 0x9BF1
- .2byte 0x7387, 0x620E, 0x5095, 0x411C, 0x35A3, 0x242A, 0x16B1, 0x0738
- .2byte 0xFFCF, 0xEE46, 0xDCDD, 0xCD54, 0xB9EB, 0xA862, 0x9AF9, 0x8B70
- .2byte 0x8408, 0x9581, 0xA71A, 0xB693, 0xC22C, 0xD3A5, 0xE13E, 0xF0B7
- .2byte 0x0840, 0x19C9, 0x2B52, 0x3ADB, 0x4E64, 0x5FED, 0x6D76, 0x7CFF
- .2byte 0x9489, 0x8500, 0xB79B, 0xA612, 0xD2AD, 0xC324, 0xF1BF, 0xE036
- .2byte 0x18C1, 0x0948, 0x3BD3, 0x2A5A, 0x5EE5, 0x4F6C, 0x7DF7, 0x6C7E
- .2byte 0xA50A, 0xB483, 0x8618, 0x9791, 0xE32E, 0xF2A7, 0xC03C, 0xD1B5
- .2byte 0x2942, 0x38CB, 0x0A50, 0x1BD9, 0x6F66, 0x7EEF, 0x4C74, 0x5DFD
- .2byte 0xB58B, 0xA402, 0x9699, 0x8710, 0xF3AF, 0xE226, 0xD0BD, 0xC134
- .2byte 0x39C3, 0x284A, 0x1AD1, 0x0B58, 0x7FE7, 0x6E6E, 0x5CF5, 0x4D7C
- .2byte 0xC60C, 0xD785, 0xE51E, 0xF497, 0x8028, 0x91A1, 0xA33A, 0xB2B3
- .2byte 0x4A44, 0x5BCD, 0x6956, 0x78DF, 0x0C60, 0x1DE9, 0x2F72, 0x3EFB
- .2byte 0xD68D, 0xC704, 0xF59F, 0xE416, 0x90A9, 0x8120, 0xB3BB, 0xA232
- .2byte 0x5AC5, 0x4B4C, 0x79D7, 0x685E, 0x1CE1, 0x0D68, 0x3FF3, 0x2E7A
- .2byte 0xE70E, 0xF687, 0xC41C, 0xD595, 0xA12A, 0xB0A3, 0x8238, 0x93B1
- .2byte 0x6B46, 0x7ACF, 0x4854, 0x59DD, 0x2D62, 0x3CEB, 0x0E70, 0x1FF9
- .2byte 0xF78F, 0xE606, 0xD49D, 0xC514, 0xB1AB, 0xA022, 0x92B9, 0x8330
- .2byte 0x7BC7, 0x6A4E, 0x58D5, 0x495C, 0x3DE3, 0x2C6A, 0x1EF1, 0x0F78
diff --git a/data/data2.s b/data/data2a.s
index 00ef5c26e..db2158fc7 100644
--- a/data/data2.s
+++ b/data/data2a.s
@@ -1027,778 +1027,3 @@ gUnknown_081FA724:: @ 81FA724
.2byte 0x140
.2byte 0x130
.2byte 0xFFFF
-
- .align 2
-gBattleScriptingCommandsTable:: @ 81FA73C
- .4byte atk00_attackcanceler
- .4byte atk01_accuracycheck
- .4byte atk02_attackstring
- .4byte atk03_ppreduce
- .4byte atk04_critcalc
- .4byte atk05_damagecalc1
- .4byte atk06_typecalc
- .4byte atk07_dmg_adjustment
- .4byte atk08_dmg_adjustment2
- .4byte atk09_attackanimation
- .4byte atk0A_waitanimation
- .4byte atk0B_healthbarupdate
- .4byte atk0C_datahpupdate
- .4byte atk0D_critmessage
- .4byte atk0E_effectiveness_sound
- .4byte atk0F_resultmessage
- .4byte atk10_printstring
- .4byte atk11_printstring_playeronly
- .4byte atk12_waitmessage
- .4byte atk13_printfromtable
- .4byte atk14_printfromtable_playeronly
- .4byte atk15_seteffectwithchancetarget
- .4byte atk16_seteffectprimary
- .4byte atk17_seteffectsecondary
- .4byte atk18_status_effect_clear
- .4byte atk19_faint_pokemon
- .4byte atk1A_faint_animation
- .4byte atk1B_faint_effects_clear
- .4byte atk1C_jumpifstatus
- .4byte atk1D_jumpifstatus2
- .4byte atk1E_jumpifability
- .4byte atk1F_jumpifsideaffecting
- .4byte atk20_jumpifstat
- .4byte atk21_jumpifstatus3
- .4byte atk22_jumpiftype
- .4byte atk23_getexp
- .4byte atk24
- .4byte atk25_move_values_cleanup
- .4byte atk26_set_multihit
- .4byte atk27_decrement_multihit
- .4byte atk28_goto
- .4byte atk29_jumpifbyte
- .4byte atk2A_jumpifhalfword
- .4byte atk2B_jumpifword
- .4byte atk2C_jumpifarrayequal
- .4byte atk2D_jumpifarraynotequal
- .4byte atk2E_setbyte
- .4byte atk2F_addbyte
- .4byte atk30_subbyte
- .4byte atk31_copyarray
- .4byte atk32_copyarray_withindex
- .4byte atk33_orbyte
- .4byte atk34_orhalfword
- .4byte atk35_orword
- .4byte atk36_bicbyte
- .4byte atk37_bichalfword
- .4byte atk38_bicword
- .4byte atk39_pause
- .4byte atk3A_waitstate
- .4byte atk3B_healthbar_update
- .4byte atk3C_return
- .4byte atk3D_end
- .4byte atk3E_end2
- .4byte atk3F_end3
- .4byte atk40_jump_if_move_affected_by_protect
- .4byte atk41_call
- .4byte atk42_jumpiftype2
- .4byte atk43_jumpifabilitypresent
- .4byte atk44
- .4byte atk45_playanimation
- .4byte atk46_playanimation2
- .4byte atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues
- .4byte atk48_playstatchangeanimation
- .4byte sub_80217F8
- .4byte atk4A_damageflags
- .4byte atk4B_cmd4b
- .4byte atk4C_switch1
- .4byte sub_80225F0
- .4byte sub_8022784
- .4byte sub_8022830
- .4byte atk50_openpartyscreen
- .4byte sub_802331C
- .4byte sub_8023524
- .4byte sub_80237CC
- .4byte atk54_802511C
- .4byte sub_8023848
- .4byte atk56_8025194
- .4byte atk57_80251C4_flee
- .4byte atk58_cmd58
- .4byte atk59_8025230
- .4byte sub_8023AF8
- .4byte atk5B_80256E0
- .4byte atk5C_cmd5c
- .4byte sub_8024014
- .4byte atk5E_8025A70
- .4byte atk5F_8025B24
- .4byte atk60_cmd60
- .4byte atk61_8025BA4
- .4byte atk62_08025C6C
- .4byte atk63_jumptoattack
- .4byte atk64_statusanimation
- .4byte atk65_8025D90
- .4byte atk66_8025E38
- .4byte atk67_8025ECC
- .4byte sub_80246A0
- .4byte atk69_8025FE0
- .4byte atk6A_stash_item_for_side
- .4byte sub_80248C0
- .4byte sub_80248FC
- .4byte sub_8024C4C
- .4byte atk6E_state0_side_becomes_attacker
- .4byte atk6F_8026810
- .4byte atk70_record_ability_usage_of_side
- .4byte atk71_80268A0
- .4byte atk72_flee
- .4byte atk73_cmd73
- .4byte atk74_hp_tresholds_2
- .4byte atk75_8026A58
- .4byte sub_8024F40
- .4byte atk77_setprotect
- .4byte atk78_faintifabilitynotdamp
- .4byte atk79_setuserhptozero
- .4byte sub_80253E8
- .4byte sub_802548C
- .4byte sub_8025508
- .4byte sub_80256D0
- .4byte atk7E_setreflect
- .4byte sub_80257DC
- .4byte atk80_manipulatedamage
- .4byte atk81_setrest
- .4byte atk82_jumpifnotfirstturn
- .4byte sub_8025A34
- .4byte sub_8025AE0
- .4byte sub_8025B5C
- .4byte atk86_stockpiletobasedamage
- .4byte sub_8025D00
- .4byte atk88_negativedamage
- .4byte atk89_statbuffchange
- .4byte atk8A_normalisebuffs
- .4byte atk8B_setbide
- .4byte atk8C_confuseifrepeatingattackends
- .4byte atk8D_setloopcounter
- .4byte sub_8026468
- .4byte sub_8026590
- .4byte sub_802688C
- .4byte atk91_givemoney
- .4byte atk92_setlightscreen
- .4byte sub_8026B78
- .4byte atk94_gethalfcurrentenemyhp
- .4byte sub_8026E94
- .4byte sub_8026EEC
- .4byte sub_8027064
- .4byte sub_8027238
- .4byte sub_8027348
- .4byte atk9A_setincreasedcriticalchance
- .4byte atk9B_transformdataexecution
- .4byte sub_80275D8
- .4byte atk9D_copyattack
- .4byte sub_80278B8
- .4byte sub_8027960
- .4byte atkA0_psywavedamageeffect
- .4byte atkA1_counterdamagecalculator
- .4byte atkA2_mirrorcoatdamagecalculator
- .4byte atkA3_disablelastusedattack
- .4byte atkA4_setencore
- .4byte sub_8027E4C
- .4byte sub_8027F44
- .4byte atkA7_setalwayshitflag
- .4byte atkA8_copymovepermanently
- .4byte sub_8028420
- .4byte sub_8028558
- .4byte atkAB_802A458
- .4byte atkAC_remaininghptopower
- .4byte sub_8028668
- .4byte sub_8028858
- .4byte sub_8028AD4
- .4byte sub_8028B70
- .4byte sub_8028BFC
- .4byte atkB2_setperishsong
- .4byte atkB3_rolloutdamagecalculation
- .4byte atkB4_jumpifconfusedandattackmaxed
- .4byte sub_8028EC8
- .4byte atkB6_happinesstodamagecalculation
- .4byte atkB7_presentdamagecalculation
- .4byte sub_80290BC
- .4byte atkB9_magnitudedamagecalculation
- .4byte sub_8029270
- .4byte sub_80293E8
- .4byte atkBC_maxattackhalvehp
- .4byte atkBD_copyfoestats
- .4byte atkBE_breakfree
- .4byte sub_802964C
- .4byte atkC0_recoverbasedonsunlight
- .4byte sub_8029784
- .4byte atkC2_selectnexttarget
- .4byte atkC3_setfutureattack
- .4byte atkC4_802B910
- .4byte atkC5_hidepreattack
- .4byte atkC6_unhidepostattack
- .4byte atkC7_setminimize
- .4byte sub_8029DAC
- .4byte atkC9_jumpifattackandspecialattackcannotfall
- .4byte atkCA_setforcedtarget
- .4byte atkCB_setcharge
- .4byte atkCC_callterrainattack
- .4byte atkCD_cureifburnedparalysedorpoisoned
- .4byte atkCE_settorment
- .4byte atkCF_jumpifnodamage
- .4byte atkD0_settaunt
- .4byte sub_802A170
- .4byte sub_802A218
- .4byte sub_802A4B0
- .4byte atkD4_802C408
- .4byte sub_802A5FC
- .4byte atkD6_doubledamagedealtifdamaged
- .4byte sub_802A6BC
- .4byte atkD8_setdamagetohealthdifference
- .4byte atkD9_scaledamagebyhealthratio
- .4byte atkDA_abilityswap
- .4byte atkDB_imprisoneffect
- .4byte atkDC_setgrudge
- .4byte atkDD_weightdamagecalculation
- .4byte atkDE_asistattackselect
- .4byte atkDF_setmagiccoat
- .4byte atkE0_setstealstatchange
- .4byte atkE1_802CBE4
- .4byte sub_802ADD8
- .4byte atkE3_jumpiffainted
- .4byte sub_802AEB0
- .4byte sub_802AF68
- .4byte atkE6_castform_transform
- .4byte atkE7_castform_switch
- .4byte atkE8_settypebasedhalvers
- .4byte sub_802B1C0
- .4byte atkEA_recycleitem
- .4byte atkEB_settypetoterrain
- .4byte sub_802B3E0
- .4byte sub_802B4B4
- .4byte sub_802B51C
- .4byte sub_802B5B8
- .4byte sub_802B960
- .4byte sub_802B9E0
- .4byte sub_802BA90
- .4byte atkF3_receive_new_pokemon_maybe
- .4byte sub_802BEF0
- .4byte sub_802BF20
- .4byte sub_802BF48
- .4byte sub_802BF54
-
- .align 2
-gAccuracyStageRatios:: @ 81FAB1C
- .byte 33, 100, 0, 0 @ -6
- .byte 36, 100, 0, 0 @ -5
- .byte 43, 100, 0, 0 @ -4
- .byte 50, 100, 0, 0 @ -3
- .byte 60, 100, 0, 0 @ -2
- .byte 75, 100, 0, 0 @ -1
- .byte 1, 1, 0, 0 @ 0
- .byte 133, 100, 0, 0 @ +1
- .byte 166, 100, 0, 0 @ +2
- .byte 2, 1, 0, 0 @ +3
- .byte 233, 100, 0, 0 @ +4
- .byte 133, 50, 0, 0 @ +5
- .byte 3, 1, 0, 0 @ +6
-
-@ The chance is 1/N for each stage.
- .align 1
-gCriticalHitChance:: @ 81FAB50
- .2byte 16 @ +0
- .2byte 8 @ +1
- .2byte 4 @ +2
- .2byte 3 @ +3
- .2byte 2 @ +4
-
- .align 2
-gStatusFlagsForMoveEffects:: @ 81FAB5C
- .4byte 0x00000000
- .4byte 0x00000007
- .4byte 0x00000008
- .4byte 0x00000010
- .4byte 0x00000020
- .4byte 0x00000040
- .4byte 0x00000080
- .4byte 0x00000007
- .4byte 0x00000008
- .4byte 0x00000000
- .4byte 0x00000070
- .4byte 0x00000000
- .4byte 0x00001000
- .4byte 0x0000E000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00400000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x04000000
- .4byte 0x08000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000C00
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
-
- .align 2
-gMoveEffectBS_Ptrs:: @ 81FAC4C
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D965A
- .4byte BattleScript_1D9669
- .4byte BattleScript_1D9678
- .4byte BattleScript_1D9687
- .4byte BattleScript_1D969D
- .4byte BattleScript_1D96BA
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D9696
- .4byte BattleScript_1D96AA
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D96B1
- .4byte BattleScript_1D96C8
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D96C8
-
-@ unreferenced bit masks
- .byte 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F
-
-gLevelUpStatBoxStats:: @ 81FACEF
- .byte 0x3A @ HP
- .byte 0x3E @ Sp. Attack
- .byte 0x3B @ Attack
- .byte 0x3F @ Sp. Defense
- .byte 0x3C @ Defense
- .byte 0x3D @ Speed
-
- .align 1
-gProtectSuccessRates:: @ 81FACF6
- .2byte 0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF
-
- .align 1
-gUnknown_081FACFE:: @ 81FACFE
- .2byte MOVE_METRONOME
- .2byte MOVE_STRUGGLE
- .2byte MOVE_SKETCH
- .2byte MOVE_MIMIC
- .2byte 0xFFFE
- .2byte MOVE_COUNTER
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_PROTECT
- .2byte MOVE_DETECT
- .2byte MOVE_ENDURE
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_THIEF
- .2byte MOVE_FOLLOW_ME
- .2byte MOVE_SNATCH
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_COVET
- .2byte MOVE_TRICK
- .2byte MOVE_FOCUS_PUNCH
- .2byte 0xFFFF
-
-gUnknown_081FAD26:: @ 81FAD26
- .byte 1, 200
- .byte 4, 150
- .byte 9, 100
- .byte 16, 80
- .byte 32, 40
- .byte 48, 20
-
- .align 1
-gNaturePowerMoves:: @ 81FAD32
- .2byte MOVE_STUN_SPORE
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_EARTHQUAKE
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_SURF
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SHADOW_BALL
- .2byte MOVE_SWIFT
- .2byte MOVE_SWIFT
-
-@ weight-based damage table for Low Kick
-@ format: min. weight (hectograms), base power
-
- .align 1
-gWeightDamage:: @ 81FAD46
- .2byte 100, 20
- .2byte 250, 40
- .2byte 500, 60
- .2byte 1000, 80
- .2byte 2000, 100
- .2byte -1, -1
-
- .align 1
-gPickupItems:: @ 81FAD5E
- .2byte ITEM_SUPER_POTION, 30
- .2byte ITEM_FULL_HEAL, 40
- .2byte ITEM_ULTRA_BALL, 50
- .2byte ITEM_RARE_CANDY, 60
- .2byte ITEM_FULL_RESTORE, 70
- .2byte ITEM_REVIVE, 80
- .2byte ITEM_NUGGET, 90
- .2byte ITEM_PROTEIN, 95
- .2byte ITEM_PP_UP, 99
- .2byte ITEM_KINGS_ROCK, 1
-
-gTerrainToType:: @ 81FAD86
- .byte TYPE_GRASS @ tall grass
- .byte TYPE_GRASS @ long grass
- .byte TYPE_GROUND @ sand
- .byte TYPE_WATER @ underwater
- .byte TYPE_WATER @ water
- .byte TYPE_WATER @ pond water
- .byte TYPE_ROCK @ rock
- .byte TYPE_ROCK @ cave
- .byte TYPE_NORMAL @ building
- .byte TYPE_NORMAL @ plain
-
-gBallCatchBonuses:: @ 81FAD90
- .byte 20 @ Ultra Ball
- .byte 15 @ Great Ball
- .byte 10 @ Poké Ball
- .byte 15 @ Safari Ball
-
- .string "ターン$" @ "turn"
-
- .align 2
-gPlayerBufferCommands:: @ 81FAD98
- .4byte PlayerHandleGetAttributes
- .4byte sub_802ECF0
- .4byte PlayerHandleSetAttributes
- .4byte sub_802F7CC
- .4byte PlayerHandleLoadPokeSprite
- .4byte PlayerHandleSendOutPoke
- .4byte PlayerHandleReturnPokeToBall
- .4byte PlayerHandleTrainerThrow
- .4byte PlayerHandleTrainerSlide
- .4byte PlayerHandleTrainerSlideBack
- .4byte sub_802FE7C
- .4byte sub_802FF60
- .4byte sub_802FF80
- .4byte PlayerHandleBallThrow
- .4byte PlayerHandlePuase
- .4byte PlayerHandleMoveAnimation
- .4byte PlayerHandlePrintString
- .4byte PlayerHandlePrintStringPlayerOnly
- .4byte sub_803037C
- .4byte nullsub_42
- .4byte sub_8030468
- .4byte PlayerHandleOpenBag
- .4byte sub_8030594
- .4byte sub_8030674
- .4byte PlayerHandleHealthBarUpdate
- .4byte PlayerHandleExpBarUpdate
- .4byte PlayerHandleStatusIconUpdate
- .4byte PlayerHandleStatusAnimation
- .4byte PlayerHandleStatusXor
- .4byte sub_803097C
- .4byte PlayerHandleDMATransfer
- .4byte sub_8030A3C
- .4byte sub_8030A6C
- .4byte sub_8030A78
- .4byte sub_8030A8C
- .4byte sub_8030AA0
- .4byte sub_8030AB4
- .4byte sub_8030AC8
- .4byte sub_8030AE4
- .4byte sub_8030B1C
- .4byte sub_8030B34
- .4byte PlayerHandleHitAnimation
- .4byte sub_8030BCC
- .4byte PlayerHandleEffectivenessSound
- .4byte sub_8030C1C
- .4byte PlayerHandleFaintingCry
- .4byte PlayerHandleIntroSlide
- .4byte PlayerHandleTrainerBallThrow
- .4byte sub_8030FAC
- .4byte sub_80310A4
- .4byte sub_80310F0
- .4byte PlayerHandleSpriteInvisibility
- .4byte PlayerHandleBattleAnimation
- .4byte PlayerHandleLinkStandbyMsg
- .4byte PlayerHandleResetActionMoveSelection
- .4byte sub_80312A0
- .4byte nullsub_43
-
-gUnknown_081FAE7C:: @ 81FAE7C
- .byte 0, 2, 3, 1
-
-gUnknown_081FAE80:: @ 81FAE80
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}$"
-
-gUnknown_081FAE89:: @ 81FAE89
- .byte 8, 120
- .byte 88, 120
- .byte 8, 136
- .byte 88, 136
-
-gUnknown_081FAE91:: @ 81FAE91
- .byte 144, 120
- .byte 190, 120
- .byte 144, 136
- .byte 190, 136
- .byte 72, 72
- .byte 32, 90
- .byte 80, 80
- .byte 80, 88
-
- .align 2
-gUnknown_081FAEA4:: @ 81FAEA4
- obj_tiles gSmokescreenImpactTiles, 0x180, 55019
-
- .align 2
-gUnknown_081FAEAC:: @ 81FAEAC
- obj_pal gSmokescreenImpactPalette, 55019
-
- .align 2
-gOamData_81FAEB4:: @ 81FAEB4
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_81FAEBC:: @ 81FAEBC
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 4, 4
- obj_image_anim_frame 8, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_81FAECC:: @ 81FAECC
- obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_81FAEDC:: @ 81FAEDC
- obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_81FAEEC:: @ 81FAEEC
- obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_81FAEFC:: @ 81FAEFC
- .4byte gSpriteAnim_81FAEBC
- .4byte gSpriteAnim_81FAECC
- .4byte gSpriteAnim_81FAEDC
- .4byte gSpriteAnim_81FAEEC
-
- .align 2
-gSpriteTemplate_81FAF0C:: @ 81FAF0C
- spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC
-
- .align 2
-gUnknown_081FAF24:: @ 81FAF24
- obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759
-
- .align 2
-gOamData_81FAF2C:: @ 81FAF2C
- .2byte 0x4000
- .2byte 0x4000
- .2byte 0x0C00
-
- .align 2
-gSpriteTemplate_81FAF34:: @ 81FAF34
- spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978
-
- .align 2
-gUnknown_081FAF4C:: @ 81FAF4C
- .4byte 0x02008000
- .4byte 0x0200a000
- .4byte 0x0200c000
- .4byte 0x0200e000
-
- .align 2
-gOpponentBufferCommands:: @ 81FAF5C
- .4byte OpponentHandleGetAttributes
- .4byte dp01t_01_2_read_pokmon_data_slice
- .4byte OpponentHandleSetAttributes
- .4byte sub_8034744
- .4byte OpponentHandleLoadPokeSprite
- .4byte OpponentHandleSendOutPoke
- .4byte OpponentHandleReturnPokeToBall
- .4byte OpponentHandleTrainerThrow
- .4byte OpponentHandleTrainerSlide
- .4byte OpponentHandleTrainerSlideBack
- .4byte sub_8035030
- .4byte sub_80350D4
- .4byte sub_80350E0
- .4byte OpponentHandleBallThrow
- .4byte OpponentHandlePause
- .4byte OpponentHandleMoveAnimation
- .4byte OpponentHandlePrintString
- .4byte OpponentHandlePrintStringPlayerOnly
- .4byte sub_803540C
- .4byte sub_803541C
- .4byte sub_8035428
- .4byte sub_8035590
- .4byte sub_80355C0
- .4byte sub_80356C0
- .4byte OpponentHandleHealthBarUpdate
- .4byte OpponentHandleExpBarUpdate
- .4byte OpponentHandleStatusIconUpdate
- .4byte OpponentHandleStatusAnimation
- .4byte OpponentHandleStatusXor
- .4byte sub_80358B0
- .4byte OpponentHandleDMATransfer
- .4byte sub_80358C8
- .4byte sub_80358D4
- .4byte sub_80358E0
- .4byte sub_80358EC
- .4byte sub_80358F8
- .4byte sub_8035904
- .4byte sub_8035910
- .4byte sub_803592C
- .4byte sub_8035964
- .4byte sub_803597C
- .4byte OpponentHandleHitAnimation
- .4byte sub_8035A14
- .4byte OpponentHandleEffectivenessSound
- .4byte sub_8035A64
- .4byte OpponentHandleFaintingCry
- .4byte dp01t_2E_7_battle_intro
- .4byte sub_8035B04
- .4byte dp01t_30_7_0803D67C
- .4byte sub_8035E6C
- .4byte sub_8035EB8
- .4byte OpponentHandleSpriteInvisibility
- .4byte OpponentHandleBattleAnimation
- .4byte OpponentHandleLinkStandbyMsg
- .4byte OpponentHandleResetActionMoveSelection
- .4byte sub_8035FA4
- .4byte nullsub_46
-
-@ unreferenced unknown values
- .byte 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20
-
- .align 2
-gLinkOpponentBufferCommands:: @ 81FB048
- .4byte LinkOpponentHandleGetAttributes
- .4byte sub_803889C
- .4byte sub_80388A8
- .4byte sub_8039220
- .4byte sub_8039294
- .4byte sub_80393E4
- .4byte sub_80395B4
- .4byte sub_80396D0
- .4byte sub_80398A4
- .4byte sub_80398B0
- .4byte sub_803995C
- .4byte sub_8039A00
- .4byte sub_8039A0C
- .4byte sub_8039A18
- .4byte sub_8039A24
- .4byte sub_8039A30
- .4byte sub_8039CC8
- .4byte sub_8039D2C
- .4byte sub_8039D38
- .4byte sub_8039D44
- .4byte sub_8039D50
- .4byte sub_8039D5C
- .4byte sub_8039D68
- .4byte sub_8039D74
- .4byte sub_8039D80
- .4byte sub_8039E70
- .4byte sub_8039E7C
- .4byte sub_8039EF0
- .4byte sub_8039F58
- .4byte sub_8039F64
- .4byte sub_8039F70
- .4byte sub_8039F7C
- .4byte sub_8039F88
- .4byte sub_8039F94
- .4byte sub_8039FA0
- .4byte sub_8039FAC
- .4byte sub_8039FB8
- .4byte sub_8039FC4
- .4byte sub_8039FE0
- .4byte sub_803A018
- .4byte sub_803A030
- .4byte dp01t_29_4_blink
- .4byte sub_803A0C8
- .4byte sub_803A0D4
- .4byte sub_803A118
- .4byte sub_803A148
- .4byte dp01t_2E_4_battle_intro
- .4byte sub_803A1B8
- .4byte sub_803A3DC
- .4byte sub_803A520
- .4byte sub_803A56C
- .4byte sub_803A578
- .4byte bx_exec_buffer_A_ch0_tbl4
- .4byte sub_803A640
- .4byte sub_803A64C
- .4byte sub_803A658
- .4byte nullsub_48
-
-@ 81FB12C
- .include "data/battle_moves.inc"
-
- .align 2
-gUnknown_081FC1D0:: @ 81FC1D0
- .2byte 0x34, 0x10, 0x101
- .space 2
-
- .2byte -1, -1, -1
- .space 2
diff --git a/data/data2b.s b/data/data2b.s
new file mode 100644
index 000000000..ef16eaa25
--- /dev/null
+++ b/data/data2b.s
@@ -0,0 +1,296 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .string "ターン$" @ "turn"
+
+ .align 2
+gPlayerBufferCommands:: @ 81FAD98
+ .4byte PlayerHandleGetAttributes
+ .4byte sub_802ECF0
+ .4byte PlayerHandleSetAttributes
+ .4byte sub_802F7CC
+ .4byte PlayerHandleLoadPokeSprite
+ .4byte PlayerHandleSendOutPoke
+ .4byte PlayerHandleReturnPokeToBall
+ .4byte PlayerHandleTrainerThrow
+ .4byte PlayerHandleTrainerSlide
+ .4byte PlayerHandleTrainerSlideBack
+ .4byte sub_802FE7C
+ .4byte sub_802FF60
+ .4byte sub_802FF80
+ .4byte PlayerHandleBallThrow
+ .4byte PlayerHandlePuase
+ .4byte PlayerHandleMoveAnimation
+ .4byte PlayerHandlePrintString
+ .4byte PlayerHandlePrintStringPlayerOnly
+ .4byte sub_803037C
+ .4byte nullsub_42
+ .4byte sub_8030468
+ .4byte PlayerHandleOpenBag
+ .4byte sub_8030594
+ .4byte sub_8030674
+ .4byte PlayerHandleHealthBarUpdate
+ .4byte PlayerHandleExpBarUpdate
+ .4byte PlayerHandleStatusIconUpdate
+ .4byte PlayerHandleStatusAnimation
+ .4byte PlayerHandleStatusXor
+ .4byte sub_803097C
+ .4byte PlayerHandleDMATransfer
+ .4byte sub_8030A3C
+ .4byte sub_8030A6C
+ .4byte sub_8030A78
+ .4byte sub_8030A8C
+ .4byte sub_8030AA0
+ .4byte sub_8030AB4
+ .4byte sub_8030AC8
+ .4byte sub_8030AE4
+ .4byte sub_8030B1C
+ .4byte sub_8030B34
+ .4byte PlayerHandleHitAnimation
+ .4byte sub_8030BCC
+ .4byte PlayerHandleEffectivenessSound
+ .4byte sub_8030C1C
+ .4byte PlayerHandleFaintingCry
+ .4byte PlayerHandleIntroSlide
+ .4byte PlayerHandleTrainerBallThrow
+ .4byte sub_8030FAC
+ .4byte sub_80310A4
+ .4byte sub_80310F0
+ .4byte PlayerHandleSpriteInvisibility
+ .4byte PlayerHandleBattleAnimation
+ .4byte PlayerHandleLinkStandbyMsg
+ .4byte PlayerHandleResetActionMoveSelection
+ .4byte sub_80312A0
+ .4byte nullsub_43
+
+gUnknown_081FAE7C:: @ 81FAE7C
+ .byte 0, 2, 3, 1
+
+gUnknown_081FAE80:: @ 81FAE80
+ .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}$"
+
+gUnknown_081FAE89:: @ 81FAE89
+ .byte 8, 120
+ .byte 88, 120
+ .byte 8, 136
+ .byte 88, 136
+
+gUnknown_081FAE91:: @ 81FAE91
+ .byte 144, 120
+ .byte 190, 120
+ .byte 144, 136
+ .byte 190, 136
+ .byte 72, 72
+ .byte 32, 90
+ .byte 80, 80
+ .byte 80, 88
+
+ .align 2
+gUnknown_081FAEA4:: @ 81FAEA4
+ obj_tiles gSmokescreenImpactTiles, 0x180, 55019
+
+ .align 2
+gUnknown_081FAEAC:: @ 81FAEAC
+ obj_pal gSmokescreenImpactPalette, 55019
+
+ .align 2
+gOamData_81FAEB4:: @ 81FAEB4
+ .2byte 0x0000
+ .2byte 0x4000
+ .2byte 0x0400
+
+ .align 2
+gSpriteAnim_81FAEBC:: @ 81FAEBC
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 4, 4
+ obj_image_anim_frame 8, 4
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnim_81FAECC:: @ 81FAECC
+ obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnim_81FAEDC:: @ 81FAEDC
+ obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP
+ obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP
+ obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnim_81FAEEC:: @ 81FAEEC
+ obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnimTable_81FAEFC:: @ 81FAEFC
+ .4byte gSpriteAnim_81FAEBC
+ .4byte gSpriteAnim_81FAECC
+ .4byte gSpriteAnim_81FAEDC
+ .4byte gSpriteAnim_81FAEEC
+
+ .align 2
+gSpriteTemplate_81FAF0C:: @ 81FAF0C
+ spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC
+
+ .align 2
+gUnknown_081FAF24:: @ 81FAF24
+ obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759
+
+ .align 2
+gOamData_81FAF2C:: @ 81FAF2C
+ .2byte 0x4000
+ .2byte 0x4000
+ .2byte 0x0C00
+
+ .align 2
+gSpriteTemplate_81FAF34:: @ 81FAF34
+ spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978
+
+ .align 2
+gUnknown_081FAF4C:: @ 81FAF4C
+ .4byte 0x02008000
+ .4byte 0x0200a000
+ .4byte 0x0200c000
+ .4byte 0x0200e000
+
+ .align 2
+gOpponentBufferCommands:: @ 81FAF5C
+ .4byte OpponentHandleGetAttributes
+ .4byte dp01t_01_2_read_pokmon_data_slice
+ .4byte OpponentHandleSetAttributes
+ .4byte sub_8034744
+ .4byte OpponentHandleLoadPokeSprite
+ .4byte OpponentHandleSendOutPoke
+ .4byte OpponentHandleReturnPokeToBall
+ .4byte OpponentHandleTrainerThrow
+ .4byte OpponentHandleTrainerSlide
+ .4byte OpponentHandleTrainerSlideBack
+ .4byte sub_8035030
+ .4byte sub_80350D4
+ .4byte sub_80350E0
+ .4byte OpponentHandleBallThrow
+ .4byte OpponentHandlePause
+ .4byte OpponentHandleMoveAnimation
+ .4byte OpponentHandlePrintString
+ .4byte OpponentHandlePrintStringPlayerOnly
+ .4byte sub_803540C
+ .4byte sub_803541C
+ .4byte sub_8035428
+ .4byte sub_8035590
+ .4byte sub_80355C0
+ .4byte sub_80356C0
+ .4byte OpponentHandleHealthBarUpdate
+ .4byte OpponentHandleExpBarUpdate
+ .4byte OpponentHandleStatusIconUpdate
+ .4byte OpponentHandleStatusAnimation
+ .4byte OpponentHandleStatusXor
+ .4byte sub_80358B0
+ .4byte OpponentHandleDMATransfer
+ .4byte sub_80358C8
+ .4byte sub_80358D4
+ .4byte sub_80358E0
+ .4byte sub_80358EC
+ .4byte sub_80358F8
+ .4byte sub_8035904
+ .4byte sub_8035910
+ .4byte sub_803592C
+ .4byte sub_8035964
+ .4byte sub_803597C
+ .4byte OpponentHandleHitAnimation
+ .4byte sub_8035A14
+ .4byte OpponentHandleEffectivenessSound
+ .4byte sub_8035A64
+ .4byte OpponentHandleFaintingCry
+ .4byte dp01t_2E_7_battle_intro
+ .4byte sub_8035B04
+ .4byte dp01t_30_7_0803D67C
+ .4byte sub_8035E6C
+ .4byte sub_8035EB8
+ .4byte OpponentHandleSpriteInvisibility
+ .4byte OpponentHandleBattleAnimation
+ .4byte OpponentHandleLinkStandbyMsg
+ .4byte OpponentHandleResetActionMoveSelection
+ .4byte sub_8035FA4
+ .4byte nullsub_46
+
+@ unreferenced unknown values
+ .byte 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20
+
+ .align 2
+gLinkOpponentBufferCommands:: @ 81FB048
+ .4byte LinkOpponentHandleGetAttributes
+ .4byte sub_803889C
+ .4byte sub_80388A8
+ .4byte sub_8039220
+ .4byte sub_8039294
+ .4byte sub_80393E4
+ .4byte sub_80395B4
+ .4byte sub_80396D0
+ .4byte sub_80398A4
+ .4byte sub_80398B0
+ .4byte sub_803995C
+ .4byte sub_8039A00
+ .4byte sub_8039A0C
+ .4byte sub_8039A18
+ .4byte sub_8039A24
+ .4byte sub_8039A30
+ .4byte sub_8039CC8
+ .4byte sub_8039D2C
+ .4byte sub_8039D38
+ .4byte sub_8039D44
+ .4byte sub_8039D50
+ .4byte sub_8039D5C
+ .4byte sub_8039D68
+ .4byte sub_8039D74
+ .4byte sub_8039D80
+ .4byte sub_8039E70
+ .4byte sub_8039E7C
+ .4byte sub_8039EF0
+ .4byte sub_8039F58
+ .4byte sub_8039F64
+ .4byte sub_8039F70
+ .4byte sub_8039F7C
+ .4byte sub_8039F88
+ .4byte sub_8039F94
+ .4byte sub_8039FA0
+ .4byte sub_8039FAC
+ .4byte sub_8039FB8
+ .4byte sub_8039FC4
+ .4byte sub_8039FE0
+ .4byte sub_803A018
+ .4byte sub_803A030
+ .4byte dp01t_29_4_blink
+ .4byte sub_803A0C8
+ .4byte sub_803A0D4
+ .4byte sub_803A118
+ .4byte sub_803A148
+ .4byte dp01t_2E_4_battle_intro
+ .4byte sub_803A1B8
+ .4byte sub_803A3DC
+ .4byte sub_803A520
+ .4byte sub_803A56C
+ .4byte sub_803A578
+ .4byte bx_exec_buffer_A_ch0_tbl4
+ .4byte sub_803A640
+ .4byte sub_803A64C
+ .4byte sub_803A658
+ .4byte nullsub_48
+
+@ 81FB12C
+ .include "data/battle_moves.inc"
+
+ .align 2
+gUnknown_081FC1D0:: @ 81FC1D0
+ .2byte 0x34, 0x10, 0x101
+ .space 2
+
+ .2byte -1, -1, -1
+ .space 2
diff --git a/data/diploma.s b/data/diploma.s
deleted file mode 100644
index 508e86c63..000000000
--- a/data/diploma.s
+++ /dev/null
@@ -1,5 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
diff --git a/data/event_scripts.s b/data/event_scripts.s
index d909f1006..d6702745a 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -433,16 +433,16 @@ EventScript_15F419:
compare RESULT, 0
jumpeq EventScript_15F384
closebutton
- special 10
+ special SecretBasePC_PackUp
releaseall
end
EventScript_15F432:
- special 14
+ special SecretBasePC_Decoration
end
EventScript_15F436:
- special 15
+ special SecretBasePC_Registry
end
gUnknown_0815F43A:: @ 815F43A
@@ -475,18 +475,18 @@ gUnknown_0815F49A:: @ 815F49A
end
EventScript_15F4A1:
- special 12
+ special sub_80BC56C
compare RESULT, 1
jumpeq EventScript_15F4E0
compare RESULT, 2
jumpeq EventScript_15F503
- special 303
+ special sub_80BC224
msgbox UnknownString_81A3958, 5
compare RESULT, 0
jumpeq EventScript_15F452
msgbox UnknownString_81A3A22, 3
- special 13
- special 26
+ special sub_80BC5BC
+ special sub_80C683C
releaseall
end
@@ -495,14 +495,14 @@ EventScript_15F4E0:
compare RESULT, 0
jumpeq EventScript_15F452
msgbox UnknownString_81A3A3A, 3
- special 13
- special 26
+ special sub_80BC5BC
+ special sub_80C683C
releaseall
end
EventScript_15F503:
msgbox UnknownString_81A39C0, 3
- special 26
+ special sub_80C683C
closebutton
releaseall
end
@@ -514,7 +514,7 @@ EventScript_15F511:
end
EventScript_15F51D:
- special 26
+ special sub_80C683C
closebutton
releaseall
end
@@ -525,7 +525,7 @@ gUnknown_0815F523:: @ 815F523
end
gUnknown_0815F528:: @ 815F528
- special 307
+ special GetShieldToyTVDecorationInfo
compare RESULT, 0
jumpeq EventScript_15F558
compare RESULT, 1
@@ -924,14 +924,14 @@ LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806
MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806
OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806
SecretBase_RedCave1_EventScript_19F806:: @ 819F806
- special 93
+ special InitSaveDialog
waitstate
return
gUnknown_0819F80B:: @ 819F80B
lock
- special 56
- special 55
+ special PlayTrainerEncounterMusic
+ special sub_80847C8
waitstate
jump EventScript_19F8F2
@@ -940,11 +940,11 @@ gUnknown_0819F818:: @ 819F818
faceplayer
move LAST_TALKED, Movement_19F8F0
waitmove 0
- specialval RESULT, 54
+ specialval RESULT, sub_8082564
compare RESULT, 0
jumpif 5, EventScript_19F83F
- special 56
- special 314
+ special PlayTrainerEncounterMusic
+ special sub_8082524
jump EventScript_19F8F2
EventScript_19F83F:
@@ -954,18 +954,18 @@ gUnknown_0819F840:: @ 819F840
lock
faceplayer
call EventScript_19F8E5
- specialval RESULT, 54
+ specialval RESULT, sub_8082564
compare RESULT, 0
jumpif 5, EventScript_19F877
- special 61
+ special CheckForAlivePartyMons
compare RESULT, 0
jumpif 5, EventScript_19F870
- special 56
- special 314
+ special PlayTrainerEncounterMusic
+ special sub_8082524
jump EventScript_19F8F2
EventScript_19F870:
- special 53
+ special sub_8082718
waittext
waitbutton
release
@@ -977,21 +977,21 @@ EventScript_19F877:
gUnknown_0819F878:: @ 819F878
move LAST_TALKED, Movement_19F8F0
waitmove 0
- special 56
+ special PlayTrainerEncounterMusic
reptrainerbattle
endtrainerbattle
gUnknown_0819F887:: @ 819F887
call EventScript_19F8E5
- specialval RESULT, 58
+ specialval RESULT, sub_8082C9C
compare RESULT, 0
jumpeq EventScript_19F8AD
- special 56
- special 314
- special 52
+ special PlayTrainerEncounterMusic
+ special sub_8082524
+ special sub_80826D8
waittext
waitbutton
- special 59
+ special sub_80826B0
waitstate
releaseall
end
@@ -1000,18 +1000,18 @@ EventScript_19F8AD:
endtrainerbattle
gUnknown_0819F8AE:: @ 819F8AE
- specialval RESULT, 58
+ specialval RESULT, sub_8082C9C
compare RESULT, 0
jumpeq EventScript_19F8DD
- special 61
+ special CheckForAlivePartyMons
compare RESULT, 0
jumpif 5, EventScript_19F8DE
- special 56
- special 314
- special 52
+ special PlayTrainerEncounterMusic
+ special sub_8082524
+ special sub_80826D8
waittext
waitbutton
- special 59
+ special sub_80826B0
waitstate
releaseall
end
@@ -1020,7 +1020,7 @@ EventScript_19F8DD:
endtrainerbattle
EventScript_19F8DE:
- special 53
+ special sub_8082718
waittext
waitbutton
release
@@ -1036,11 +1036,11 @@ Movement_19F8F0::
step_end
EventScript_19F8F2:
- special 52
+ special sub_80826D8
waittext
waitbutton
reptrainerbattle
- specialval RESULT, 51
+ specialval RESULT, sub_8082558
compare RESULT, 0
jumpeq EventScript_19F934
compare RESULT, 2
@@ -1295,7 +1295,7 @@ EverGrandeCity_HallOfFame_EventScript_19FC13:: @ 819FC13
clearflag 751
clearflag 860
clearflag 861
- special 169
+ special sub_810FAA0
checkflag 291
callif 0, EverGrandeCity_HallOfFame_EventScript_19FC62
checkflag 255
@@ -1454,7 +1454,7 @@ OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C
checkanimation 25
move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845
waitmove 0
- special 0
+ special HealPlayerParty
checkflag 273
jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE
jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0
@@ -1475,7 +1475,7 @@ OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7
return
OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE
- specialval RESULT, 308
+ specialval RESULT, IsPokerusInParty
compare RESULT, 1
jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDEA
compare RESULT, 0
@@ -1644,7 +1644,7 @@ HiddenItemScript_Success:
waitfanfare
waittext
msgbox Message_PutAwayItem
- special 0x96
+ special SetFlagInVar
releaseall
end
@@ -1665,7 +1665,7 @@ UnusedMixRecordsScript: @ 819FFD5
jumpeq UnusedMixRecordsScript_Done
jump UnusedMixRecordsScript_Done
UnusedMixRecordsScript_Yes: @ 819FFFA
- special 0x1B
+ special sub_80B929C
waitstate
lock
faceplayer
@@ -1679,7 +1679,7 @@ UnusedMixRecordsScript_Done: @ 81A0000
gUnknown_081A0009:: @ 81A0009
lockall
setvar 0x8004, 0
- special 214
+ special DoPCTurnOnEffect
playsfx 4
msgbox UnknownString_81A09EC, 4
jump EventScript_1A0023
@@ -1688,7 +1688,7 @@ gUnknown_081A0009:: @ 81A0009
EventScript_1A0023:
message gPCText_WhichPCShouldBeAccessed
waittext
- special 262
+ special TryCreatePCMenu
waitstate
jump EventScript_1A0033
end
@@ -1705,7 +1705,7 @@ EventScript_1A0033:
EventScript_1A0070:
playsfx 2
msgbox UnknownString_81A0A54, 4
- special 250
+ special PlayerPC
waitstate
jump EventScript_1A0023
end
@@ -1717,7 +1717,7 @@ EventScript_1A0085:
checkflag 2123
callif 1, EventScript_1A00B5
msgbox UnknownString_81A0A35, 4
- special 60
+ special ShowPokemonStorageSystem
waitstate
jump EventScript_1A0023
end
@@ -1733,7 +1733,7 @@ EventScript_1A00B5:
EventScript_1A00BE:
setvar 0x8004, 0
playsfx 3
- special 215
+ special DoPCTurnOffEffect
releaseall
end
@@ -1741,7 +1741,7 @@ EventScript_1A00CB:
checkflag 2052
jumpif 0, EventScript_1A00BE
playsfx 2
- special 263
+ special AccessHallOfFamePC
waitstate
jump EventScript_1A0033
end
@@ -1788,7 +1788,7 @@ Route123_BerryMastersHouse_EventScript_1A00F3:: @ 81A00F3
SlateportCity_OceanicMuseum_1F_EventScript_1A00F3:: @ 81A00F3
SlateportCity_PokemonFanClub_EventScript_1A00F3:: @ 81A00F3
fadescreen 1
- special 95
+ special sub_80E60D8
fadescreen 0
return
@@ -1804,7 +1804,7 @@ DewfordTown_EventScript_1A0102:: @ 81A0102
DewfordTown_Hall_EventScript_1A0102:: @ 81A0102
checkdailyflags
setvar 0x8004, 0
- special 126
+ special sub_80FA5BC
return
DewfordTown_EventScript_1A010C:: @ 81A010C
@@ -2111,7 +2111,7 @@ SSTidalRooms_EventScript_1A02CA:: @ 81A02CA
fadescreen 1
fanfare 368
waitfanfare
- special 0
+ special HealPlayerParty
fadescreen 0
return
@@ -2119,7 +2119,7 @@ Event_WorldMap:: @ 81A02D6
lockall
msgbox UnknownString_817303D, 4
fadescreen 1
- special 251
+ special FieldShowRegionMap
waitstate
releaseall
end
@@ -2201,7 +2201,7 @@ Route101_EventScript_1A039B:: @ 81A039B
Route101_EventScript_1A03A5:: @ 81A03A5
copyvar 0x8004, 0x8009
- special 213
+ special ShowPokedexRatingMessage
waittext
waitbutton
return
@@ -2209,7 +2209,7 @@ Route101_EventScript_1A03A5:: @ 81A03A5
EverGrandeCity_ChampionsRoom_EventScript_1A03B0:: @ 81A03B0
Route101_EventScript_1A03B0:: @ 81A03B0
setvar 0x8004, 0
- specialval RESULT, 212
+ specialval RESULT, ScriptGetPokedexInfo
copyvar 0x8008, 0x8005
copyvar 0x8009, 0x8006
copyvar 0x800a, RESULT
@@ -2220,7 +2220,7 @@ Route101_EventScript_1A03B0:: @ 81A03B0
compare 0x800a, 0
jumpeq Route101_EventScript_1A14DC
setvar 0x8004, 1
- specialval RESULT, 212
+ specialval RESULT, ScriptGetPokedexInfo
copyvar 0x8008, 0x8005
copyvar 0x8009, 0x8006
buffernum 0, 0x8008
@@ -2328,7 +2328,7 @@ CaveOfOrigin_1F_EventScript_1A04D3:: @ 81A04D3
CaveOfOrigin_B2F_EventScript_1A04D3:: @ 81A04D3
setvar 0x8004, 1
setvar 0x8005, 1
- special 310
+ special sub_810F758
waitstate
releaseall
end
@@ -2533,7 +2533,7 @@ MossdeepCity_StevensHouse_EventScript_1A0678:: @ 81A0678
RustboroCity_DevonCorp_2F_EventScript_1A0678:: @ 81A0678
SlateportCity_House1_EventScript_1A0678:: @ 81A0678
fadescreen 1
- special 158
+ special sub_80BF9F8
waitstate
return
@@ -2568,7 +2568,7 @@ EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693
setmaptile 10, 2, 733, 1
setmaptile 11, 2, 734, 1
setmaptile 12, 2, 733, 1
- special 142
+ special DrawWholeMapView
return
EverGrandeCity_DrakesRoom_EventScript_1A0710:: @ 81A0710
@@ -2584,7 +2584,7 @@ EverGrandeCity_SidneysRoom_EventScript_1A0710:: @ 81A0710
setmaptile 5, 13, 526, 1
setmaptile 6, 13, 526, 1
setmaptile 7, 13, 526, 1
- special 142
+ special DrawWholeMapView
return
EverGrandeCity_DrakesRoom_EventScript_1A0757:: @ 81A0757
@@ -3256,7 +3256,7 @@ Event_NoRegisteredItem:: @ 81A14AF
gUnknown_081A14B8:: @ 81A14B8
lockall
- special 199
+ special ExecuteWhiteOut
waitstate
compare RESULT, 1
jumpeq EventScript_1A14CA
@@ -3267,10 +3267,10 @@ EventScript_1A14CA::
message UnknownString_81A1141
waittext
waitbutton
- special 332
+ special sub_8081924
waitstate
fadescreen 1
- special 200
+ special sp0C8_whiteout_maybe
waitstate
end
@@ -3600,8 +3600,8 @@ SecretBase_RedCave1_Text_1A2BA4:: @ 81A2BA4
.string "Are you speechless?$"
gUnknown_081A2C51:: @ 81A2C51
- special 21
- special 7
+ special sub_80BB70C
+ special sub_80BB63C
compare RESULT, 1
jumpeq EventScript_1A2E45
checkattack MOVE_SECRET_POWER
@@ -3719,11 +3719,11 @@ EventScript_1A2DB8:
playsfx 9
setvar 0x4097, 0
setflag 173
- special 6
- special 8
+ special sub_80BB8CC
+ special sub_80BBAF0
setvar 0x8004, 0
setvar 0x8005, 0
- special 18
+ special sub_80BBDD0
setvar 0x4089, 1
waitstate
end
@@ -3737,13 +3737,13 @@ SecretBase_RedCave1_EventScript_1A2DDE:: @ 81A2DDE
jumpeq SecretBase_RedCave1_EventScript_1A2E08
closebutton
playsfx 9
- special 9
+ special sub_80BC440
end
SecretBase_RedCave1_EventScript_1A2E08:: @ 81A2E08
closebutton
setflag 96
- special 24
+ special sub_80BBC78
waitstate
end
@@ -3756,18 +3756,18 @@ gUnknown_081A2E14:: @ 81A2E14
lockall
setvar 0x4097, 1
playsfx 9
- special 11
+ special sub_80BC114
compare RESULT, 0
jumpeq EventScript_1A2E38
clearflag 173
- special 8
+ special sub_80BBAF0
setvar 0x4089, 0
waitstate
end
EventScript_1A2E38:
setflag 173
- special 8
+ special sub_80BBAF0
setvar 0x4089, 0
waitstate
end
@@ -3779,7 +3779,7 @@ EventScript_1A2E45:
setanimation 0, RESULT
setorcopyvar 0x8004, RESULT
lockall
- special 278
+ special GetSecretBaseNearbyMapName
msgbox UnknownString_81A3C71, 5
compare RESULT, 0
jumpeq EventScript_1A2F3A
@@ -3787,7 +3787,7 @@ EventScript_1A2E45:
compare RESULT, 0
jumpeq EventScript_1A2F3A
fadescreen 1
- special 330
+ special sub_80BC50C
closebutton
fadescreen 0
msgbox UnknownString_81A3CC9, 5
@@ -3857,7 +3857,7 @@ LittlerootTown_MaysHouse_2F_EventScript_1A2F68:: @ 81A2F68
SecretBase_RedCave1_EventScript_1A2F68:: @ 81A2F68
setvar 0x8004, 0
setvar 0x8005, 0
- special 18
+ special sub_80BBDD0
setvar 0x4089, 1
end
@@ -3867,7 +3867,7 @@ gUnknown_081A2F7B:: @ 81A2F7B
end
EventScript_1A2F86:
- special 19
+ special sub_80FF474
end
gUnknown_081A2F8A:: @ 81A2F8A
@@ -3876,7 +3876,7 @@ gUnknown_081A2F8A:: @ 81A2F8A
end
EventScript_1A2F95:
- special 23
+ special sub_8100A7C
compare RESULT, 1
jumpeq EventScript_1A2FBF
addvar 0x8004, 1
@@ -3914,7 +3914,7 @@ SecretBase_YellowCave1_EventScript_1A2FC0:: @ 81A2FC0
SecretBase_YellowCave2_EventScript_1A2FC0:: @ 81A2FC0
SecretBase_YellowCave3_EventScript_1A2FC0:: @ 81A2FC0
SecretBase_YellowCave4_EventScript_1A2FC0:: @ 81A2FC0
- special 17
+ special sub_80BCE90
compare 0x8004, 0
jumpeq SecretBase_RedCave1_EventScript_1A3032
compare 0x8004, 1
@@ -3948,7 +3948,7 @@ SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A308F
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A308F
@@ -3963,7 +3963,7 @@ SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086
SecretBase_RedCave1_EventScript_1A308F:: @ 81A308F
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1B97, 2
end
@@ -3983,7 +3983,7 @@ SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A310B
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A310B
@@ -3998,7 +3998,7 @@ SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102
SecretBase_RedCave1_EventScript_1A310B:: @ 81A310B
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1F2E, 2
end
@@ -4018,7 +4018,7 @@ SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3187
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3187
@@ -4033,7 +4033,7 @@ SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E
SecretBase_RedCave1_EventScript_1A3187:: @ 81A3187
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2230, 2
end
@@ -4053,7 +4053,7 @@ SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3203
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3203
@@ -4068,7 +4068,7 @@ SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA
SecretBase_RedCave1_EventScript_1A3203:: @ 81A3203
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A258A, 2
end
@@ -4088,7 +4088,7 @@ SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A327F
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A327F
@@ -4103,7 +4103,7 @@ SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276
SecretBase_RedCave1_EventScript_1A327F:: @ 81A327F
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A28F4, 2
end
@@ -4123,7 +4123,7 @@ SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A32FB
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A32FB
@@ -4138,7 +4138,7 @@ SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2
SecretBase_RedCave1_EventScript_1A32FB:: @ 81A32FB
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1D59, 2
end
@@ -4158,7 +4158,7 @@ SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3377
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3377
@@ -4173,7 +4173,7 @@ SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E
SecretBase_RedCave1_EventScript_1A3377:: @ 81A3377
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A20AE, 2
end
@@ -4193,7 +4193,7 @@ SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A33F3
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A33F3
@@ -4208,7 +4208,7 @@ SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA
SecretBase_RedCave1_EventScript_1A33F3:: @ 81A33F3
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2420, 2
end
@@ -4228,7 +4228,7 @@ SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A346F
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A346F
@@ -4243,7 +4243,7 @@ SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466
SecretBase_RedCave1_EventScript_1A346F:: @ 81A346F
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2736, 2
end
@@ -4263,7 +4263,7 @@ SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A34EB
setvar RESULT, 1
- special 25
+ special sub_80BCE4C
call SecretBase_RedCave1_EventScript_19F806
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A34EB
@@ -4278,7 +4278,7 @@ SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2
SecretBase_RedCave1_EventScript_1A34EB:: @ 81A34EB
setvar RESULT, 0
- special 25
+ special sub_80BCE4C
hidebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2AFB, 2
end
@@ -4288,12 +4288,12 @@ SecretBase_RedCave1_EventScript_1A3501:: @ 81A3501
end
SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A
- special 16
+ special sub_80BCE1C
setvar 0x8004, 1
setvar 0x8005, 0
- special 236
+ special sub_813556C
waitstate
- special 0
+ special HealPlayerParty
release
end
@@ -4378,14 +4378,14 @@ BattleTower_Lobby_EventScript_1ADE46:: @ 81ADE46
FallarborTown_ContestLobby_EventScript_1ADE46:: @ 81ADE46
SlateportCity_OceanicMuseum_1F_EventScript_1ADE46:: @ 81ADE46
SlateportCity_PokemonFanClub_EventScript_1ADE46:: @ 81ADE46
- special 68
+ special sub_80BDE48
inccounter GAME_STAT_GOT_INTERVIEWED
release
end
SlateportCity_PokemonFanClub_EventScript_1ADE4D:: @ 81ADE4D
setvar 0x8005, 1
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq SlateportCity_PokemonFanClub_EventScript_1ADED6
copyvar 0x8009, 0x8006
@@ -4430,7 +4430,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADEE0:: @ 81ADEE0
lock
faceplayer
setvar 0x8005, 2
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96
copyvar 0x8009, 0x8006
@@ -4485,11 +4485,11 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96
SlateportCity_PokemonFanClub_EventScript_1ADFA0:: @ 81ADFA0
lock
faceplayer
- specialval RESULT, 69
+ specialval RESULT, sub_80BF544
compare RESULT, 0
jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE4D
setvar 0x8005, 3
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0AC
copyvar 0x8009, 0x8006
@@ -4566,7 +4566,7 @@ VerdanturfTown_ContestLobby_EventScript_1AE0B6:: @ 81AE0B6
checkflag 2
jumpeq FallarborTown_ContestLobby_EventScript_1AE17E
setvar 0x8005, 6
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq FallarborTown_ContestLobby_EventScript_1AE17E
copyvar 0x8009, 0x8006
@@ -4598,7 +4598,7 @@ FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D
FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137
setvar 0x8004, 24
- special 70
+ special SetContestCategoryStringVarForInterview
msgbox FallarborTown_ContestLobby_Text_1A70A5, 4
setvar 0x8004, 11
copyvar 0x8005, 0x8009
@@ -4626,7 +4626,7 @@ VerdanturfTown_ContestLobby_EventScript_1AE188:: @ 81AE188
compare 0x4086, 2
jumpif 5, FallarborTown_ContestLobby_EventScript_1AE1FE
setvar 0x8005, 6
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq FallarborTown_ContestLobby_EventScript_1AE1FE
switch 0x4088
@@ -4663,7 +4663,7 @@ BattleTower_Lobby_EventScript_1AE1FF:: @ 81AE1FF
checkflag 2
jumpeq BattleTower_Lobby_EventScript_1AE2E3
setvar 0x8005, 7
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq BattleTower_Lobby_EventScript_1AE2E3
copyvar 0x8009, 0x8006
@@ -4732,7 +4732,7 @@ BattleTower_Lobby_EventScript_1AE2ED:: @ 81AE2ED
compare 0x40bc, 0
jumpeq BattleTower_Lobby_EventScript_1AE30F
setvar 0x8005, 7
- special 67
+ special sub_80BF2C4
compare RESULT, 1
jumpeq BattleTower_Lobby_EventScript_1AE30F
clearflag 918
@@ -4827,7 +4827,7 @@ MauvilleCity_GameCorner_EventScript_1C40AC:: @ 81C40AC
end
MauvilleCity_GameCorner_EventScript_1C40DA:: @ 81C40DA
- special 162
+ special PlayRoulette
waitstate
end
@@ -4900,7 +4900,7 @@ gUnknown_081C6BDE:: @ 81C6BDE
waitmove 0
playsfx 43
pause 60
- special 319
+ special sp13F_fall_to_last_warp
waitstate
end
diff --git a/data/field_move_scripts.inc b/data/field_move_scripts.inc
index 413ab351a..315217055 100644
--- a/data/field_move_scripts.inc
+++ b/data/field_move_scripts.inc
@@ -87,10 +87,10 @@ DoRockSmashMovement: @ 81B0F0C
move LAST_TALKED, RockSmashMovement
waitmove 0
disappear LAST_TALKED
- specialval RESULT, 298
+ specialval RESULT, sub_810F5BC
compare RESULT, 1
jumpeq DoRockSmashMovement_Done
- special 171
+ special RockSmashWildEncounter
compare RESULT, 0
jumpeq DoRockSmashMovement_Done
waitstate
diff --git a/data/graphics/pokemon/icon_palette_indices.inc b/data/graphics/pokemon/icon_palette_indices.inc
deleted file mode 100644
index f37ec2a7a..000000000
--- a/data/graphics/pokemon/icon_palette_indices.inc
+++ /dev/null
@@ -1,442 +0,0 @@
- .align 2
-gMonIconPaletteIndices:: @ 83BC400
- .byte 0 @ ??????????
- .byte 1 @ Bulbasaur
- .byte 1 @ Ivysaur
- .byte 1 @ Venusaur
- .byte 0 @ Charmander
- .byte 0 @ Charmeleon
- .byte 0 @ Charizard
- .byte 0 @ Squirtle
- .byte 2 @ Wartortle
- .byte 2 @ Blastoise
- .byte 1 @ Caterpie
- .byte 1 @ Metapod
- .byte 0 @ Butterfree
- .byte 1 @ Weedle
- .byte 2 @ Kakuna
- .byte 2 @ Beedrill
- .byte 0 @ Pidgey
- .byte 0 @ Pidgeotto
- .byte 0 @ Pidgeot
- .byte 2 @ Rattata
- .byte 1 @ Raticate
- .byte 0 @ Spearow
- .byte 0 @ Fearow
- .byte 2 @ Ekans
- .byte 2 @ Arbok
- .byte 2 @ Pikachu
- .byte 0 @ Raichu
- .byte 2 @ Sandshrew
- .byte 2 @ Sandslash
- .byte 2 @ Nidoran♀
- .byte 2 @ Nidorina
- .byte 2 @ Nidoqueen
- .byte 2 @ Nidoran♂
- .byte 2 @ Nidorino
- .byte 2 @ Nidoking
- .byte 0 @ Clefairy
- .byte 0 @ Clefable
- .byte 2 @ Vulpix
- .byte 1 @ Ninetales
- .byte 0 @ Jigglypuff
- .byte 0 @ Wigglytuff
- .byte 2 @ Zubat
- .byte 2 @ Golbat
- .byte 1 @ Oddish
- .byte 0 @ Gloom
- .byte 0 @ Vileplume
- .byte 0 @ Paras
- .byte 0 @ Parasect
- .byte 0 @ Venonat
- .byte 2 @ Venomoth
- .byte 2 @ Diglett
- .byte 2 @ Dugtrio
- .byte 1 @ Meowth
- .byte 1 @ Persian
- .byte 1 @ Psyduck
- .byte 2 @ Golduck
- .byte 1 @ Mankey
- .byte 2 @ Primeape
- .byte 0 @ Growlithe
- .byte 0 @ Arcanine
- .byte 0 @ Poliwag
- .byte 0 @ Poliwhirl
- .byte 0 @ Poliwrath
- .byte 2 @ Abra
- .byte 2 @ Kadabra
- .byte 2 @ Alakazam
- .byte 0 @ Machop
- .byte 2 @ Machoke
- .byte 0 @ Machamp
- .byte 1 @ Bellsprout
- .byte 1 @ Weepinbell
- .byte 1 @ Victreebel
- .byte 2 @ Tentacool
- .byte 2 @ Tentacruel
- .byte 1 @ Geodude
- .byte 1 @ Graveler
- .byte 1 @ Golem
- .byte 0 @ Ponyta
- .byte 0 @ Rapidash
- .byte 0 @ Slowpoke
- .byte 0 @ Slowbro
- .byte 0 @ Magnemite
- .byte 0 @ Magneton
- .byte 1 @ Farfetch'd
- .byte 2 @ Doduo
- .byte 2 @ Dodrio
- .byte 2 @ Seel
- .byte 2 @ Dewgong
- .byte 2 @ Grimer
- .byte 2 @ Muk
- .byte 2 @ Shellder
- .byte 2 @ Cloyster
- .byte 2 @ Gastly
- .byte 2 @ Haunter
- .byte 2 @ Gengar
- .byte 2 @ Onix
- .byte 2 @ Drowzee
- .byte 1 @ Hypno
- .byte 2 @ Krabby
- .byte 2 @ Kingler
- .byte 0 @ Voltorb
- .byte 0 @ Electrode
- .byte 0 @ Exeggcute
- .byte 1 @ Exeggutor
- .byte 1 @ Cubone
- .byte 1 @ Marowak
- .byte 2 @ Hitmonlee
- .byte 2 @ Hitmonchan
- .byte 1 @ Lickitung
- .byte 2 @ Koffing
- .byte 2 @ Weezing
- .byte 1 @ Rhyhorn
- .byte 1 @ Rhydon
- .byte 0 @ Chansey
- .byte 0 @ Tangela
- .byte 1 @ Kangaskhan
- .byte 0 @ Horsea
- .byte 0 @ Seadra
- .byte 0 @ Goldeen
- .byte 0 @ Seaking
- .byte 2 @ Staryu
- .byte 2 @ Starmie
- .byte 0 @ Mr. mime
- .byte 1 @ Scyther
- .byte 2 @ Jynx
- .byte 1 @ Electabuzz
- .byte 0 @ Magmar
- .byte 2 @ Pinsir
- .byte 2 @ Tauros
- .byte 0 @ Magikarp
- .byte 0 @ Gyarados
- .byte 2 @ Lapras
- .byte 2 @ Ditto
- .byte 2 @ Eevee
- .byte 0 @ Vaporeon
- .byte 0 @ Jolteon
- .byte 0 @ Flareon
- .byte 0 @ Porygon
- .byte 0 @ Omanyte
- .byte 0 @ Omastar
- .byte 2 @ Kabuto
- .byte 2 @ Kabutops
- .byte 0 @ Aerodactyl
- .byte 1 @ Snorlax
- .byte 0 @ Articuno
- .byte 0 @ Zapdos
- .byte 0 @ Moltres
- .byte 0 @ Dratini
- .byte 0 @ Dragonair
- .byte 2 @ Dragonite
- .byte 2 @ Mewtwo
- .byte 0 @ Mew
- .byte 1 @ Chikorita
- .byte 1 @ Bayleef
- .byte 1 @ Meganium
- .byte 1 @ Cyndaquil
- .byte 1 @ Quilava
- .byte 1 @ Typhlosion
- .byte 2 @ Totodile
- .byte 2 @ Croconaw
- .byte 2 @ Feraligatr
- .byte 2 @ Sentret
- .byte 2 @ Furret
- .byte 2 @ Hoothoot
- .byte 2 @ Noctowl
- .byte 0 @ Ledyba
- .byte 0 @ Ledian
- .byte 1 @ Spinarak
- .byte 0 @ Ariados
- .byte 2 @ Crobat
- .byte 2 @ Chinchou
- .byte 0 @ Lanturn
- .byte 0 @ Pichu
- .byte 0 @ Cleffa
- .byte 1 @ Igglybuff
- .byte 2 @ Togepi
- .byte 2 @ Togetic
- .byte 0 @ Natu
- .byte 0 @ Xatu
- .byte 2 @ Mareep
- .byte 0 @ Flaaffy
- .byte 0 @ Ampharos
- .byte 1 @ Bellossom
- .byte 2 @ Marill
- .byte 2 @ Azumarill
- .byte 1 @ Sudowoodo
- .byte 1 @ Politoed
- .byte 1 @ Hoppip
- .byte 1 @ Skiploom
- .byte 2 @ Jumpluff
- .byte 2 @ Aipom
- .byte 1 @ Sunkern
- .byte 1 @ Sunflora
- .byte 1 @ Yanma
- .byte 0 @ Wooper
- .byte 0 @ Quagsire
- .byte 2 @ Espeon
- .byte 2 @ Umbreon
- .byte 2 @ Murkrow
- .byte 0 @ Slowking
- .byte 0 @ Misdreavus
- .byte 0 @ Unown A
- .byte 0 @ Wobbuffet
- .byte 1 @ Girafarig
- .byte 0 @ Pineco
- .byte 2 @ Forretress
- .byte 2 @ Dunsparce
- .byte 2 @ Gligar
- .byte 0 @ Steelix
- .byte 0 @ Snubbull
- .byte 2 @ Granbull
- .byte 0 @ Qwilfish
- .byte 0 @ Scizor
- .byte 1 @ Shuckle
- .byte 2 @ Heracross
- .byte 0 @ Sneasel
- .byte 0 @ Teddiursa
- .byte 2 @ Ursaring
- .byte 0 @ Slugma
- .byte 0 @ Magcargo
- .byte 2 @ Swinub
- .byte 2 @ Piloswine
- .byte 0 @ Corsola
- .byte 0 @ Remoraid
- .byte 0 @ Octillery
- .byte 0 @ Delibird
- .byte 2 @ Mantine
- .byte 0 @ Skarmory
- .byte 0 @ Houndour
- .byte 0 @ Houndoom
- .byte 0 @ Kingdra
- .byte 0 @ Phanpy
- .byte 0 @ Donphan
- .byte 0 @ Porygon2
- .byte 2 @ Stantler
- .byte 1 @ Smeargle
- .byte 2 @ Tyrogue
- .byte 2 @ Hitmontop
- .byte 1 @ Smoochum
- .byte 1 @ Elekid
- .byte 1 @ Magby
- .byte 1 @ Miltank
- .byte 1 @ Blissey
- .byte 0 @ Raikou
- .byte 2 @ Entei
- .byte 0 @ Suicune
- .byte 1 @ Larvitar
- .byte 0 @ Pupitar
- .byte 1 @ Tyranitar
- .byte 0 @ Lugia
- .byte 1 @ Ho-Oh
- .byte 1 @ Celebi
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 0 @ ?
- .byte 1 @ Treecko
- .byte 0 @ Grovyle
- .byte 1 @ Sceptile
- .byte 0 @ Torchic
- .byte 0 @ Combusken
- .byte 0 @ Blaziken
- .byte 0 @ Mudkip
- .byte 0 @ Marshtomp
- .byte 0 @ Swampert
- .byte 2 @ Poochyena
- .byte 2 @ Mightyena
- .byte 2 @ Zigzagoon
- .byte 2 @ Linoone
- .byte 0 @ Wurmple
- .byte 2 @ Silcoon
- .byte 0 @ Beautifly
- .byte 2 @ Cascoon
- .byte 1 @ Dustox
- .byte 1 @ Lotad
- .byte 1 @ Lombre
- .byte 1 @ Ludicolo
- .byte 1 @ Seedot
- .byte 1 @ Nuzleaf
- .byte 0 @ Shiftry
- .byte 1 @ Nincada
- .byte 1 @ Ninjask
- .byte 1 @ Shedinja
- .byte 2 @ Taillow
- .byte 2 @ Swellow
- .byte 1 @ Shroomish
- .byte 1 @ Breloom
- .byte 1 @ Spinda
- .byte 0 @ Wingull
- .byte 0 @ Pelipper
- .byte 2 @ Surskit
- .byte 0 @ Masquerain
- .byte 2 @ Wailmer
- .byte 0 @ Wailord
- .byte 0 @ Skitty
- .byte 2 @ Delcatty
- .byte 1 @ Kecleon
- .byte 1 @ Baltoy
- .byte 0 @ Claydol
- .byte 0 @ Nosepass
- .byte 1 @ Torkoal
- .byte 2 @ Sableye
- .byte 0 @ Barboach
- .byte 0 @ Whiscash
- .byte 0 @ Luvdisc
- .byte 0 @ Corphish
- .byte 0 @ Crawdaunt
- .byte 2 @ Feebas
- .byte 0 @ Milotic
- .byte 0 @ Carvanha
- .byte 0 @ Sharpedo
- .byte 1 @ Trapinch
- .byte 1 @ Vibrava
- .byte 1 @ Flygon
- .byte 2 @ Makuhita
- .byte 1 @ Hariyama
- .byte 1 @ Electrike
- .byte 0 @ Manectric
- .byte 1 @ Numel
- .byte 0 @ Camerupt
- .byte 2 @ Spheal
- .byte 2 @ Sealeo
- .byte 0 @ Walrein
- .byte 1 @ Cacnea
- .byte 1 @ Cacturne
- .byte 2 @ Snorunt
- .byte 0 @ Glalie
- .byte 1 @ Lunatone
- .byte 0 @ Solrock
- .byte 2 @ Azurill
- .byte 0 @ Spoink
- .byte 2 @ Grumpig
- .byte 0 @ Plusle
- .byte 0 @ Minun
- .byte 2 @ Mawile
- .byte 0 @ Meditite
- .byte 0 @ Medicham
- .byte 0 @ Swablu
- .byte 0 @ Altaria
- .byte 0 @ Wynaut
- .byte 0 @ Duskull
- .byte 0 @ Dusclops
- .byte 0 @ Roselia
- .byte 2 @ Slakoth
- .byte 2 @ Vigoroth
- .byte 1 @ Slaking
- .byte 1 @ Gulpin
- .byte 2 @ Swalot
- .byte 1 @ Tropius
- .byte 0 @ Whismur
- .byte 2 @ Loudred
- .byte 2 @ Exploud
- .byte 0 @ Clamperl
- .byte 0 @ Huntail
- .byte 0 @ Gorebyss
- .byte 0 @ Absol
- .byte 0 @ Shuppet
- .byte 0 @ Banette
- .byte 2 @ Seviper
- .byte 0 @ Zangoose
- .byte 1 @ Relicanth
- .byte 2 @ Aron
- .byte 2 @ Lairon
- .byte 2 @ Aggron
- .byte 0 @ Castform
- .byte 0 @ Volbeat
- .byte 2 @ Illumise
- .byte 2 @ Lileep
- .byte 0 @ Cradily
- .byte 0 @ Anorith
- .byte 0 @ Armaldo
- .byte 1 @ Ralts
- .byte 1 @ Kirlia
- .byte 1 @ Gardevoir
- .byte 2 @ Bagon
- .byte 2 @ Shelgon
- .byte 0 @ Salamence
- .byte 0 @ Beldum
- .byte 0 @ Metang
- .byte 0 @ Metagross
- .byte 2 @ Regirock
- .byte 2 @ Regice
- .byte 2 @ Registeel
- .byte 2 @ Kyogre
- .byte 0 @ Groudon
- .byte 1 @ Rayquaza
- .byte 0 @ Latias
- .byte 2 @ Latios
- .byte 0 @ Jirachi
- .byte 0 @ Deoxys
- .byte 0 @ Chimecho
- .byte 1 @ Egg
- .byte 0 @ Unown B
- .byte 0 @ Unown C
- .byte 0 @ Unown D
- .byte 0 @ Unown E
- .byte 0 @ Unown F
- .byte 0 @ Unown G
- .byte 0 @ Unown H
- .byte 0 @ Unown I
- .byte 0 @ Unown J
- .byte 0 @ Unown K
- .byte 0 @ Unown L
- .byte 0 @ Unown M
- .byte 0 @ Unown N
- .byte 0 @ Unown O
- .byte 0 @ Unown P
- .byte 0 @ Unown Q
- .byte 0 @ Unown R
- .byte 0 @ Unown S
- .byte 0 @ Unown T
- .byte 0 @ Unown U
- .byte 0 @ Unown V
- .byte 0 @ Unown W
- .byte 0 @ Unown X
- .byte 0 @ Unown Y
- .byte 0 @ Unown Z
- .byte 0 @ Unown Exclamation Mark
- .byte 0 @ Unown Question Mark
diff --git a/data/graphics/pokemon/icon_palette_table.inc b/data/graphics/pokemon/icon_palette_table.inc
deleted file mode 100644
index d9da61ab2..000000000
--- a/data/graphics/pokemon/icon_palette_table.inc
+++ /dev/null
@@ -1,11 +0,0 @@
- .align 2
-gMonIconPaletteTable:: @ 83BC5B8
- obj_pal gMonIconPalettes + 0 * 32, 56000
- obj_pal gMonIconPalettes + 1 * 32, 56001
- obj_pal gMonIconPalettes + 2 * 32, 56002
-
-@ These palettes are actually part of the title screen BG palette and are not
-@ used for Pokémon icons.
- obj_pal gMonIconPalettes + 3 * 32, 56003
- obj_pal gMonIconPalettes + 4 * 32, 56004
- obj_pal gMonIconPalettes + 5 * 32, 56005
diff --git a/data/graphics/pokemon/icon_table.inc b/data/graphics/pokemon/icon_table.inc
deleted file mode 100644
index eeb064208..000000000
--- a/data/graphics/pokemon/icon_table.inc
+++ /dev/null
@@ -1,442 +0,0 @@
- .align 2
-gMonIconTable:: @ 83BBD20
- .4byte gMonIcon_Bulbasaur
- .4byte gMonIcon_Bulbasaur
- .4byte gMonIcon_Ivysaur
- .4byte gMonIcon_Venusaur
- .4byte gMonIcon_Charmander
- .4byte gMonIcon_Charmeleon
- .4byte gMonIcon_Charizard
- .4byte gMonIcon_Squirtle
- .4byte gMonIcon_Wartortle
- .4byte gMonIcon_Blastoise
- .4byte gMonIcon_Caterpie
- .4byte gMonIcon_Metapod
- .4byte gMonIcon_Butterfree
- .4byte gMonIcon_Weedle
- .4byte gMonIcon_Kakuna
- .4byte gMonIcon_Beedrill
- .4byte gMonIcon_Pidgey
- .4byte gMonIcon_Pidgeotto
- .4byte gMonIcon_Pidgeot
- .4byte gMonIcon_Rattata
- .4byte gMonIcon_Raticate
- .4byte gMonIcon_Spearow
- .4byte gMonIcon_Fearow
- .4byte gMonIcon_Ekans
- .4byte gMonIcon_Arbok
- .4byte gMonIcon_Pikachu
- .4byte gMonIcon_Raichu
- .4byte gMonIcon_Sandshrew
- .4byte gMonIcon_Sandslash
- .4byte gMonIcon_NidoranF
- .4byte gMonIcon_Nidorina
- .4byte gMonIcon_Nidoqueen
- .4byte gMonIcon_NidoranM
- .4byte gMonIcon_Nidorino
- .4byte gMonIcon_Nidoking
- .4byte gMonIcon_Clefairy
- .4byte gMonIcon_Clefable
- .4byte gMonIcon_Vulpix
- .4byte gMonIcon_Ninetales
- .4byte gMonIcon_Jigglypuff
- .4byte gMonIcon_Wigglytuff
- .4byte gMonIcon_Zubat
- .4byte gMonIcon_Golbat
- .4byte gMonIcon_Oddish
- .4byte gMonIcon_Gloom
- .4byte gMonIcon_Vileplume
- .4byte gMonIcon_Paras
- .4byte gMonIcon_Parasect
- .4byte gMonIcon_Venonat
- .4byte gMonIcon_Venomoth
- .4byte gMonIcon_Diglett
- .4byte gMonIcon_Dugtrio
- .4byte gMonIcon_Meowth
- .4byte gMonIcon_Persian
- .4byte gMonIcon_Psyduck
- .4byte gMonIcon_Golduck
- .4byte gMonIcon_Mankey
- .4byte gMonIcon_Primeape
- .4byte gMonIcon_Growlithe
- .4byte gMonIcon_Arcanine
- .4byte gMonIcon_Poliwag
- .4byte gMonIcon_Poliwhirl
- .4byte gMonIcon_Poliwrath
- .4byte gMonIcon_Abra
- .4byte gMonIcon_Kadabra
- .4byte gMonIcon_Alakazam
- .4byte gMonIcon_Machop
- .4byte gMonIcon_Machoke
- .4byte gMonIcon_Machamp
- .4byte gMonIcon_Bellsprout
- .4byte gMonIcon_Weepinbell
- .4byte gMonIcon_Victreebel
- .4byte gMonIcon_Tentacool
- .4byte gMonIcon_Tentacruel
- .4byte gMonIcon_Geodude
- .4byte gMonIcon_Graveler
- .4byte gMonIcon_Golem
- .4byte gMonIcon_Ponyta
- .4byte gMonIcon_Rapidash
- .4byte gMonIcon_Slowpoke
- .4byte gMonIcon_Slowbro
- .4byte gMonIcon_Magnemite
- .4byte gMonIcon_Magneton
- .4byte gMonIcon_Farfetchd
- .4byte gMonIcon_Doduo
- .4byte gMonIcon_Dodrio
- .4byte gMonIcon_Seel
- .4byte gMonIcon_Dewgong
- .4byte gMonIcon_Grimer
- .4byte gMonIcon_Muk
- .4byte gMonIcon_Shellder
- .4byte gMonIcon_Cloyster
- .4byte gMonIcon_Gastly
- .4byte gMonIcon_Haunter
- .4byte gMonIcon_Gengar
- .4byte gMonIcon_Onix
- .4byte gMonIcon_Drowzee
- .4byte gMonIcon_Hypno
- .4byte gMonIcon_Krabby
- .4byte gMonIcon_Kingler
- .4byte gMonIcon_Voltorb
- .4byte gMonIcon_Electrode
- .4byte gMonIcon_Exeggcute
- .4byte gMonIcon_Exeggutor
- .4byte gMonIcon_Cubone
- .4byte gMonIcon_Marowak
- .4byte gMonIcon_Hitmonlee
- .4byte gMonIcon_Hitmonchan
- .4byte gMonIcon_Lickitung
- .4byte gMonIcon_Koffing
- .4byte gMonIcon_Weezing
- .4byte gMonIcon_Rhyhorn
- .4byte gMonIcon_Rhydon
- .4byte gMonIcon_Chansey
- .4byte gMonIcon_Tangela
- .4byte gMonIcon_Kangaskhan
- .4byte gMonIcon_Horsea
- .4byte gMonIcon_Seadra
- .4byte gMonIcon_Goldeen
- .4byte gMonIcon_Seaking
- .4byte gMonIcon_Staryu
- .4byte gMonIcon_Starmie
- .4byte gMonIcon_Mrmime
- .4byte gMonIcon_Scyther
- .4byte gMonIcon_Jynx
- .4byte gMonIcon_Electabuzz
- .4byte gMonIcon_Magmar
- .4byte gMonIcon_Pinsir
- .4byte gMonIcon_Tauros
- .4byte gMonIcon_Magikarp
- .4byte gMonIcon_Gyarados
- .4byte gMonIcon_Lapras
- .4byte gMonIcon_Ditto
- .4byte gMonIcon_Eevee
- .4byte gMonIcon_Vaporeon
- .4byte gMonIcon_Jolteon
- .4byte gMonIcon_Flareon
- .4byte gMonIcon_Porygon
- .4byte gMonIcon_Omanyte
- .4byte gMonIcon_Omastar
- .4byte gMonIcon_Kabuto
- .4byte gMonIcon_Kabutops
- .4byte gMonIcon_Aerodactyl
- .4byte gMonIcon_Snorlax
- .4byte gMonIcon_Articuno
- .4byte gMonIcon_Zapdos
- .4byte gMonIcon_Moltres
- .4byte gMonIcon_Dratini
- .4byte gMonIcon_Dragonair
- .4byte gMonIcon_Dragonite
- .4byte gMonIcon_Mewtwo
- .4byte gMonIcon_Mew
- .4byte gMonIcon_Chikorita
- .4byte gMonIcon_Bayleef
- .4byte gMonIcon_Meganium
- .4byte gMonIcon_Cyndaquil
- .4byte gMonIcon_Quilava
- .4byte gMonIcon_Typhlosion
- .4byte gMonIcon_Totodile
- .4byte gMonIcon_Croconaw
- .4byte gMonIcon_Feraligatr
- .4byte gMonIcon_Sentret
- .4byte gMonIcon_Furret
- .4byte gMonIcon_Hoothoot
- .4byte gMonIcon_Noctowl
- .4byte gMonIcon_Ledyba
- .4byte gMonIcon_Ledian
- .4byte gMonIcon_Spinarak
- .4byte gMonIcon_Ariados
- .4byte gMonIcon_Crobat
- .4byte gMonIcon_Chinchou
- .4byte gMonIcon_Lanturn
- .4byte gMonIcon_Pichu
- .4byte gMonIcon_Cleffa
- .4byte gMonIcon_Igglybuff
- .4byte gMonIcon_Togepi
- .4byte gMonIcon_Togetic
- .4byte gMonIcon_Natu
- .4byte gMonIcon_Xatu
- .4byte gMonIcon_Mareep
- .4byte gMonIcon_Flaaffy
- .4byte gMonIcon_Ampharos
- .4byte gMonIcon_Bellossom
- .4byte gMonIcon_Marill
- .4byte gMonIcon_Azumarill
- .4byte gMonIcon_Sudowoodo
- .4byte gMonIcon_Politoed
- .4byte gMonIcon_Hoppip
- .4byte gMonIcon_Skiploom
- .4byte gMonIcon_Jumpluff
- .4byte gMonIcon_Aipom
- .4byte gMonIcon_Sunkern
- .4byte gMonIcon_Sunflora
- .4byte gMonIcon_Yanma
- .4byte gMonIcon_Wooper
- .4byte gMonIcon_Quagsire
- .4byte gMonIcon_Espeon
- .4byte gMonIcon_Umbreon
- .4byte gMonIcon_Murkrow
- .4byte gMonIcon_Slowking
- .4byte gMonIcon_Misdreavus
- .4byte gMonIcon_UnownA
- .4byte gMonIcon_Wobbuffet
- .4byte gMonIcon_Girafarig
- .4byte gMonIcon_Pineco
- .4byte gMonIcon_Forretress
- .4byte gMonIcon_Dunsparce
- .4byte gMonIcon_Gligar
- .4byte gMonIcon_Steelix
- .4byte gMonIcon_Snubbull
- .4byte gMonIcon_Granbull
- .4byte gMonIcon_Qwilfish
- .4byte gMonIcon_Scizor
- .4byte gMonIcon_Shuckle
- .4byte gMonIcon_Heracross
- .4byte gMonIcon_Sneasel
- .4byte gMonIcon_Teddiursa
- .4byte gMonIcon_Ursaring
- .4byte gMonIcon_Slugma
- .4byte gMonIcon_Magcargo
- .4byte gMonIcon_Swinub
- .4byte gMonIcon_Piloswine
- .4byte gMonIcon_Corsola
- .4byte gMonIcon_Remoraid
- .4byte gMonIcon_Octillery
- .4byte gMonIcon_Delibird
- .4byte gMonIcon_Mantine
- .4byte gMonIcon_Skarmory
- .4byte gMonIcon_Houndour
- .4byte gMonIcon_Houndoom
- .4byte gMonIcon_Kingdra
- .4byte gMonIcon_Phanpy
- .4byte gMonIcon_Donphan
- .4byte gMonIcon_Porygon2
- .4byte gMonIcon_Stantler
- .4byte gMonIcon_Smeargle
- .4byte gMonIcon_Tyrogue
- .4byte gMonIcon_Hitmontop
- .4byte gMonIcon_Smoochum
- .4byte gMonIcon_Elekid
- .4byte gMonIcon_Magby
- .4byte gMonIcon_Miltank
- .4byte gMonIcon_Blissey
- .4byte gMonIcon_Raikou
- .4byte gMonIcon_Entei
- .4byte gMonIcon_Suicune
- .4byte gMonIcon_Larvitar
- .4byte gMonIcon_Pupitar
- .4byte gMonIcon_Tyranitar
- .4byte gMonIcon_Lugia
- .4byte gMonIcon_HoOh
- .4byte gMonIcon_Celebi
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_QuestionMark
- .4byte gMonIcon_Treecko
- .4byte gMonIcon_Grovyle
- .4byte gMonIcon_Sceptile
- .4byte gMonIcon_Torchic
- .4byte gMonIcon_Combusken
- .4byte gMonIcon_Blaziken
- .4byte gMonIcon_Mudkip
- .4byte gMonIcon_Marshtomp
- .4byte gMonIcon_Swampert
- .4byte gMonIcon_Poochyena
- .4byte gMonIcon_Mightyena
- .4byte gMonIcon_Zigzagoon
- .4byte gMonIcon_Linoone
- .4byte gMonIcon_Wurmple
- .4byte gMonIcon_Silcoon
- .4byte gMonIcon_Beautifly
- .4byte gMonIcon_Cascoon
- .4byte gMonIcon_Dustox
- .4byte gMonIcon_Lotad
- .4byte gMonIcon_Lombre
- .4byte gMonIcon_Ludicolo
- .4byte gMonIcon_Seedot
- .4byte gMonIcon_Nuzleaf
- .4byte gMonIcon_Shiftry
- .4byte gMonIcon_Nincada
- .4byte gMonIcon_Ninjask
- .4byte gMonIcon_Shedinja
- .4byte gMonIcon_Taillow
- .4byte gMonIcon_Swellow
- .4byte gMonIcon_Shroomish
- .4byte gMonIcon_Breloom
- .4byte gMonIcon_Spinda
- .4byte gMonIcon_Wingull
- .4byte gMonIcon_Pelipper
- .4byte gMonIcon_Surskit
- .4byte gMonIcon_Masquerain
- .4byte gMonIcon_Wailmer
- .4byte gMonIcon_Wailord
- .4byte gMonIcon_Skitty
- .4byte gMonIcon_Delcatty
- .4byte gMonIcon_Kecleon
- .4byte gMonIcon_Baltoy
- .4byte gMonIcon_Claydol
- .4byte gMonIcon_Nosepass
- .4byte gMonIcon_Torkoal
- .4byte gMonIcon_Sableye
- .4byte gMonIcon_Barboach
- .4byte gMonIcon_Whiscash
- .4byte gMonIcon_Luvdisc
- .4byte gMonIcon_Corphish
- .4byte gMonIcon_Crawdaunt
- .4byte gMonIcon_Feebas
- .4byte gMonIcon_Milotic
- .4byte gMonIcon_Carvanha
- .4byte gMonIcon_Sharpedo
- .4byte gMonIcon_Trapinch
- .4byte gMonIcon_Vibrava
- .4byte gMonIcon_Flygon
- .4byte gMonIcon_Makuhita
- .4byte gMonIcon_Hariyama
- .4byte gMonIcon_Electrike
- .4byte gMonIcon_Manectric
- .4byte gMonIcon_Numel
- .4byte gMonIcon_Camerupt
- .4byte gMonIcon_Spheal
- .4byte gMonIcon_Sealeo
- .4byte gMonIcon_Walrein
- .4byte gMonIcon_Cacnea
- .4byte gMonIcon_Cacturne
- .4byte gMonIcon_Snorunt
- .4byte gMonIcon_Glalie
- .4byte gMonIcon_Lunatone
- .4byte gMonIcon_Solrock
- .4byte gMonIcon_Azurill
- .4byte gMonIcon_Spoink
- .4byte gMonIcon_Grumpig
- .4byte gMonIcon_Plusle
- .4byte gMonIcon_Minun
- .4byte gMonIcon_Mawile
- .4byte gMonIcon_Meditite
- .4byte gMonIcon_Medicham
- .4byte gMonIcon_Swablu
- .4byte gMonIcon_Altaria
- .4byte gMonIcon_Wynaut
- .4byte gMonIcon_Duskull
- .4byte gMonIcon_Dusclops
- .4byte gMonIcon_Roselia
- .4byte gMonIcon_Slakoth
- .4byte gMonIcon_Vigoroth
- .4byte gMonIcon_Slaking
- .4byte gMonIcon_Gulpin
- .4byte gMonIcon_Swalot
- .4byte gMonIcon_Tropius
- .4byte gMonIcon_Whismur
- .4byte gMonIcon_Loudred
- .4byte gMonIcon_Exploud
- .4byte gMonIcon_Clamperl
- .4byte gMonIcon_Huntail
- .4byte gMonIcon_Gorebyss
- .4byte gMonIcon_Absol
- .4byte gMonIcon_Shuppet
- .4byte gMonIcon_Banette
- .4byte gMonIcon_Seviper
- .4byte gMonIcon_Zangoose
- .4byte gMonIcon_Relicanth
- .4byte gMonIcon_Aron
- .4byte gMonIcon_Lairon
- .4byte gMonIcon_Aggron
- .4byte gMonIcon_Castform
- .4byte gMonIcon_Volbeat
- .4byte gMonIcon_Illumise
- .4byte gMonIcon_Lileep
- .4byte gMonIcon_Cradily
- .4byte gMonIcon_Anorith
- .4byte gMonIcon_Armaldo
- .4byte gMonIcon_Ralts
- .4byte gMonIcon_Kirlia
- .4byte gMonIcon_Gardevoir
- .4byte gMonIcon_Bagon
- .4byte gMonIcon_Shelgon
- .4byte gMonIcon_Salamence
- .4byte gMonIcon_Beldum
- .4byte gMonIcon_Metang
- .4byte gMonIcon_Metagross
- .4byte gMonIcon_Regirock
- .4byte gMonIcon_Regice
- .4byte gMonIcon_Registeel
- .4byte gMonIcon_Kyogre
- .4byte gMonIcon_Groudon
- .4byte gMonIcon_Rayquaza
- .4byte gMonIcon_Latias
- .4byte gMonIcon_Latios
- .4byte gMonIcon_Jirachi
- .4byte gMonIcon_Deoxys
- .4byte gMonIcon_Chimecho
- .4byte gMonIcon_Egg
- .4byte gMonIcon_UnownB
- .4byte gMonIcon_UnownC
- .4byte gMonIcon_UnownD
- .4byte gMonIcon_UnownE
- .4byte gMonIcon_UnownF
- .4byte gMonIcon_UnownG
- .4byte gMonIcon_UnownH
- .4byte gMonIcon_UnownI
- .4byte gMonIcon_UnownJ
- .4byte gMonIcon_UnownK
- .4byte gMonIcon_UnownL
- .4byte gMonIcon_UnownM
- .4byte gMonIcon_UnownN
- .4byte gMonIcon_UnownO
- .4byte gMonIcon_UnownP
- .4byte gMonIcon_UnownQ
- .4byte gMonIcon_UnownR
- .4byte gMonIcon_UnownS
- .4byte gMonIcon_UnownT
- .4byte gMonIcon_UnownU
- .4byte gMonIcon_UnownV
- .4byte gMonIcon_UnownW
- .4byte gMonIcon_UnownX
- .4byte gMonIcon_UnownY
- .4byte gMonIcon_UnownZ
- .4byte gMonIcon_UnownExclamationMark
- .4byte gMonIcon_UnownQuestionMark
diff --git a/data/item.s b/data/item.s
deleted file mode 100644
index 0c2aa8593..000000000
--- a/data/item.s
+++ /dev/null
@@ -1,10 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 83C2028
- .include "data/text/item_descriptions.inc"
-
-@ 83C5564
- .include "data/items.inc"
diff --git a/data/items.inc b/data/items.inc
deleted file mode 100644
index 0074a6bfa..000000000
--- a/data/items.inc
+++ /dev/null
@@ -1,5236 +0,0 @@
- .align 2
-gItems:: @ 83C5564
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MASTER BALL$", 14
- .2byte ITEM_MASTER_BALL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MasterBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 0
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 0
-
- .string "ULTRA BALL$", 14
- .2byte ITEM_ULTRA_BALL
- .2byte 1200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_UltraBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 1
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 1
-
- .string "GREAT BALL$", 14
- .2byte ITEM_GREAT_BALL
- .2byte 600 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GreatBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 2
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 2
-
- .string "POKé BALL$", 14
- .2byte ITEM_POKE_BALL
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PokeBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 3
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 3
-
- .string "SAFARI BALL$", 14
- .2byte ITEM_SAFARI_BALL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SafariBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 4
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 4
-
- .string "NET BALL$", 14
- .2byte ITEM_NET_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_NetBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 5
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 5
-
- .string "DIVE BALL$", 14
- .2byte ITEM_DIVE_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DiveBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 6
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 6
-
- .string "NEST BALL$", 14
- .2byte ITEM_NEST_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_NestBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 7
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 7
-
- .string "REPEAT BALL$", 14
- .2byte ITEM_REPEAT_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RepeatBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 8
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 8
-
- .string "TIMER BALL$", 14
- .2byte ITEM_TIMER_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TimerBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 9
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 9
-
- .string "LUXURY BALL$", 14
- .2byte ITEM_LUXURY_BALL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_LuxuryBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 10
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 10
-
- .string "PREMIER BALL$", 14
- .2byte ITEM_PREMIER_BALL
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PremierBall
- .byte 0
- .byte 0
- .byte POCKET_POKE_BALLS
- .byte 11
- .4byte NULL
- .4byte 2
- .4byte ItemUseInBattle_PokeBall
- .4byte 11
-
- .string "POTION$", 14
- .2byte ITEM_POTION
- .2byte 300 @ price
- .byte HOLD_EFFECT_NONE
- .byte 20
- .4byte gItemDescription_Potion
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ANTIDOTE$", 14
- .2byte ITEM_ANTIDOTE
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Antidote
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "BURN HEAL$", 14
- .2byte ITEM_BURN_HEAL
- .2byte 250 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BurnHeal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ICE HEAL$", 14
- .2byte ITEM_ICE_HEAL
- .2byte 250 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_IceHeal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "AWAKENING$", 14
- .2byte ITEM_AWAKENING
- .2byte 250 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Awakening
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "PARLYZ HEAL$", 14
- .2byte ITEM_PARALYZE_HEAL
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ParalyzeHeal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "FULL RESTORE$", 14
- .2byte ITEM_FULL_RESTORE
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 255
- .4byte gItemDescription_FullRestore
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "MAX POTION$", 14
- .2byte ITEM_MAX_POTION
- .2byte 2500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 255
- .4byte gItemDescription_MaxPotion
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "HYPER POTION$", 14
- .2byte ITEM_HYPER_POTION
- .2byte 1200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 200
- .4byte gItemDescription_HyperPotion
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "SUPER POTION$", 14
- .2byte ITEM_SUPER_POTION
- .2byte 700 @ price
- .byte HOLD_EFFECT_NONE
- .byte 50
- .4byte gItemDescription_SuperPotion
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "FULL HEAL$", 14
- .2byte ITEM_FULL_HEAL
- .2byte 600 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_FullHeal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "REVIVE$", 14
- .2byte ITEM_REVIVE
- .2byte 1500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Revive
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "MAX REVIVE$", 14
- .2byte ITEM_MAX_REVIVE
- .2byte 4000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MaxRevive
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "FRESH WATER$", 14
- .2byte ITEM_FRESH_WATER
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 50
- .4byte gItemDescription_FreshWater
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "SODA POP$", 14
- .2byte ITEM_SODA_POP
- .2byte 300 @ price
- .byte HOLD_EFFECT_NONE
- .byte 60
- .4byte gItemDescription_SodaPop
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "LEMONADE$", 14
- .2byte ITEM_LEMONADE
- .2byte 350 @ price
- .byte HOLD_EFFECT_NONE
- .byte 80
- .4byte gItemDescription_Lemonade
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "MOOMOO MILK$", 14
- .2byte ITEM_MOOMOO_MILK
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 100
- .4byte gItemDescription_MoomooMilk
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ENERGYPOWDER$", 14
- .2byte ITEM_ENERGY_POWDER
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EnergyPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ENERGY ROOT$", 14
- .2byte ITEM_ENERGY_ROOT
- .2byte 800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EnergyRoot
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "HEAL POWDER$", 14
- .2byte ITEM_HEAL_POWDER
- .2byte 450 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HealPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "REVIVAL HERB$", 14
- .2byte ITEM_REVIVAL_HERB
- .2byte 2800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RevivalHerb
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ETHER$", 14
- .2byte ITEM_ETHER
- .2byte 1200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 10
- .4byte gItemDescription_Ether
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "MAX ETHER$", 14
- .2byte ITEM_MAX_ETHER
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 255
- .4byte gItemDescription_MaxEther
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "ELIXIR$", 14
- .2byte ITEM_ELIXIR
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 10
- .4byte gItemDescription_Elixir
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "MAX ELIXIR$", 14
- .2byte ITEM_MAX_ELIXIR
- .2byte 4500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 255
- .4byte gItemDescription_MaxElixir
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "LAVA COOKIE$", 14
- .2byte ITEM_LAVA_COOKIE
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_LavaCookie
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "BLUE FLUTE$", 14
- .2byte ITEM_BLUE_FLUTE
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlueFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "YELLOW FLUTE$", 14
- .2byte ITEM_YELLOW_FLUTE
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_YellowFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "RED FLUTE$", 14
- .2byte ITEM_RED_FLUTE
- .2byte 300 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RedFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "BLACK FLUTE$", 14
- .2byte ITEM_BLACK_FLUTE
- .2byte 400 @ price
- .byte HOLD_EFFECT_NONE
- .byte 50
- .4byte gItemDescription_BlackFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_BlackWhiteFlute
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WHITE FLUTE$", 14
- .2byte ITEM_WHITE_FLUTE
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 150
- .4byte gItemDescription_WhiteFlute
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_BlackWhiteFlute
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BERRY JUICE$", 14
- .2byte ITEM_BERRY_JUICE
- .2byte 100 @ price
- .byte HOLD_EFFECT_RESTORE_HP
- .byte 20
- .4byte gItemDescription_BerryJuice
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "SACRED ASH$", 14
- .2byte ITEM_SACRED_ASH
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SacredAsh
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_SacredAsh
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SHOAL SALT$", 14
- .2byte ITEM_SHOAL_SALT
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ShoalSalt
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SHOAL SHELL$", 14
- .2byte ITEM_SHOAL_SHELL
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ShoalShell
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RED SHARD$", 14
- .2byte ITEM_RED_SHARD
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RedShard
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLUE SHARD$", 14
- .2byte ITEM_BLUE_SHARD
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlueShard
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "YELLOW SHARD$", 14
- .2byte ITEM_YELLOW_SHARD
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_YellowShard
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GREEN SHARD$", 14
- .2byte ITEM_GREEN_SHARD
- .2byte 200 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GreenShard
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HP UP$", 14
- .2byte ITEM_HP_UP
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HPUp
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PROTEIN$", 14
- .2byte ITEM_PROTEIN
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Protein
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "IRON$", 14
- .2byte ITEM_IRON
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Iron
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "CARBOS$", 14
- .2byte ITEM_CARBOS
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Carbos
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "CALCIUM$", 14
- .2byte ITEM_CALCIUM
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Calcium
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RARE CANDY$", 14
- .2byte ITEM_RARE_CANDY
- .2byte 4800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RareCandy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_RareCandy
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PP UP$", 14
- .2byte ITEM_PP_UP
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PPUp
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPUp
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ZINC$", 14
- .2byte ITEM_ZINC
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Zinc
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PP MAX$", 14
- .2byte ITEM_PP_MAX
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PPMax
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_PPUp
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GUARD SPEC.$", 14
- .2byte ITEM_GUARD_SPEC
- .2byte 700 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GuardSpec
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "DIRE HIT$", 14
- .2byte ITEM_DIRE_HIT
- .2byte 650 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DireHit
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X ATTACK$", 14
- .2byte ITEM_X_ATTACK
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XAttack
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X DEFEND$", 14
- .2byte ITEM_X_DEFEND
- .2byte 550 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XDefend
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X SPEED$", 14
- .2byte ITEM_X_SPEED
- .2byte 350 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XSpeed
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X ACCURACY$", 14
- .2byte ITEM_X_ACCURACY
- .2byte 950 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XAccuracy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "X SPECIAL$", 14
- .2byte ITEM_X_SPECIAL
- .2byte 350 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_XSpecial
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_StatIncrease
- .4byte 0
-
- .string "POKé DOLL$", 14
- .2byte ITEM_POKE_DOLL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PokeDoll
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_Escape
- .4byte 0
-
- .string "FLUFFY TAIL$", 14
- .2byte ITEM_FLUFFY_TAIL
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_FluffyTail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 2
- .4byte ItemUseInBattle_Escape
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SUPER REPEL$", 14
- .2byte ITEM_SUPER_REPEL
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 200
- .4byte gItemDescription_SuperRepel
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_Repel
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MAX REPEL$", 14
- .2byte ITEM_MAX_REPEL
- .2byte 700 @ price
- .byte HOLD_EFFECT_NONE
- .byte 250
- .4byte gItemDescription_MaxRepel
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_Repel
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ESCAPE ROPE$", 14
- .2byte ITEM_ESCAPE_ROPE
- .2byte 550 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EscapeRope
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_EscapeRope
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "REPEL$", 14
- .2byte ITEM_REPEL
- .2byte 350 @ price
- .byte HOLD_EFFECT_NONE
- .byte 100
- .4byte gItemDescription_Repel
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_Repel
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SUN STONE$", 14
- .2byte ITEM_SUN_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SunStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MOON STONE$", 14
- .2byte ITEM_MOON_STONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MoonStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "FIRE STONE$", 14
- .2byte ITEM_FIRE_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_FireStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "THUNDERSTONE$", 14
- .2byte ITEM_THUNDER_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ThunderStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WATER STONE$", 14
- .2byte ITEM_WATER_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WaterStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LEAF STONE$", 14
- .2byte ITEM_LEAF_STONE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_LeafStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 1
- .4byte ItemUseOutOfBattle_EvolutionStone
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TINYMUSHROOM$", 14
- .2byte ITEM_TINY_MUSHROOM
- .2byte 500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TinyMushroom
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BIG MUSHROOM$", 14
- .2byte ITEM_BIG_MUSHROOM
- .2byte 5000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BigMushroom
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PEARL$", 14
- .2byte ITEM_PEARL
- .2byte 1400 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Pearl
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BIG PEARL$", 14
- .2byte ITEM_BIG_PEARL
- .2byte 7500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BigPearl
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "STARDUST$", 14
- .2byte ITEM_STARDUST
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Stardust
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "STAR PIECE$", 14
- .2byte ITEM_STAR_PIECE
- .2byte 9800 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_StarPiece
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "NUGGET$", 14
- .2byte ITEM_NUGGET
- .2byte 10000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Nugget
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HEART SCALE$", 14
- .2byte ITEM_HEART_SCALE
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HeartScale
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ORANGE MAIL$", 14
- .2byte ITEM_ORANGE_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_OrangeMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HARBOR MAIL$", 14
- .2byte ITEM_HARBOR_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HarborMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 1
-
- .string "GLITTER MAIL$", 14
- .2byte ITEM_GLITTER_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GlitterMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 2
-
- .string "MECH MAIL$", 14
- .2byte ITEM_MECH_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MechMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 3
-
- .string "WOOD MAIL$", 14
- .2byte ITEM_WOOD_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WoodMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 4
-
- .string "WAVE MAIL$", 14
- .2byte ITEM_WAVE_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WaveMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 5
-
- .string "BEAD MAIL$", 14
- .2byte ITEM_BEAD_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BeadMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 6
-
- .string "SHADOW MAIL$", 14
- .2byte ITEM_SHADOW_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ShadowMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 7
-
- .string "TROPIC MAIL$", 14
- .2byte ITEM_TROPIC_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TropicMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 8
-
- .string "DREAM MAIL$", 14
- .2byte ITEM_DREAM_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DreamMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 9
-
- .string "FAB MAIL$", 14
- .2byte ITEM_FAB_MAIL
- .2byte 50 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_FabMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 10
-
- .string "RETRO MAIL$", 14
- .2byte ITEM_RETRO_MAIL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RetroMail
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 0
- .4byte ItemUseOutOfBattle_Mail
- .4byte 0
- .4byte NULL
- .4byte 11
-
- .string "CHERI BERRY$", 14
- .2byte ITEM_CHERI_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_PAR
- .byte 0
- .4byte gItemDescription_CheriBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "CHESTO BERRY$", 14
- .2byte ITEM_CHESTO_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_SLP
- .byte 0
- .4byte gItemDescription_ChestoBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "PECHA BERRY$", 14
- .2byte ITEM_PECHA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_PSN
- .byte 0
- .4byte gItemDescription_PechaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "RAWST BERRY$", 14
- .2byte ITEM_RAWST_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_BRN
- .byte 0
- .4byte gItemDescription_RawstBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "ASPEAR BERRY$", 14
- .2byte ITEM_ASPEAR_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_FRZ
- .byte 0
- .4byte gItemDescription_AspearBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "LEPPA BERRY$", 14
- .2byte ITEM_LEPPA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_RESTORE_PP
- .byte 10
- .4byte gItemDescription_LeppaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_PPRecovery
- .4byte 1
- .4byte ItemUseInBattle_PPRecovery
- .4byte 0
-
- .string "ORAN BERRY$", 14
- .2byte ITEM_ORAN_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_RESTORE_HP
- .byte 10
- .4byte gItemDescription_OranBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "PERSIM BERRY$", 14
- .2byte ITEM_PERSIM_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_CONFUSION
- .byte 0
- .4byte gItemDescription_PersimBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "LUM BERRY$", 14
- .2byte ITEM_LUM_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CURE_STATUS
- .byte 0
- .4byte gItemDescription_LumBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "SITRUS BERRY$", 14
- .2byte ITEM_SITRUS_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_RESTORE_HP
- .byte 30
- .4byte gItemDescription_SitrusBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 1
- .4byte ItemUseOutOfBattle_Medicine
- .4byte 1
- .4byte ItemUseInBattle_Medicine
- .4byte 0
-
- .string "FIGY BERRY$", 14
- .2byte ITEM_FIGY_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_SPICY
- .byte 8
- .4byte gItemDescription_FigyBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WIKI BERRY$", 14
- .2byte ITEM_WIKI_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_DRY
- .byte 8
- .4byte gItemDescription_WikiBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MAGO BERRY$", 14
- .2byte ITEM_MAGO_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_SWEET
- .byte 8
- .4byte gItemDescription_MagoBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "AGUAV BERRY$", 14
- .2byte ITEM_AGUAV_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_BITTER
- .byte 8
- .4byte gItemDescription_AguavBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "IAPAPA BERRY$", 14
- .2byte ITEM_IAPAPA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CONFUSE_SOUR
- .byte 8
- .4byte gItemDescription_IapapaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RAZZ BERRY$", 14
- .2byte ITEM_RAZZ_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RazzBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLUK BERRY$", 14
- .2byte ITEM_BLUK_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlukBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "NANAB BERRY$", 14
- .2byte ITEM_NANAB_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_NanabBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WEPEAR BERRY$", 14
- .2byte ITEM_WEPEAR_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WepearBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PINAP BERRY$", 14
- .2byte ITEM_PINAP_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PinapBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "POMEG BERRY$", 14
- .2byte ITEM_POMEG_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PomegBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KELPSY BERRY$", 14
- .2byte ITEM_KELPSY_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_KelpsyBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "QUALOT BERRY$", 14
- .2byte ITEM_QUALOT_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_QualotBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HONDEW BERRY$", 14
- .2byte ITEM_HONDEW_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HondewBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GREPA BERRY$", 14
- .2byte ITEM_GREPA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GrepaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TAMATO BERRY$", 14
- .2byte ITEM_TAMATO_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TamatoBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "CORNN BERRY$", 14
- .2byte ITEM_CORNN_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_CornnBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MAGOST BERRY$", 14
- .2byte ITEM_MAGOST_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MagostBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RABUTA BERRY$", 14
- .2byte ITEM_RABUTA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RabutaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "NOMEL BERRY$", 14
- .2byte ITEM_NOMEL_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_NomelBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SPELON BERRY$", 14
- .2byte ITEM_SPELON_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SpelonBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PAMTRE BERRY$", 14
- .2byte ITEM_PAMTRE_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PamtreBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WATMEL BERRY$", 14
- .2byte ITEM_WATMEL_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WatmelBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DURIN BERRY$", 14
- .2byte ITEM_DURIN_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DurinBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BELUE BERRY$", 14
- .2byte ITEM_BELUE_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BelueBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LIECHI BERRY$", 14
- .2byte ITEM_LIECHI_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_ATTACK_UP
- .byte 4
- .4byte gItemDescription_LiechiBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GANLON BERRY$", 14
- .2byte ITEM_GANLON_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_DEFENSE_UP
- .byte 4
- .4byte gItemDescription_GanlonBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SALAC BERRY$", 14
- .2byte ITEM_SALAC_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_SPEED_UP
- .byte 4
- .4byte gItemDescription_SalacBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PETAYA BERRY$", 14
- .2byte ITEM_PETAYA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_SP_ATTACK_UP
- .byte 4
- .4byte gItemDescription_PetayaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "APICOT BERRY$", 14
- .2byte ITEM_APICOT_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_SP_DEFENSE_UP
- .byte 4
- .4byte gItemDescription_ApicotBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LANSAT BERRY$", 14
- .2byte ITEM_LANSAT_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_CRITICAL_UP
- .byte 4
- .4byte gItemDescription_LansatBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "STARF BERRY$", 14
- .2byte ITEM_STARF_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_RANDOM_STAT_UP
- .byte 4
- .4byte gItemDescription_StarfBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ENIGMA BERRY$", 14
- .2byte ITEM_ENIGMA_BERRY
- .2byte 20 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EnigmaBerry
- .byte 0
- .byte 0
- .byte POCKET_BERRIES
- .byte 4
- .4byte ItemUseOutOfBattle_EnigmaBerry
- .4byte 1
- .4byte ItemUseInBattle_EnigmaBerry
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BRIGHTPOWDER$", 14
- .2byte ITEM_BRIGHT_POWDER
- .2byte 10 @ price
- .byte HOLD_EFFECT_EVASION_UP
- .byte 10
- .4byte gItemDescription_BrightPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WHITE HERB$", 14
- .2byte ITEM_WHITE_HERB
- .2byte 100 @ price
- .byte HOLD_EFFECT_RESTORE_STATS
- .byte 0
- .4byte gItemDescription_WhiteHerb
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MACHO BRACE$", 14
- .2byte ITEM_MACHO_BRACE
- .2byte 3000 @ price
- .byte HOLD_EFFECT_MACHO_BRACE
- .byte 0
- .4byte gItemDescription_MachoBrace
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "EXP. SHARE$", 14
- .2byte ITEM_EXP_SHARE
- .2byte 3000 @ price
- .byte HOLD_EFFECT_EXP_SHARE
- .byte 0
- .4byte gItemDescription_ExpShare
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "QUICK CLAW$", 14
- .2byte ITEM_QUICK_CLAW
- .2byte 100 @ price
- .byte HOLD_EFFECT_QUICK_CLAW
- .byte 20
- .4byte gItemDescription_QuickClaw
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SOOTHE BELL$", 14
- .2byte ITEM_SOOTHE_BELL
- .2byte 100 @ price
- .byte HOLD_EFFECT_HAPPINESS_UP
- .byte 0
- .4byte gItemDescription_SootheBell
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MENTAL HERB$", 14
- .2byte ITEM_MENTAL_HERB
- .2byte 100 @ price
- .byte HOLD_EFFECT_CURE_ATTRACT
- .byte 0
- .4byte gItemDescription_MentalHerb
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "CHOICE BAND$", 14
- .2byte ITEM_CHOICE_BAND
- .2byte 100 @ price
- .byte HOLD_EFFECT_CHOICE_BAND
- .byte 0
- .4byte gItemDescription_ChoiceBand
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "KING’S ROCK$", 14
- .2byte ITEM_KINGS_ROCK
- .2byte 100 @ price
- .byte HOLD_EFFECT_FLINCH
- .byte 10
- .4byte gItemDescription_KingsRock
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SILVERPOWDER$", 14
- .2byte ITEM_SILVER_POWDER
- .2byte 100 @ price
- .byte HOLD_EFFECT_BUG_POWER
- .byte 10
- .4byte gItemDescription_SilverPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "AMULET COIN$", 14
- .2byte ITEM_AMULET_COIN
- .2byte 100 @ price
- .byte HOLD_EFFECT_DOUBLE_PRIZE
- .byte 10
- .4byte gItemDescription_AmuletCoin
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "CLEANSE TAG$", 14
- .2byte ITEM_CLEANSE_TAG
- .2byte 200 @ price
- .byte HOLD_EFFECT_REPEL
- .byte 0
- .4byte gItemDescription_CleanseTag
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SOUL DEW$", 14
- .2byte ITEM_SOUL_DEW
- .2byte 200 @ price
- .byte HOLD_EFFECT_SOUL_DEW
- .byte 0
- .4byte gItemDescription_SoulDew
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DEEPSEATOOTH$", 14
- .2byte ITEM_DEEP_SEA_TOOTH
- .2byte 200 @ price
- .byte HOLD_EFFECT_DEEP_SEA_TOOTH
- .byte 0
- .4byte gItemDescription_DeepSeaTooth
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DEEPSEASCALE$", 14
- .2byte ITEM_DEEP_SEA_SCALE
- .2byte 200 @ price
- .byte HOLD_EFFECT_DEEP_SEA_SCALE
- .byte 0
- .4byte gItemDescription_DeepSeaScale
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SMOKE BALL$", 14
- .2byte ITEM_SMOKE_BALL
- .2byte 200 @ price
- .byte HOLD_EFFECT_CAN_ALWAYS_RUN
- .byte 0
- .4byte gItemDescription_SmokeBall
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "EVERSTONE$", 14
- .2byte ITEM_EVERSTONE
- .2byte 200 @ price
- .byte HOLD_EFFECT_PREVENT_EVOLVE
- .byte 0
- .4byte gItemDescription_Everstone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "FOCUS BAND$", 14
- .2byte ITEM_FOCUS_BAND
- .2byte 200 @ price
- .byte HOLD_EFFECT_FOCUS_BAND
- .byte 10
- .4byte gItemDescription_FocusBand
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LUCKY EGG$", 14
- .2byte ITEM_LUCKY_EGG
- .2byte 200 @ price
- .byte HOLD_EFFECT_LUCKY_EGG
- .byte 0
- .4byte gItemDescription_LuckyEgg
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SCOPE LENS$", 14
- .2byte ITEM_SCOPE_LENS
- .2byte 200 @ price
- .byte HOLD_EFFECT_SCOPE_LENS
- .byte 0
- .4byte gItemDescription_ScopeLens
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "METAL COAT$", 14
- .2byte ITEM_METAL_COAT
- .2byte 100 @ price
- .byte HOLD_EFFECT_STEEL_POWER
- .byte 10
- .4byte gItemDescription_MetalCoat
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LEFTOVERS$", 14
- .2byte ITEM_LEFTOVERS
- .2byte 200 @ price
- .byte HOLD_EFFECT_LEFTOVERS
- .byte 10
- .4byte gItemDescription_Leftovers
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DRAGON SCALE$", 14
- .2byte ITEM_DRAGON_SCALE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_DRAGON_SCALE
- .byte 10
- .4byte gItemDescription_DragonScale
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LIGHT BALL$", 14
- .2byte ITEM_LIGHT_BALL
- .2byte 100 @ price
- .byte HOLD_EFFECT_LIGHT_BALL
- .byte 0
- .4byte gItemDescription_LightBall
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SOFT SAND$", 14
- .2byte ITEM_SOFT_SAND
- .2byte 100 @ price
- .byte HOLD_EFFECT_GROUND_POWER
- .byte 10
- .4byte gItemDescription_SoftSand
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HARD STONE$", 14
- .2byte ITEM_HARD_STONE
- .2byte 100 @ price
- .byte HOLD_EFFECT_ROCK_POWER
- .byte 10
- .4byte gItemDescription_HardStone
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MIRACLE SEED$", 14
- .2byte ITEM_MIRACLE_SEED
- .2byte 100 @ price
- .byte HOLD_EFFECT_GRASS_POWER
- .byte 10
- .4byte gItemDescription_MiracleSeed
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLACKGLASSES$", 14
- .2byte ITEM_BLACK_GLASSES
- .2byte 100 @ price
- .byte HOLD_EFFECT_DARK_POWER
- .byte 10
- .4byte gItemDescription_BlackGlasses
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLACK BELT$", 14
- .2byte ITEM_BLACK_BELT
- .2byte 100 @ price
- .byte HOLD_EFFECT_FIGHTING_POWER
- .byte 10
- .4byte gItemDescription_BlackBelt
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MAGNET$", 14
- .2byte ITEM_MAGNET
- .2byte 100 @ price
- .byte HOLD_EFFECT_ELECTRIC_POWER
- .byte 10
- .4byte gItemDescription_Magnet
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MYSTIC WATER$", 14
- .2byte ITEM_MYSTIC_WATER
- .2byte 100 @ price
- .byte HOLD_EFFECT_WATER_POWER
- .byte 10
- .4byte gItemDescription_MysticWater
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SHARP BEAK$", 14
- .2byte ITEM_SHARP_BEAK
- .2byte 100 @ price
- .byte HOLD_EFFECT_FLYING_POWER
- .byte 10
- .4byte gItemDescription_SharpBeak
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "POISON BARB$", 14
- .2byte ITEM_POISON_BARB
- .2byte 100 @ price
- .byte HOLD_EFFECT_POISON_POWER
- .byte 10
- .4byte gItemDescription_PoisonBarb
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "NEVERMELTICE$", 14
- .2byte ITEM_NEVER_MELT_ICE
- .2byte 100 @ price
- .byte HOLD_EFFECT_ICE_POWER
- .byte 10
- .4byte gItemDescription_NeverMeltIce
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SPELL TAG$", 14
- .2byte ITEM_SPELL_TAG
- .2byte 100 @ price
- .byte HOLD_EFFECT_GHOST_POWER
- .byte 10
- .4byte gItemDescription_SpellTag
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TWISTEDSPOON$", 14
- .2byte ITEM_TWISTED_SPOON
- .2byte 100 @ price
- .byte HOLD_EFFECT_PSYCHIC_POWER
- .byte 10
- .4byte gItemDescription_TwistedSpoon
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "CHARCOAL$", 14
- .2byte ITEM_CHARCOAL
- .2byte 9800 @ price
- .byte HOLD_EFFECT_FIRE_POWER
- .byte 10
- .4byte gItemDescription_Charcoal
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DRAGON FANG$", 14
- .2byte ITEM_DRAGON_FANG
- .2byte 100 @ price
- .byte HOLD_EFFECT_DRAGON_POWER
- .byte 10
- .4byte gItemDescription_DragonFang
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SILK SCARF$", 14
- .2byte ITEM_SILK_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NORMAL_POWER
- .byte 10
- .4byte gItemDescription_SilkScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "UP-GRADE$", 14
- .2byte ITEM_UP_GRADE
- .2byte 2100 @ price
- .byte HOLD_EFFECT_UP_GRADE
- .byte 0
- .4byte gItemDescription_UpGrade
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SHELL BELL$", 14
- .2byte ITEM_SHELL_BELL
- .2byte 200 @ price
- .byte HOLD_EFFECT_SHELL_BELL
- .byte 8
- .4byte gItemDescription_ShellBell
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SEA INCENSE$", 14
- .2byte ITEM_SEA_INCENSE
- .2byte 9600 @ price
- .byte HOLD_EFFECT_WATER_POWER
- .byte 5
- .4byte gItemDescription_SeaIncense
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LAX INCENSE$", 14
- .2byte ITEM_LAX_INCENSE
- .2byte 9600 @ price
- .byte HOLD_EFFECT_EVASION_UP
- .byte 5
- .4byte gItemDescription_LaxIncense
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LUCKY PUNCH$", 14
- .2byte ITEM_LUCKY_PUNCH
- .2byte 10 @ price
- .byte HOLD_EFFECT_LUCKY_PUNCH
- .byte 0
- .4byte gItemDescription_LuckyPunch
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "METAL POWDER$", 14
- .2byte ITEM_METAL_POWDER
- .2byte 10 @ price
- .byte HOLD_EFFECT_METAL_POWDER
- .byte 0
- .4byte gItemDescription_MetalPowder
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "THICK CLUB$", 14
- .2byte ITEM_THICK_CLUB
- .2byte 500 @ price
- .byte HOLD_EFFECT_THICK_CLUB
- .byte 0
- .4byte gItemDescription_ThickClub
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "STICK$", 14
- .2byte ITEM_STICK
- .2byte 200 @ price
- .byte HOLD_EFFECT_STICK
- .byte 0
- .4byte gItemDescription_Stick
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RED SCARF$", 14
- .2byte ITEM_RED_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RedScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLUE SCARF$", 14
- .2byte ITEM_BLUE_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlueScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "PINK SCARF$", 14
- .2byte ITEM_PINK_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PinkScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GREEN SCARF$", 14
- .2byte ITEM_GREEN_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GreenScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "YELLOW SCARF$", 14
- .2byte ITEM_YELLOW_SCARF
- .2byte 100 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_YellowScarf
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "MACH BIKE$", 14
- .2byte ITEM_MACH_BIKE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_MachBike
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Bike
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "COIN CASE$", 14
- .2byte ITEM_COIN_CASE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_CoinCase
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CoinCase
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ITEMFINDER$", 14
- .2byte ITEM_ITEMFINDER
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Itemfinder
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Itemfinder
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "OLD ROD$", 14
- .2byte ITEM_OLD_ROD
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_OldRod
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Rod
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GOOD ROD$", 14
- .2byte ITEM_GOOD_ROD
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GoodRod
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Rod
- .4byte 0
- .4byte NULL
- .4byte 1
-
- .string "SUPER ROD$", 14
- .2byte ITEM_SUPER_ROD
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SuperRod
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Rod
- .4byte 0
- .4byte NULL
- .4byte 2
-
- .string "S.S. TICKET$", 14
- .2byte ITEM_SS_TICKET
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SSTicket
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "CONTEST PASS$", 14
- .2byte ITEM_CONTEST_PASS
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ContestPass
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "WAILMER PAIL$", 14
- .2byte ITEM_WAILMER_PAIL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_WailmerPail
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_WailmerPail
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DEVON GOODS$", 14
- .2byte ITEM_DEVON_GOODS
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DevonGoods
- .byte 2
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SOOT SACK$", 14
- .2byte ITEM_SOOT_SACK
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_SootSack
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BASEMENT KEY$", 14
- .2byte ITEM_BASEMENT_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BasementKey
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ACRO BIKE$", 14
- .2byte ITEM_ACRO_BIKE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_AcroBike
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 2
- .4byte ItemUseOutOfBattle_Bike
- .4byte 0
- .4byte NULL
- .4byte 1
-
- .string "{POKEBLOCK} CASE$", 14
- .2byte ITEM_POKEBLOCK_CASE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_PokeblockCase
- .byte 1
- .byte 1
- .byte POCKET_KEY_ITEMS
- .byte 3
- .4byte ItemUseOutOfBattle_PokeblockCase
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "LETTER$", 14
- .2byte ITEM_LETTER
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Letter
- .byte 2
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "EON TICKET$", 14
- .2byte ITEM_EON_TICKET
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_EonTicket
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 1
-
- .string "RED ORB$", 14
- .2byte ITEM_RED_ORB
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RedOrb
- .byte 2
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "BLUE ORB$", 14
- .2byte ITEM_BLUE_ORB
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_BlueOrb
- .byte 2
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "SCANNER$", 14
- .2byte ITEM_SCANNER
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Scanner
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "GO-GOGGLES$", 14
- .2byte ITEM_GO_GOGGLES
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_GoGoggles
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "METEORITE$", 14
- .2byte ITEM_METEORITE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Meteorite
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RM. 1 KEY$", 14
- .2byte ITEM_ROOM_1_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Room1Key
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RM. 2 KEY$", 14
- .2byte ITEM_ROOM_2_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Room2Key
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RM. 4 KEY$", 14
- .2byte ITEM_ROOM_4_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Room4Key
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "RM. 6 KEY$", 14
- .2byte ITEM_ROOM_6_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Room6Key
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "STORAGE KEY$", 14
- .2byte ITEM_STORAGE_KEY
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_StorageKey
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "ROOT FOSSIL$", 14
- .2byte ITEM_ROOT_FOSSIL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_RootFossil
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "CLAW FOSSIL$", 14
- .2byte ITEM_CLAW_FOSSIL
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_ClawFossil
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "DEVON SCOPE$", 14
- .2byte ITEM_DEVON_SCOPE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_DevonScope
- .byte 1
- .byte 0
- .byte POCKET_KEY_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM01$", 14
- .2byte ITEM_TM01
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM01
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM02$", 14
- .2byte ITEM_TM02
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM02
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM03$", 14
- .2byte ITEM_TM03
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM03
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM04$", 14
- .2byte ITEM_TM04
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM04
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM05$", 14
- .2byte ITEM_TM05
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM05
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM06$", 14
- .2byte ITEM_TM06
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM06
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM07$", 14
- .2byte ITEM_TM07
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM07
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM08$", 14
- .2byte ITEM_TM08
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM08
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM09$", 14
- .2byte ITEM_TM09
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM09
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM10$", 14
- .2byte ITEM_TM10
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM10
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM11$", 14
- .2byte ITEM_TM11
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM11
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM12$", 14
- .2byte ITEM_TM12
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM12
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM13$", 14
- .2byte ITEM_TM13
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM13
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM14$", 14
- .2byte ITEM_TM14
- .2byte 5500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM14
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM15$", 14
- .2byte ITEM_TM15
- .2byte 7500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM15
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM16$", 14
- .2byte ITEM_TM16
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM16
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM17$", 14
- .2byte ITEM_TM17
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM17
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM18$", 14
- .2byte ITEM_TM18
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM18
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM19$", 14
- .2byte ITEM_TM19
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM19
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM20$", 14
- .2byte ITEM_TM20
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM20
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM21$", 14
- .2byte ITEM_TM21
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM21
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM22$", 14
- .2byte ITEM_TM22
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM22
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM23$", 14
- .2byte ITEM_TM23
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM23
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM24$", 14
- .2byte ITEM_TM24
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM24
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM25$", 14
- .2byte ITEM_TM25
- .2byte 5500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM25
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM26$", 14
- .2byte ITEM_TM26
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM26
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM27$", 14
- .2byte ITEM_TM27
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM27
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM28$", 14
- .2byte ITEM_TM28
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM28
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM29$", 14
- .2byte ITEM_TM29
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM29
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM30$", 14
- .2byte ITEM_TM30
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM30
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM31$", 14
- .2byte ITEM_TM31
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM31
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM32$", 14
- .2byte ITEM_TM32
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM32
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM33$", 14
- .2byte ITEM_TM33
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM33
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM34$", 14
- .2byte ITEM_TM34
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM34
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM35$", 14
- .2byte ITEM_TM35
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM35
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM36$", 14
- .2byte ITEM_TM36
- .2byte 1000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM36
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM37$", 14
- .2byte ITEM_TM37
- .2byte 2000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM37
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM38$", 14
- .2byte ITEM_TM38
- .2byte 5500 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM38
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM39$", 14
- .2byte ITEM_TM39
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM39
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM40$", 14
- .2byte ITEM_TM40
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM40
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM41$", 14
- .2byte ITEM_TM41
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM41
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM42$", 14
- .2byte ITEM_TM42
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM42
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM43$", 14
- .2byte ITEM_TM43
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM43
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM44$", 14
- .2byte ITEM_TM44
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM44
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM45$", 14
- .2byte ITEM_TM45
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM45
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM46$", 14
- .2byte ITEM_TM46
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM46
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM47$", 14
- .2byte ITEM_TM47
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM47
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM48$", 14
- .2byte ITEM_TM48
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM48
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM49$", 14
- .2byte ITEM_TM49
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM49
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "TM50$", 14
- .2byte ITEM_TM50
- .2byte 3000 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_TM50
- .byte 0
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HM01$", 14
- .2byte ITEM_HM01
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM01
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HM02$", 14
- .2byte ITEM_HM02
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM02
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HM03$", 14
- .2byte ITEM_HM03
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM03
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HM04$", 14
- .2byte ITEM_HM04
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM04
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HM05$", 14
- .2byte ITEM_HM05
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM05
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HM06$", 14
- .2byte ITEM_HM06
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM06
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HM07$", 14
- .2byte ITEM_HM07
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM07
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "HM08$", 14
- .2byte ITEM_HM08
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_HM08
- .byte 1
- .byte 0
- .byte POCKET_TM_HM
- .byte 1
- .4byte ItemUseOutOfBattle_TMHM
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
-
- .string "????????$", 14
- .2byte ITEM_NONE
- .2byte 0 @ price
- .byte HOLD_EFFECT_NONE
- .byte 0
- .4byte gItemDescription_Dummy
- .byte 0
- .byte 0
- .byte POCKET_ITEMS
- .byte 4
- .4byte ItemUseOutOfBattle_CannotUse
- .4byte 0
- .4byte NULL
- .4byte 0
diff --git a/data/menu_helpers.s b/data/menu_helpers.s
deleted file mode 100644
index 29d42cb4b..000000000
--- a/data/menu_helpers.s
+++ /dev/null
@@ -1,102 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gSpriteImage_83E5808:: @ 83E5808
- .incbin "graphics/unknown_sprites/83E59A0/0.4bpp"
-
- .align 2
-gSpriteImage_83E5848:: @ 83E5848
- .incbin "graphics/unknown_sprites/83E59A0/1.4bpp"
-
- .align 2
-gSpriteImage_83E5888:: @ 83E5888
- .incbin "graphics/unknown_sprites/83E59B0/0.4bpp"
-
- .align 2
-gSpriteImage_83E58C8:: @ 83E58C8
- .incbin "graphics/unknown_sprites/83E59B0/1.4bpp"
-
- .align 2
-gSpriteImage_83E5908:: @ 83E5908
- .incbin "graphics/unknown_sprites/83E59C0/0.4bpp"
-
- .align 2
-gSpriteImage_83E5928:: @ 83E5928
- .incbin "graphics/unknown_sprites/83E59C0/1.4bpp"
-
- .align 2
-Palette_3E5948: @ 83E5948
- .incbin "graphics/interface/83E5948.gbapal"
-
- .align 2
-gUnknown_083E5968:: @ 83E5968
- obj_pal Palette_3E5948, 6
-
- .align 2
-gOamData_83E5970:: @ 83E5970
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0001
-
- .align 2
-gOamData_83E5978:: @ 83E5978
- .2byte 0x4000
- .2byte 0x0000
- .2byte 0x0001
-
- .align 2
-gOamData_83E5980:: @ 83E5980
- .2byte 0x8000
- .2byte 0x0000
- .2byte 0x0001
-
- .align 2
-gSpriteAnim_83E5988:: @ 83E5988
- obj_image_anim_frame 0, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E5990:: @ 83E5990
- obj_image_anim_frame 1, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83E5998:: @ 83E5998
- .4byte gSpriteAnim_83E5988
- .4byte gSpriteAnim_83E5990
-
- .align 2
-gSpriteImageTable_83E59A0:: @ 83E59A0
- obj_frame_tiles gSpriteImage_83E5808, 0x40
- obj_frame_tiles gSpriteImage_83E5848, 0x40
-
- .align 2
-gSpriteImageTable_83E59B0:: @ 83E59B0
- obj_frame_tiles gSpriteImage_83E5888, 0x40
- obj_frame_tiles gSpriteImage_83E58C8, 0x40
-
- .align 2
-gSpriteImageTable_83E59C0:: @ 83E59C0
- obj_frame_tiles gSpriteImage_83E5908, 0x20
- obj_frame_tiles gSpriteImage_83E5928, 0x20
-
- .align 2
-gSpriteTemplate_83E59D0:: @ 83E59D0
- spr_template 0xFFFF, 6, gOamData_83E5978, gSpriteAnimTable_83E5998, gSpriteImageTable_83E59A0, gDummySpriteAffineAnimTable, sub_80F9834
-
- .align 2
-gSpriteTemplate_83E59E8:: @ 83E59E8
- spr_template 0xFFFF, 6, gOamData_83E5980, gSpriteAnimTable_83E5998, gSpriteImageTable_83E59B0, gDummySpriteAffineAnimTable, sub_80F9834
-
- .align 2
-gSpriteTemplate_83E5A00:: @ 83E5A00
- spr_template 0xFFFF, 6, gOamData_83E5970, gSpriteAnimTable_83E5998, gSpriteImageTable_83E59C0, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_083E5A18:: @ 83E5A18
- .string "{PALETTE 0}$"
-
-gUnknown_083E5A1C:: @ 83E5A1C
- .string "▶$"
diff --git a/data/mystery_event_script_cmd_table.s b/data/mystery_event_script_cmd_table.s
new file mode 100644
index 000000000..171c35b4e
--- /dev/null
+++ b/data/mystery_event_script_cmd_table.s
@@ -0,0 +1,22 @@
+ .section script_data, "aw", %progbits
+
+ .align 2
+gMysteryEventScriptCmdTable:: @ 81DCAF4
+ .4byte MEScrCmd_nop
+ .4byte MEScrCmd_checkcompat
+ .4byte MEScrCmd_end
+ .4byte MEScrCmd_setmsg
+ .4byte MEScrCmd_setstatus
+ .4byte MEScrCmd_runscript
+ .4byte MEScrCmd_initramscript
+ .4byte MEScrCmd_setenigmaberry
+ .4byte MEScrCmd_giveribbon
+ .4byte MEScrCmd_givenationaldex
+ .4byte MEScrCmd_addrareword
+ .4byte MEScrCmd_setrecordmixinggift
+ .4byte MEScrCmd_givepokemon
+ .4byte MEScrCmd_addtrainer
+ .4byte MEScrCmd_enableresetrtc
+ .4byte MEScrCmd_checksum
+ .4byte MEScrCmd_crc
+gMysteryEventScriptCmdTableEnd::
diff --git a/data/option_menu.s b/data/option_menu.s
deleted file mode 100644
index cb517cc89..000000000
--- a/data/option_menu.s
+++ /dev/null
@@ -1,13 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_0839F5FC:: @ 839F5FC
- .incbin "graphics/misc/option_menu_text.gbapal"
-
-@ note: this is only used in the Japanese release
- .align 2
-gUnknown_0839F63C:: @ 839F63C
- .incbin "graphics/misc/option_menu_equals_sign.4bpp"
diff --git a/data/pokemon_icon.s b/data/pokemon_icon.s
deleted file mode 100644
index ff5aa33dc..000000000
--- a/data/pokemon_icon.s
+++ /dev/null
@@ -1,92 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 83BBD20
- .include "data/graphics/pokemon/icon_table.inc"
-
-@ 83BC400
- .include "data/graphics/pokemon/icon_palette_indices.inc"
-
-@ 83BC5B8
- .include "data/graphics/pokemon/icon_palette_table.inc"
-
- .align 2
-gOamData_83BC5E8:: @ 83BC5E8
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_83BC5F0:: @ 83BC5F0
- obj_image_anim_frame 0, 6
- obj_image_anim_frame 1, 6
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83BC5FC:: @ 83BC5FC
- obj_image_anim_frame 0, 8
- obj_image_anim_frame 1, 8
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83BC608:: @ 83BC608
- obj_image_anim_frame 0, 14
- obj_image_anim_frame 1, 14
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83BC614:: @ 83BC614
- obj_image_anim_frame 0, 22
- obj_image_anim_frame 1, 22
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83BC620:: @ 83BC620
- obj_image_anim_frame 0, 29
- obj_image_anim_frame 0, 29
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_83BC62C:: @ 83BC62C
- .4byte gSpriteAnim_83BC5F0
- .4byte gSpriteAnim_83BC5FC
- .4byte gSpriteAnim_83BC608
- .4byte gSpriteAnim_83BC614
- .4byte gSpriteAnim_83BC620
-
- .align 2
-gSpriteAffineAnim_83BC640:: @ 83BC640
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 10
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83BC650:: @ 83BC650
- obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 122
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83BC660:: @ 83BC660
- .4byte gSpriteAffineAnim_83BC640
- .4byte gSpriteAffineAnim_83BC650
-
- .align 1
-gSpriteImageSizes:: @ 83BC668
- @ square
- .2byte 0x20 @ 1×1
- .2byte 0x80 @ 2×2
- .2byte 0x200 @ 4×4
- .2byte 0x800 @ 8×8
-
- @ horizontal rectangle
- .2byte 0x40 @ 2×1
- .2byte 0x80 @ 4×1
- .2byte 0x100 @ 4×2
- .2byte 0x400 @ 8×4
-
- @ vertical rectangle
- .2byte 0x40 @ 1×2
- .2byte 0x80 @ 1×4
- .2byte 0x100 @ 2×4
- .2byte 0x400 @ 4×8
diff --git a/data/record_mixing.s b/data/record_mixing.s
deleted file mode 100644
index 8b46e1ed3..000000000
--- a/data/record_mixing.s
+++ /dev/null
@@ -1,68 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-recordMixingSecretBases:: @ 83D026C
- @ gSaveBlock1.secretBases
- .4byte gSaveBlock1 + 0x1A08
-
- .align 2
-recordMixingTvShows:: @ 83D0270
- @ gSaveBlock1.tvShows
- .4byte gSaveBlock1 + 0x2738
-
- .align 2
-gUnknown_083D0274:: @ 83D0274
- .4byte gSaveBlock1 + 0x2ABC
-
- .align 2
-gUnknown_083D0278:: @ 83D0278
- .4byte gSaveBlock1 + 0x2D94
-
- .align 2
-recordMixingEasyChatPairs:: @ 83D027C
- @ gSaveBlock1.easyChatPairs
- .4byte gSaveBlock1 + 0x2DD4
-
- .align 2
-gUnknown_083D0280:: @ 83D0280
- .4byte gUnknown_02038738
-
- .align 2
-gUnknown_083D0284:: @ 83D0284
- .4byte gSaveBlock2+0xA8
-
-gUnknown_083D0288:: @ 83D0288
- .byte 1, 0
-
-gUnknown_083D028A:: @ 83D028A
- .byte 1, 2, 0
- .byte 2, 0, 1
-
-gUnknown_083D0290:: @ 83D0290
- .byte 1, 0, 3, 2
- .byte 3, 0, 1, 2
- .byte 2, 0, 3, 1
- .byte 1, 3, 0, 2
- .byte 2, 3, 0, 1
- .byte 3, 2, 0, 1
- .byte 1, 2, 3, 0
- .byte 2, 3, 1, 0
- .byte 3, 2, 1, 0
-
-gUnknown_083D02B4:: @ 83D02B4
- .byte 0, 1
- .byte 1, 2
- .byte 2, 0
-
-gUnknown_083D02BA:: @ 83D02BA
- .byte 0, 1
- .byte 2, 3
-
- .byte 0, 2
- .byte 1, 3
-
- .byte 0, 3
- .byte 2, 1
diff --git a/data/region_map.s b/data/region_map.s
deleted file mode 100644
index d4d13f194..000000000
--- a/data/region_map.s
+++ /dev/null
@@ -1,259 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gPokenavCursor_Pal::
- .incbin "graphics/pokenav/cursor.gbapal"
-
- .align 2
-gUnknown_083E5AF0:: @ 83E5AF0
- .incbin "graphics/pokenav/cursor_small.4bpp.lz"
-
- .align 2
-gUnknown_083E5B34:: @ 83E5B34
- .incbin "graphics/pokenav/cursor_large.4bpp.lz"
-
- .align 2
-gRegionMapBrendanIconPalette:: @ 83E5C20
- .incbin "graphics/pokenav/brendan_icon.gbapal"
-
- .align 2
-gRegionMapBrendanIconTiles:: @ 83E5C40
- .incbin "graphics/pokenav/brendan_icon.4bpp"
-
- .align 2
-gRegionMapMayIconPalette:: @ 83E5CC0
- .incbin "graphics/pokenav/may_icon.gbapal"
-
- .align 2
-gRegionMapMayIconTiles:: @ 83E5CE0
- .incbin "graphics/pokenav/may_icon.4bpp"
-
- .align 2
-gUnknown_083E5D60:: @ 83E5D60
- .incbin "graphics/pokenav/region_map.gbapal", 0xE0, 0x40
-
- .align 2
-gUnknown_083E5DA0:: @ 83E5DA0
- .incbin "graphics/pokenav/region_map.8bpp.lz"
-
- .align 2
-gUnknown_083E6B04:: @ 83E6B04
- .incbin "graphics/pokenav/region_map_map.bin.lz"
-
-@ 83E6E50
- .include "data/region_map_sections.inc"
-
-@ 83E6FF4
- .include "data/region_map_locations.inc"
-
-gUnknown_083E7684:: @ 83E7684
- .2byte 50, 39
- .2byte 51, 41
- .2byte 52, 42
- .2byte 53, 43
- .2byte 54, 14
- .2byte 69, 43
- .2byte 66, 12
- .2byte 79, 49
- .2byte 59, 19
- .2byte 76, 27
- .2byte 65, 37
- .2byte 85, 46
- .2byte 88, 88
-
- .align 2
-gOamData_83E76B8:: @ 83E76B8
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_83E76C0:: @ 83E76C0
- obj_image_anim_frame 0, 20
- obj_image_anim_frame 4, 20
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83E76CC:: @ 83E76CC
- obj_image_anim_frame 0, 10
- obj_image_anim_frame 16, 10
- obj_image_anim_frame 32, 10
- obj_image_anim_frame 16, 10
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_83E76E0:: @ 83E76E0
- .4byte gSpriteAnim_83E76C0
- .4byte gSpriteAnim_83E76CC
-
- .align 2
-gUnknown_083E76E8:: @ 83E76E8
- obj_pal gPokenavCursor_Pal, 0x0000
-
- .align 2
-gSpriteTemplate_83E76F0:: @ 83E76F0
- spr_template 0, 0, gOamData_83E76B8, gSpriteAnimTable_83E76E0, NULL, gDummySpriteAffineAnimTable, sub_80FBAF0
-
- .align 2
-gOamData_083E7708:: @ 83E7708
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_83E7710: @ 83E7710
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
-gSpriteAnimTable_083E7718:: @ 83E7718 ANIMCMD
- .4byte gSpriteAnim_83E7710
-
-gUnknown_083E771C:: @ 83E771C
- .incbin "graphics/pokenav/map_frame.gbapal"
-
-gUnknown_083E773C:: @ 83E773C
- .incbin "graphics/pokenav/map_frame.4bpp.lz"
-
-gUnknown_083E7774:: @ 83E7774
- .incbin "graphics/pokenav/map_frame.bin.lz"
-
- .align 2
-gPokenavMapMisc_Pal::
- .incbin "graphics/pokenav/map_misc.gbapal"
-
-gUnknown_083E784C:: @ 83E784C
- .incbin "graphics/pokenav/map_misc.4bpp.lz"
-
-gUnknown_083E7920:: @ 83E7920
- .byte 0, 9, 1
- .byte 0, 10, 14
- .byte 0, 11, 15
- .byte 0, 12, 16
- .byte 0, 13, 17
- .byte 0, 14, 18
- .byte 0, 15, 19
- .byte 0, 0, 3
- .byte 0, 1, 4
- .byte 0, 2, 5
- .byte 0, 3, 6
- .byte 0, 4, 7
- .byte 0, 5, 8
- .byte 0, 6, 9
- .byte 0, 7, 10
- .byte 0, 8, 11
- .byte 0, 16, 0
- .byte 0, 17, 0
- .byte 0, 18, 0
- .byte 0, 19, 0
- .byte 0, 20, 0
- .byte 0, 21, 0
- .byte 0, 22, 0
- .byte 0, 23, 0
- .byte 0, 24, 0
- .byte 0, 25, 0
- .byte 0, 26, 0
- .byte 0, 27, 0
- .byte 0, 28, 0
- .byte 0, 29, 0
- .byte 0, 30, 0
- .byte 0, 31, 0
- .byte 0, 32, 0
- .byte 0, 33, 0
- .byte 0, 34, 0
- .byte 0, 35, 0
- .byte 0, 36, 0
- .byte 0, 37, 0
- .byte 0, 38, 0
- .byte 0, 39, 0
- .byte 0, 40, 0
- .byte 0, 41, 0
- .byte 0, 42, 0
- .byte 0, 43, 0
- .byte 0, 44, 0
- .byte 0, 45, 0
- .byte 0, 46, 0
- .byte 0, 47, 0
- .byte 0, 48, 0
- .byte 0, 49, 0
-
- .align 2
-Unknown_3E79B8: @ 83E79B8
- .4byte OtherText_PokeLeague
- .4byte OtherText_PokeCenter
-
- .align 2
-gUnknown_083E79C0:: @ 83E79C0
- .4byte Unknown_3E79B8
- .2byte 0xF
- .2byte 0x854
-
-@ XXX: what is this?
- .align 2
- .4byte 0x2000000
-
- .align 2
-gUnknown_083E79CC:: @ 83E79CC
- obj_pal gPokenavMapMisc_Pal, 0x0002
-
- .align 2
-gUnknown_083E79D4:: @ 83E79D4
- .2byte 2120, 58
- .2byte 65535, 88
-
- .align 2
-gOamData_83E79DC:: @ 83E79DC
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_83E79E4:: @ 83E79E4
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E79EC:: @ 83E79EC
- obj_image_anim_frame 1, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E79F4:: @ 83E79F4
- obj_image_anim_frame 3, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E79FC:: @ 83E79FC
- obj_image_anim_frame 5, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E7A04:: @ 83E7A04
- obj_image_anim_frame 6, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E7A0C:: @ 83E7A0C
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83E7A14:: @ 83E7A14
- obj_image_anim_frame 10, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83E7A1C:: @ 83E7A1C
- .4byte gSpriteAnim_83E79E4
- .4byte gSpriteAnim_83E79EC
- .4byte gSpriteAnim_83E79F4
- .4byte gSpriteAnim_83E79FC
- .4byte gSpriteAnim_83E7A04
- .4byte gSpriteAnim_83E7A0C
- .4byte gSpriteAnim_83E7A14
-
- .align 2
-gSpriteTemplate_83E7A38:: @ 83E7A38
- spr_template 2, 2, gOamData_83E79DC, gSpriteAnimTable_83E7A1C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
diff --git a/data/region_map_locations.inc b/data/region_map_locations.inc
deleted file mode 100644
index 389b5aa0c..000000000
--- a/data/region_map_locations.inc
+++ /dev/null
@@ -1,327 +0,0 @@
-gMapName_LittlerootTown: @ 83E6FF4
- .string "LITTLEROOT{NAME_END} TOWN$"
-
-gMapName_OldaleTown: @ 83E7006
- .string "OLDALE{NAME_END} TOWN$"
-
-gMapName_DewfordTown: @ 83E7014
- .string "DEWFORD{NAME_END} TOWN$"
-
-gMapName_LavaridgeTown: @ 83E7023
- .string "LAVARIDGE{NAME_END} TOWN$"
-
-gMapName_FallarborTown: @ 83E7034
- .string "FALLARBOR{NAME_END} TOWN$"
-
-gMapName_VerdanturfTown: @ 83E7045
- .string "VERDANTURF{NAME_END} TOWN$"
-
-gMapName_PacifidlogTown: @ 83E7057
- .string "PACIFIDLOG{NAME_END} TOWN$"
-
-gMapName_PetalburgCity: @ 83E7069
- .string "PETALBURG{NAME_END} CITY$"
-
-gMapName_SlateportCity: @ 83E707A
- .string "SLATEPORT{NAME_END} CITY$"
-
-gMapName_MauvilleCity: @ 83E708B
- .string "MAUVILLE{NAME_END} CITY$"
-
-gMapName_RustboroCity: @ 83E709B
- .string "RUSTBORO{NAME_END} CITY$"
-
-gMapName_FortreeCity: @ 83E70AB
- .string "FORTREE{NAME_END} CITY$"
-
-gMapName_LilycoveCity: @ 83E70BA
- .string "LILYCOVE{NAME_END} CITY$"
-
-gMapName_MossdeepCity: @ 83E70CA
- .string "MOSSDEEP{NAME_END} CITY$"
-
-gMapName_SootopolisCity: @ 83E70DA
- .string "SOOTOPOLIS{NAME_END} CITY$"
-
-gMapName_EverGrandeCity: @ 83E70EC
- .string "EVER GRANDE{NAME_END} CITY$"
-
-gMapName_Route101: @ 83E70FF
- .string "ROUTE 101$"
-
-gMapName_Route102: @ 83E7109
- .string "ROUTE 102$"
-
-gMapName_Route103: @ 83E7113
- .string "ROUTE 103$"
-
-gMapName_Route104: @ 83E711D
- .string "ROUTE 104$"
-
-gMapName_Route105: @ 83E7127
- .string "ROUTE 105$"
-
-gMapName_Route106: @ 83E7131
- .string "ROUTE 106$"
-
-gMapName_Route107: @ 83E713B
- .string "ROUTE 107$"
-
-gMapName_Route108: @ 83E7145
- .string "ROUTE 108$"
-
-gMapName_Route109: @ 83E714F
- .string "ROUTE 109$"
-
-gMapName_Route110: @ 83E7159
- .string "ROUTE 110$"
-
-gMapName_Route111: @ 83E7163
- .string "ROUTE 111$"
-
-gMapName_Route112: @ 83E716D
- .string "ROUTE 112$"
-
-gMapName_Route113: @ 83E7177
- .string "ROUTE 113$"
-
-gMapName_Route114: @ 83E7181
- .string "ROUTE 114$"
-
-gMapName_Route115: @ 83E718B
- .string "ROUTE 115$"
-
-gMapName_Route116: @ 83E7195
- .string "ROUTE 116$"
-
-gMapName_Route117: @ 83E719F
- .string "ROUTE 117$"
-
-gMapName_Route118: @ 83E71A9
- .string "ROUTE 118$"
-
-gMapName_Route119: @ 83E71B3
- .string "ROUTE 119$"
-
-gMapName_Route120: @ 83E71BD
- .string "ROUTE 120$"
-
-gMapName_Route121: @ 83E71C7
- .string "ROUTE 121$"
-
-gMapName_Route122: @ 83E71D1
- .string "ROUTE 122$"
-
-gMapName_Route123: @ 83E71DB
- .string "ROUTE 123$"
-
-gMapName_Route124: @ 83E71E5
- .string "ROUTE 124$"
-
-gMapName_Route125: @ 83E71EF
- .string "ROUTE 125$"
-
-gMapName_Route126: @ 83E71F9
- .string "ROUTE 126$"
-
-gMapName_Route127: @ 83E7203
- .string "ROUTE 127$"
-
-gMapName_Route128: @ 83E720D
- .string "ROUTE 128$"
-
-gMapName_Route129: @ 83E7217
- .string "ROUTE 129$"
-
-gMapName_Route130: @ 83E7221
- .string "ROUTE 130$"
-
-gMapName_Route131: @ 83E722B
- .string "ROUTE 131$"
-
-gMapName_Route132: @ 83E7235
- .string "ROUTE 132$"
-
-gMapName_Route133: @ 83E723F
- .string "ROUTE 133$"
-
-gMapName_Route134: @ 83E7249
- .string "ROUTE 134$"
-
-gMapName_Underwater: @ 83E7253
- .string "UNDERWATER$"
-
-gMapName_GraniteCave: @ 83E725E
- .string "GRANITE CAVE$"
-
-gMapName_MtChimney: @ 83E726B
- .string "MT. CHIMNEY$"
-
-gMapName_SafariZone: @ 83E7277
- .string "SAFARI ZONE$"
-
-gMapName_BattleTower: @ 83E7283
- .string "BATTLE TOWER$"
-
-gMapName_PetalburgWoods: @ 83E7290
- .string "PETALBURG WOODS$"
-
-gMapName_RusturfTunnel: @ 83E72A0
- .string "RUSTURF TUNNEL$"
-
-gMapName_AbandonedShip: @ 83E72AF
- .string "ABANDONED SHIP$"
-
-gMapName_NewMauville: @ 83E72BE
- .string "NEW MAUVILLE$"
-
-gMapName_MeteorFalls: @ 83E72CB
- .string "METEOR FALLS$"
-
-gMapName_MtPyre: @ 83E72D8
- .string "MT. PYRE$"
-
-gMapName_EvilTeamHideout: @ 83E72E1
- .string "{EVIL_TEAM} HIDEOUT$"
-
-gMapName_ShoalCave: @ 83E72EC
- .string "SHOAL CAVE$"
-
-gMapName_SeafloorCavern: @ 83E72F7
- .string "SEAFLOOR CAVERN$"
-
-gMapName_VictoryRoad: @ 83E7307
- .string "VICTORY ROAD$"
-
-gMapName_MirageIsland: @ 83E7314
- .string "MIRAGE ISLAND$"
-
-gMapName_CaveOfOrigin: @ 83E7322
- .string "CAVE OF ORIGIN$"
-
-gMapName_SouthernIsland: @ 83E7331
- .string "SOUTHERN ISLAND$"
-
-gMapName_FieryPath: @ 83E7341
- .string "FIERY PATH$"
-
-gMapName_JaggedPass: @ 83E734C
- .string "JAGGED PASS$"
-
-gMapName_SealedChamber: @ 83E7358
- .string "SEALED CHAMBER$"
-
-gMapName_ScorchedSlab: @ 83E7367
- .string "SCORCHED SLAB$"
-
-gMapName_IslandCave: @ 83E7375
- .string "ISLAND CAVE$"
-
-gMapName_DesertRuins: @ 83E7381
- .string "DESERT RUINS$"
-
-gMapName_AncientTomb: @ 83E738E
- .string "ANCIENT TOMB$"
-
-gMapName_InsideOfTruck: @ 83E739B
- .string "INSIDE OF TRUCK$"
-
-gMapName_SkyPillar: @ 83E73AB
- .string "SKY PILLAR$"
-
-gMapName_SecretBase: @ 83E73B6
- .string "SECRET BASE$"
-
-gMapName_None: @ 83E73C2
- .string "$"
-
- .align 2
-gRegionMapLocations:: @ 83E73C4
- region_map_location 4, 11, 1, 1, LittlerootTown
- region_map_location 4, 9, 1, 1, OldaleTown
- region_map_location 2, 14, 1, 1, DewfordTown
- region_map_location 5, 3, 1, 1, LavaridgeTown
- region_map_location 3, 0, 1, 1, FallarborTown
- region_map_location 4, 6, 1, 1, VerdanturfTown
- region_map_location 17, 10, 1, 1, PacifidlogTown
- region_map_location 1, 9, 1, 1, PetalburgCity
- region_map_location 8, 10, 1, 2, SlateportCity
- region_map_location 8, 6, 2, 1, MauvilleCity
- region_map_location 0, 5, 1, 2, RustboroCity
- region_map_location 12, 0, 1, 1, FortreeCity
- region_map_location 18, 3, 2, 1, LilycoveCity
- region_map_location 24, 5, 2, 1, MossdeepCity
- region_map_location 21, 7, 1, 1, SootopolisCity
- region_map_location 27, 8, 1, 2, EverGrandeCity
- region_map_location 4, 10, 1, 1, Route101
- region_map_location 2, 9, 2, 1, Route102
- region_map_location 4, 8, 4, 1, Route103
- region_map_location 0, 7, 1, 3, Route104
- region_map_location 0, 10, 1, 3, Route105
- region_map_location 0, 13, 2, 1, Route106
- region_map_location 3, 14, 3, 1, Route107
- region_map_location 6, 14, 2, 1, Route108
- region_map_location 8, 12, 1, 3, Route109
- region_map_location 8, 7, 1, 3, Route110
- region_map_location 8, 0, 1, 6, Route111
- region_map_location 6, 3, 2, 1, Route112
- region_map_location 4, 0, 4, 1, Route113
- region_map_location 1, 0, 2, 3, Route114
- region_map_location 0, 2, 1, 3, Route115
- region_map_location 1, 5, 4, 1, Route116
- region_map_location 5, 6, 3, 1, Route117
- region_map_location 10, 6, 2, 1, Route118
- region_map_location 11, 0, 1, 6, Route119
- region_map_location 13, 0, 1, 4, Route120
- region_map_location 14, 3, 4, 1, Route121
- region_map_location 16, 4, 1, 2, Route122
- region_map_location 12, 6, 5, 1, Route123
- region_map_location 20, 3, 4, 3, Route124
- region_map_location 24, 3, 2, 2, Route125
- region_map_location 20, 6, 3, 3, Route126
- region_map_location 23, 6, 3, 3, Route127
- region_map_location 23, 9, 4, 1, Route128
- region_map_location 24, 10, 2, 1, Route129
- region_map_location 21, 10, 3, 1, Route130
- region_map_location 18, 10, 3, 1, Route131
- region_map_location 15, 10, 2, 1, Route132
- region_map_location 12, 10, 3, 1, Route133
- region_map_location 9, 10, 3, 1, Route134
- region_map_location 20, 3, 4, 3, Underwater
- region_map_location 20, 6, 3, 3, Underwater
- region_map_location 23, 6, 3, 3, Underwater
- region_map_location 23, 9, 4, 1, Underwater
- region_map_location 21, 7, 1, 1, Underwater
- region_map_location 1, 13, 1, 1, GraniteCave
- region_map_location 6, 2, 1, 1, MtChimney
- region_map_location 16, 2, 1, 1, SafariZone
- region_map_location 22, 12, 1, 1, BattleTower
- region_map_location 0, 8, 1, 1, PetalburgWoods
- region_map_location 2, 5, 1, 1, RusturfTunnel
- region_map_location 6, 14, 1, 1, AbandonedShip
- region_map_location 8, 7, 1, 1, NewMauville
- region_map_location 0, 3, 1, 1, MeteorFalls
- region_map_location 1, 2, 1, 1, MeteorFalls
- region_map_location 16, 4, 1, 1, MtPyre
- region_map_location 19, 3, 1, 1, EvilTeamHideout
- region_map_location 24, 4, 1, 1, ShoalCave
- region_map_location 24, 9, 1, 1, SeafloorCavern
- region_map_location 24, 9, 1, 1, Underwater
- region_map_location 27, 9, 1, 1, VictoryRoad
- region_map_location 17, 10, 1, 1, MirageIsland
- region_map_location 21, 7, 1, 1, CaveOfOrigin
- region_map_location 12, 14, 1, 1, SouthernIsland
- region_map_location 6, 3, 1, 1, FieryPath
- region_map_location 7, 3, 1, 1, FieryPath
- region_map_location 6, 3, 1, 1, JaggedPass
- region_map_location 7, 2, 1, 1, JaggedPass
- region_map_location 11, 10, 1, 1, SealedChamber
- region_map_location 11, 10, 1, 1, Underwater
- region_map_location 13, 0, 1, 1, ScorchedSlab
- region_map_location 0, 10, 1, 1, IslandCave
- region_map_location 8, 3, 1, 1, DesertRuins
- region_map_location 13, 2, 1, 1, AncientTomb
- region_map_location 0, 0, 1, 1, InsideOfTruck
- region_map_location 19, 10, 1, 1, SkyPillar
- region_map_location 0, 0, 1, 1, SecretBase
- region_map_location 0, 0, 1, 1, None
diff --git a/data/region_map_sections.inc b/data/region_map_sections.inc
deleted file mode 100644
index 6336eac0e..000000000
--- a/data/region_map_sections.inc
+++ /dev/null
@@ -1,16 +0,0 @@
-gRegionMapSections:: @ 83E6E50
- .byte 0x58,0x1D,0x1D,0x04,0x1C,0x1C,0x1C,0x1C,0x1A,0x58,0x58,0x22,0x0B,0x23,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x58,0x1D,0x58,0x58,0x58,0x58,0x38,0x38,0x1A,0x58,0x58,0x22,0x58,0x23,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x1E,0x1D,0x58,0x58,0x58,0x58,0x38,0x38,0x1A,0x58,0x58,0x22,0x58,0x23,0x58,0x58,0x39,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x1E,0x58,0x58,0x58,0x58,0x03,0x1B,0x1B,0x1A,0x58,0x58,0x22,0x58,0x23,0x24,0x24,0x24,0x24,0x0C,0x0C,0x27,0x27,0x27,0x27,0x28,0x28,0x58,0x58
- .byte 0x1E,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x1A,0x58,0x58,0x22,0x58,0x58,0x58,0x58,0x25,0x58,0x58,0x58,0x27,0x27,0x27,0x27,0x28,0x28,0x58,0x58
- .byte 0x0A,0x1F,0x1F,0x1F,0x1F,0x58,0x58,0x58,0x1A,0x58,0x58,0x22,0x58,0x58,0x58,0x58,0x25,0x58,0x58,0x58,0x27,0x27,0x27,0x27,0x0D,0x0D,0x58,0x58
- .byte 0x0A,0x58,0x58,0x58,0x05,0x20,0x20,0x20,0x09,0x09,0x21,0x21,0x26,0x26,0x26,0x26,0x26,0x58,0x58,0x58,0x29,0x29,0x29,0x2A,0x2A,0x2A,0x58,0x58
- .byte 0x13,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x29,0x0E,0x29,0x2A,0x2A,0x2A,0x58,0x58
- .byte 0x13,0x58,0x58,0x58,0x12,0x12,0x12,0x12,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x29,0x29,0x29,0x2A,0x2A,0x2A,0x58,0x0F
- .byte 0x13,0x07,0x11,0x11,0x01,0x58,0x58,0x58,0x19,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x2B,0x2B,0x2B,0x2B,0x0F
- .byte 0x14,0x58,0x58,0x58,0x10,0x58,0x58,0x58,0x08,0x31,0x31,0x31,0x30,0x30,0x30,0x2F,0x2F,0x06,0x2E,0x2E,0x2E,0x2D,0x2D,0x2D,0x2C,0x2C,0x58,0x58
- .byte 0x14,0x58,0x58,0x58,0x00,0x58,0x58,0x58,0x08,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x14,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x18,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x3A,0x58,0x58,0x58,0x58,0x58
- .byte 0x15,0x15,0x15,0x58,0x58,0x58,0x58,0x58,0x18,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
- .byte 0x58,0x58,0x02,0x16,0x16,0x16,0x17,0x17,0x18,0x58,0x58,0x58,0x49,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58
diff --git a/data/rom_8080874.s b/data/rom_8080874.s
deleted file mode 100644
index 220ec5f96..000000000
--- a/data/rom_8080874.s
+++ /dev/null
@@ -1,18 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 1
-gUnknown_0839ACDC:: @ 839ACDC
- .2byte 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0
-
- .align 2
-gUnknown_0839ACE8:: @ 839ACE8
- .4byte 4
-
- .align 2
-gUnknown_0839ACEC:: @ 839ACEC
- .4byte REG_WIN0H
- .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
- .4byte 1
diff --git a/data/script_funcs.s b/data/script_funcs.s
deleted file mode 100644
index 23d7a76f5..000000000
--- a/data/script_funcs.s
+++ /dev/null
@@ -1,22 +0,0 @@
- .section script_data, "aw", %progbits
-
- .align 2
-gScriptFuncs:: @ 81DCAF4
- .4byte sub_81263D0
- .4byte sub_8126380
- .4byte script_status_stop_and_ret_1
- .4byte sub_81263E4
- .4byte sub_81263D4
- .4byte sub_812641C
- .4byte sub_8126524
- .4byte sub_8126438
- .4byte sub_81264F0
- .4byte sub_812658C
- .4byte sub_81265B0
- .4byte sub_81265DC
- .4byte sub_8126608
- .4byte sub_8126714
- .4byte sub_8126754
- .4byte sub_8126778
- .4byte sub_81267C0
-gScriptFuncs_End::
diff --git a/data/scripts/bard.inc b/data/scripts/bard.inc
index a30045fc8..3f25b100f 100644
--- a/data/scripts/bard.inc
+++ b/data/scripts/bard.inc
@@ -1,5 +1,5 @@
MauvilleCity_PokemonCenter_1F_EventScript_1AE744:: @ 81AE744
- special 97
+ special sub_80F7B14
switch RESULT
case 0, MauvilleCity_PokemonCenter_1F_EventScript_1AE784
case 1, MauvilleCity_PokemonCenter_1F_EventScript_1AE845
@@ -20,9 +20,9 @@ MauvilleCity_PokemonCenter_1F_EventScript_1AE784:: @ 81AE784
MauvilleCity_PokemonCenter_1F_EventScript_1AE7A5:: @ 81AE7A5
setvar 0x8004, 0
- special 103
+ special sub_80F7C54
pause 60
- special 98
+ special sub_80F7B2C
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7D2
msgbox MauvilleCity_PokemonCenter_1F_Text_1B0AED, 4
@@ -51,12 +51,12 @@ MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1:: @ 81AE7F1
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE83B
msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BD0, 4
setvar 0x8004, 1
- special 103
+ special sub_80F7C54
pause 60
msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BFA, 5
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1
- special 99
+ special sub_80F7B40
msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C23, 4
release
end
diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc
index fcf32d15d..1bbe7d355 100644
--- a/data/scripts/berry_tree.inc
+++ b/data/scripts/berry_tree.inc
@@ -1,5 +1,5 @@
BerryTreeScript:: @ 81A14DD
- special 43
+ special FieldObjectInteractionGetBerryTreeData
switch 0x8004
case 255, Route102_EventScript_1A1533
case 0, Route102_EventScript_1A153D
@@ -21,7 +21,7 @@ Route102_EventScript_1A1533:: @ 81A1533
Route102_EventScript_1A153D:: @ 81A153D
lock
faceplayer
- specialval RESULT, 49
+ specialval RESULT, PlayerHasBerries
compare RESULT, 1
jumpeq Route102_EventScript_1A1558
message Route102_Text_1A16B6
@@ -41,7 +41,7 @@ Route102_EventScript_1A1558:: @ 81A1558
Route102_EventScript_1A1577:: @ 81A1577
fadescreen 1
closebutton
- special 44
+ special sub_80B4EE4
waitstate
compare ITEM_ID, 0
jumpeq Route102_EventScript_1A1593
@@ -108,10 +108,10 @@ Route102_EventScript_1A15F9:: @ 81A15F9
jumpeq Route102_EventScript_1A164B
Route102_EventScript_1A161D:: @ 81A161D
- special 46
+ special FieldObjectInteractionPickBerryTree
compare 0x8004, 0
jumpeq Route102_EventScript_1A1642
- special 47
+ special FieldObjectInteractionRemoveBerryTree
message Route102_Text_1A17FD
fanfare 387
waittext
@@ -139,7 +139,7 @@ Route102_EventScript_1A164B:: @ 81A164B
gUnknown_081A1654:: @ 81A1654
lockall
- special 43
+ special FieldObjectInteractionGetBerryTreeData
call Route102_EventScript_1A16A9
releaseall
end
@@ -159,14 +159,14 @@ Route102_EventScript_1A168D:: @ 81A168D
end
gUnknown_081A168F:: @ 81A168F
- special 43
+ special FieldObjectInteractionGetBerryTreeData
lockall
Route102_EventScript_1A1693:: @ 81A1693
message Route102_Text_1A1912
waittext
- special 48
- special 94
+ special FieldObjectInteractionWaterBerryTree
+ special DoWateringBerryTreeAnim
waitstate
message Route102_Text_1A1925
waittext
@@ -175,7 +175,7 @@ Route102_EventScript_1A1693:: @ 81A1693
end
Route102_EventScript_1A16A9:: @ 81A16A9
- special 45
+ special FieldObjectInteractionPlantBerryTree
inccounter GAME_STAT_PLANTED_BERRIES
message Route102_Text_1A16FB
waittext
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index c8f701d95..4a919c597 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -86,7 +86,7 @@ VerdanturfTown_PokemonCenter_2F_MapScript2_1A3D88:: @ 81A3D88
.2byte 0
OldaleTown_PokemonCenter_2F_EventScript_1A3DB2:: @ 81A3DB2
- special 31
+ special CloseLink
setvar 0x4087, 0
move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358
waitmove 0
@@ -99,7 +99,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3DD9:: @ 81A3DD9
return
OldaleTown_PokemonCenter_2F_EventScript_1A3DDA:: @ 81A3DDA
- special 31
+ special CloseLink
setvar 0x4087, 0
compare 0x8007, 0
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C
@@ -120,13 +120,13 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3E17:: @ 81A3E17
lockall
call OldaleTown_PokemonCenter_2F_EventScript_1A3E30
setmaptile 8, 3, 605, 1
- special 142
+ special DrawWholeMapView
hidebox 0, 0, 29, 19
releaseall
end
OldaleTown_PokemonCenter_2F_EventScript_1A3E30:: @ 81A3E30
- special 31
+ special CloseLink
setvar 0x4087, 0
compare 0x8007, 0
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C
@@ -148,14 +148,14 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3E30:: @ 81A3E30
OldaleTown_PokemonCenter_2F_EventScript_1A3E7B:: @ 81A3E7B
call OldaleTown_PokemonCenter_2F_EventScript_1A3DB2
setmaptile 11, 3, 605, 1
- special 142
+ special DrawWholeMapView
end
OldaleTown_PokemonCenter_2F_EventScript_1A3E8D:: @ 81A3E8D
lockall
call OldaleTown_PokemonCenter_2F_EventScript_1A3DDA
setmaptile 5, 3, 605, 1
- special 142
+ special DrawWholeMapView
hidebox 0, 0, 29, 19
releaseall
end
@@ -199,7 +199,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3EF2:: @ 81A3EF2
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
message OldaleTown_PokemonCenter_2F_Text_1A490C
waittext
- special 28
+ special sub_808347C
waitstate
compare RESULT, 1
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3F5E
@@ -215,14 +215,14 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3EF2:: @ 81A3EF2
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5
OldaleTown_PokemonCenter_2F_EventScript_1A3F5E:: @ 81A3F5E
- special 0
- special 39
- special 331
+ special HealPlayerParty
+ special SavePlayerParty
+ special LoadPlayerBag
copyvar 0x4087, 0x8004
message2 OldaleTown_PokemonCenter_2F_Text_1A4A22
waittext
setmaptile 5, 3, 514, 0
- special 142
+ special DrawWholeMapView
pause 60
move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356
waitmove 0
@@ -239,16 +239,16 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3F5E:: @ 81A3F5E
release
compare 0x8004, 5
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3FCD
- special 1
+ special SetCableClubWarp
warp SingleBattleColosseum, 255, 6, 8
- special 2
+ special DoCableClubWarp
waitstate
end
OldaleTown_PokemonCenter_2F_EventScript_1A3FCD:: @ 81A3FCD
- special 1
+ special SetCableClubWarp
warp DoubleBattleColosseum, 255, 5, 8
- special 2
+ special DoCableClubWarp
waitstate
end
@@ -280,7 +280,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A403C:: @ 81A403C
return
OldaleTown_PokemonCenter_2F_EventScript_1A4042:: @ 81A4042
- special 61
+ special CheckForAlivePartyMons
compare RESULT, 0
jumpif 5, OldaleTown_PokemonCenter_2F_EventScript_1A4056
setvar 0x8004, 2
@@ -304,28 +304,28 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4068:: @ 81A4068
jump OldaleTown_PokemonCenter_2F_EventScript_1A432D
OldaleTown_PokemonCenter_2F_EventScript_1A4093:: @ 81A4093
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4C03
waittext
waitbutton
jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0
OldaleTown_PokemonCenter_2F_EventScript_1A40A2:: @ 81A40A2
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4BCC
waittext
waitbutton
jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0
OldaleTown_PokemonCenter_2F_EventScript_1A40B1:: @ 81A40B1
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4B95
waittext
waitbutton
jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0
OldaleTown_PokemonCenter_2F_EventScript_1A40C0:: @ 81A40C0
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4C38
waittext
waitbutton
@@ -366,7 +366,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A40FA:: @ 81A40FA
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
message OldaleTown_PokemonCenter_2F_Text_1A490C
waittext
- special 29
+ special sub_80834E4
waitstate
compare RESULT, 1
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4166
@@ -387,7 +387,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4166:: @ 81A4166
message2 OldaleTown_PokemonCenter_2F_Text_1A4A22
waittext
setmaptile 8, 3, 514, 0
- special 142
+ special DrawWholeMapView
pause 60
move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356
waitmove 0
@@ -405,10 +405,10 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4166:: @ 81A4166
jump OldaleTown_PokemonCenter_2F_EventScript_1A4325
OldaleTown_PokemonCenter_2F_EventScript_1A41BB:: @ 81A41BB
- specialval RESULT, 131
+ specialval RESULT, CalculatePlayerPartyCount
compare RESULT, 2
jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A41E1
- specialval RESULT, 339
+ specialval RESULT, GetNameOfEnigmaBerryInPlayerParty
compare RESULT, 1
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A41EE
setvar RESULT, 1
@@ -460,9 +460,9 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4229:: @ 81A4229
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
message OldaleTown_PokemonCenter_2F_Text_1A490C
waittext
- special 30
+ special sub_808350C
waitstate
- special 341
+ special sub_80835D8
waitstate
compare RESULT, 1
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4294
@@ -485,7 +485,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4294:: @ 81A4294
message2 OldaleTown_PokemonCenter_2F_Text_1A4A22
waittext
setmaptile 11, 3, 514, 0
- special 142
+ special DrawWholeMapView
pause 60
move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356
waitmove 0
@@ -503,7 +503,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4294:: @ 81A4294
jump OldaleTown_PokemonCenter_2F_EventScript_1A4325
OldaleTown_PokemonCenter_2F_EventScript_1A42E9:: @ 81A42E9
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4AC8
waittext
waitbutton
@@ -511,7 +511,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A42E9:: @ 81A42E9
end
OldaleTown_PokemonCenter_2F_EventScript_1A42F5:: @ 81A42F5
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4A85
waittext
waitbutton
@@ -519,7 +519,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A42F5:: @ 81A42F5
end
OldaleTown_PokemonCenter_2F_EventScript_1A4301:: @ 81A4301
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4A30
waittext
waitbutton
@@ -527,7 +527,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4301:: @ 81A4301
end
OldaleTown_PokemonCenter_2F_EventScript_1A430D:: @ 81A430D
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4B1D
waittext
waitbutton
@@ -535,7 +535,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A430D:: @ 81A430D
end
OldaleTown_PokemonCenter_2F_EventScript_1A4319:: @ 81A4319
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4B59
waittext
waitbutton
@@ -543,13 +543,13 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4319:: @ 81A4319
end
OldaleTown_PokemonCenter_2F_EventScript_1A4325:: @ 81A4325
- special 1
- special 2
+ special SetCableClubWarp
+ special DoCableClubWarp
waitstate
end
OldaleTown_PokemonCenter_2F_EventScript_1A432D:: @ 81A432D
- special 31
+ special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4B6C
waittext
waitbutton
@@ -597,7 +597,7 @@ OldaleTown_PokemonCenter_2F_Movement_1A4361:: @ 81A4361
gUnknown_081A4363:: @ 81A4363
lockall
- special 196
+ special ShowLinkBattleRecords
waitbutton
hidebox 0, 0, 29, 19
releaseall
@@ -605,57 +605,57 @@ gUnknown_081A4363:: @ 81A4363
SingleBattleColosseum_EventScript_1A436F:: @ 81A436F
setvar 0x8005, 0
- special 32
+ special sub_8083B90
waitstate
end
SingleBattleColosseum_EventScript_1A4379:: @ 81A4379
setvar 0x8005, 1
- special 32
+ special sub_8083B90
waitstate
end
DoubleBattleColosseum_EventScript_1A4383:: @ 81A4383
fadescreen 1
- special 41
+ special sub_80C5568
waitstate
compare RESULT, 0
jumpeq DoubleBattleColosseum_EventScript_1A43EF
setvar 0x8005, 0
- special 32
+ special sub_8083B90
waitstate
end
DoubleBattleColosseum_EventScript_1A439E:: @ 81A439E
fadescreen 1
- special 41
+ special sub_80C5568
waitstate
compare RESULT, 0
jumpeq DoubleBattleColosseum_EventScript_1A43EF
setvar 0x8005, 1
- special 32
+ special sub_8083B90
waitstate
end
DoubleBattleColosseum_EventScript_1A43B9:: @ 81A43B9
fadescreen 1
- special 41
+ special sub_80C5568
waitstate
compare RESULT, 0
jumpeq DoubleBattleColosseum_EventScript_1A43EF
setvar 0x8005, 2
- special 32
+ special sub_8083B90
waitstate
end
DoubleBattleColosseum_EventScript_1A43D4:: @ 81A43D4
fadescreen 1
- special 41
+ special sub_80C5568
waitstate
compare RESULT, 0
jumpeq DoubleBattleColosseum_EventScript_1A43EF
setvar 0x8005, 3
- special 32
+ special sub_8083B90
waitstate
end
@@ -664,31 +664,31 @@ DoubleBattleColosseum_EventScript_1A43EF:: @ 81A43EF
TradeCenter_EventScript_1A43F0:: @ 81A43F0
setvar 0x8005, 0
- special 33
+ special sub_8083B5C
waitstate
end
TradeCenter_EventScript_1A43FA:: @ 81A43FA
setvar 0x8005, 1
- special 33
+ special sub_8083B5C
waitstate
end
@ 81A4404
setvar 0x8005, 2
- special 33
+ special sub_8083B5C
waitstate
end
@ 81A440E
setvar 0x8005, 3
- special 33
+ special sub_8083B5C
waitstate
end
RecordCorner_EventScript_1A4418:: @ 81A4418
setvar 0x8005, 0
- special 27
+ special sub_80B929C
waitstate
compare 0x4001, 0
jumpif 5, RecordCorner_EventScript_1A446C
@@ -696,7 +696,7 @@ RecordCorner_EventScript_1A4418:: @ 81A4418
RecordCorner_EventScript_1A442D:: @ 81A442D
setvar 0x8005, 1
- special 27
+ special sub_80B929C
waitstate
compare 0x4001, 0
jumpif 5, RecordCorner_EventScript_1A446C
@@ -704,7 +704,7 @@ RecordCorner_EventScript_1A442D:: @ 81A442D
RecordCorner_EventScript_1A4442:: @ 81A4442
setvar 0x8005, 2
- special 27
+ special sub_80B929C
waitstate
compare 0x4001, 0
jumpif 5, RecordCorner_EventScript_1A446C
@@ -712,7 +712,7 @@ RecordCorner_EventScript_1A4442:: @ 81A4442
RecordCorner_EventScript_1A4457:: @ 81A4457
setvar 0x8005, 3
- special 27
+ special sub_80B929C
waitstate
compare 0x4001, 0
jumpif 5, RecordCorner_EventScript_1A446C
@@ -731,7 +731,7 @@ TradeRoom_ReadTrainerCard1:: @ 81A4479
waittext
waitbutton
fadescreen 1
- special 42
+ special sub_8083BDC
waitstate
end
@@ -740,7 +740,7 @@ TradeRoom_ReadTrainerCard2:: @ 81A4487
waittext
waitbutton
fadescreen 1
- special 42
+ special sub_8083BDC
waitstate
end
@@ -752,40 +752,40 @@ TradeRoom_TooBusyToNotice:: @ 81A4495
end
SingleBattleColosseum_EventScript_1A449E:: @ 81A449E
- special 295
+ special sub_8064EAC
message SingleBattleColosseum_Text_1A4D7E
waittext
waitbutton
- special 296
+ special sub_8064ED4
closebutton
end
TradeCenter_EventScript_1A44AD:: @ 81A44AD
- special 295
+ special sub_8064EAC
message TradeCenter_Text_1A4DAB
waittext
waitbutton
- special 296
+ special sub_8064ED4
closebutton
end
RecordCorner_EventScript_1A44BC:: @ 81A44BC
compare 0x4000, 0
jumpif 5, RecordCorner_EventScript_1A44D6
- special 295
+ special sub_8064EAC
message RecordCorner_Text_1A4DD7
waittext
waitbutton
- special 296
+ special sub_8064ED4
closebutton
end
RecordCorner_EventScript_1A44D6:: @ 81A44D6
- special 295
+ special sub_8064EAC
message RecordCorner_Text_1A4DF7
waittext
waitbutton
- special 296
+ special sub_8064ED4
closebutton
end
@@ -799,11 +799,11 @@ TradeRoom_PromptToCancelLink:: @ 81A44E5
TradeRoom_TerminateLink:: @ 81A44FE
message2 TradeRoom_TerminatingLink
waittext
- special 5
+ special sub_80839D0
end
gUnknown_081A4508:: @ 81A4508
- special 4
- special 3
+ special sub_80839A4
+ special sub_80810DC
waitstate
end
diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc
index a8b134c0b..1952264d2 100644
--- a/data/scripts/contest_hall.inc
+++ b/data/scripts/contest_hall.inc
@@ -122,7 +122,7 @@ FallarborTown_ContestLobby_EventScript_1A5048:: @ 81A5048
choosecontestpkmn
compare 0x8004, 255
jumpeq FallarborTown_ContestLobby_EventScript_1A5097
- special 84
+ special sub_80C43F4
compare RESULT, 0
jumpeq FallarborTown_ContestLobby_EventScript_1A50C8
compare RESULT, 1
@@ -337,7 +337,7 @@ LinkContestRoom1_EventScript_1A5311:: @ 81A5311
return
LinkContestRoom1_EventScript_1A5323:: @ 81A5323
- special 81
+ special sub_80C4C64
addvar 0x8006, 1
buffernum 1, 0x8006
lockall
@@ -352,7 +352,7 @@ LinkContestRoom1_EventScript_1A5323:: @ 81A5323
releaseall
addvar 0x8006, -1
playsfx 15
- special 320
+ special ShowContestEntryMonPic
call LinkContestRoom1_EventScript_1A535E
return
@@ -430,7 +430,7 @@ LinkContestRoom1_EventScript_1A53E5:: @ 81A53E5
return
LinkContestRoom1_EventScript_1A5455:: @ 81A5455
- special 87
+ special sub_80C47A0
compare 0x4088, 1
callif 1, LinkContestRoom1_EventScript_1A555A
compare 0x4088, 2
@@ -463,7 +463,7 @@ LinkContestRoom1_EventScript_1A5455:: @ 81A5455
LinkContestRoom1_EventScript_1A54EB:: @ 81A54EB
setvar RESULT, 8
- special 340
+ special ScriptRandom
compare RESULT, 0
callif 1, LinkContestRoom1_EventScript_1A5760
compare RESULT, 1
@@ -725,7 +725,7 @@ LinkContestRoom1_EventScript_1A5880:: @ 81A5880
closebutton
release
disappear 13
- special 321
+ special sub_80C5164
switch 0x8006
case 0, LinkContestRoom1_EventScript_1A58BA
case 1, LinkContestRoom1_EventScript_1A58C7
@@ -857,7 +857,7 @@ LinkContestRoom1_EventScript_1A59F2:: @ 81A59F2
return
LinkContestRoom1_EventScript_1A59FC:: @ 81A59FC
- special 76
+ special sub_80C47C0
switch 0x8005
case 0, LinkContestRoom1_EventScript_1A5A31
case 1, LinkContestRoom1_EventScript_1A5A37
@@ -882,8 +882,8 @@ LinkContestRoom1_EventScript_1A5A43:: @ 81A5A43
return
LinkContestRoom1_EventScript_1A5A49:: @ 81A5A49
- special 79
- special 80
+ special sub_80C47F0
+ special sub_80C4858
addvar 0x8005, 1
buffernum 1, 0x8005
addvar 0x8005, -1
@@ -1006,7 +1006,7 @@ LinkContestRoom1_EventScript_1A5BAB:: @ 81A5BAB
setvar 0x4001, 0
call LinkContestRoom1_EventScript_1A5A90
pause 30
- special 134
+ special sub_80C4CF8
compare 0x8004, 1
jumpeq LinkContestRoom1_EventScript_1A5C46
return
@@ -1015,19 +1015,19 @@ LinkContestRoom1_EventScript_1A5BF6:: @ 81A5BF6
inccounter GAME_STAT_WON_CONTEST
msgbox LinkContestRoom1_Text_1A6DF1, 3
pause 90
- special 134
+ special sub_80C4CF8
compare 0x8004, 1
jumpeq LinkContestRoom1_EventScript_1A5C46
return
LinkContestRoom1_EventScript_1A5C12:: @ 81A5C12
- specialval RESULT, 88
+ specialval RESULT, sub_80C4440
compare RESULT, 1
jumpeq LinkContestRoom1_EventScript_1A5C23
return
LinkContestRoom1_EventScript_1A5C23:: @ 81A5C23
- special 76
+ special sub_80C47C0
compare 0x8005, 3
jumpeq LinkContestRoom1_EventScript_1A5C32
return
@@ -1052,7 +1052,7 @@ LinkContestRoom1_EventScript_1A5C46:: @ 81A5C46
LinkContestRoom1_EventScript_1A5C4C:: @ 81A5C4C
pause 60
call LinkContestRoom1_EventScript_1A5C6A
- special 134
+ special sub_80C4CF8
compare 0x8004, 1
jumpeq LinkContestRoom1_EventScript_1A5C64
closebutton
@@ -1063,8 +1063,8 @@ LinkContestRoom1_EventScript_1A5C64:: @ 81A5C64
return
LinkContestRoom1_EventScript_1A5C6A:: @ 81A5C6A
- special 77
- special 76
+ special sub_80C496C
+ special sub_80C47C0
comparevars 0x8004, 0x8005
jumpeq LinkContestRoom1_EventScript_1A5C7C
return
@@ -1110,7 +1110,7 @@ LinkContestRoom1_EventScript_1A5CD8:: @ 81A5CD8
return
LinkContestRoom1_EventScript_1A5CE5:: @ 81A5CE5
- special 76
+ special sub_80C47C0
compare 0x8005, 3
jumpeq LinkContestRoom1_EventScript_1A5CFC
msgbox LinkContestRoom1_Text_1A6DF1, 3
@@ -1120,7 +1120,7 @@ LinkContestRoom1_EventScript_1A5CFC:: @ 81A5CFC
compare 0x4088, 2
callif 1, LinkContestRoom1_EventScript_1A5C42
inccounter GAME_STAT_WON_CONTEST
- specialval RESULT, 88
+ specialval RESULT, sub_80C4440
compare RESULT, 0
jumpeq LinkContestRoom1_EventScript_1A5D5B
compare CONTEST_RANK, 3
@@ -1141,7 +1141,7 @@ LinkContestRoom1_EventScript_1A5D3B:: @ 81A5D3B
return
LinkContestRoom1_EventScript_1A5D5B:: @ 81A5D5B
- special 89
+ special sub_80C44C0
inccounter GAME_STAT_RECEIVED_RIBBONS
setflag 2107
lockall
@@ -1149,7 +1149,7 @@ LinkContestRoom1_EventScript_1A5D5B:: @ 81A5D5B
fanfare 370
msgbox LinkContestRoom1_Text_1A6D96, 4
waitfanfare
- special 80
+ special sub_80C4858
msgbox LinkContestRoom1_Text_1A6DAC, 4
releaseall
return
diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc
index 1e248ba9f..b5b3d4670 100644
--- a/data/scripts/day_care.inc
+++ b/data/scripts/day_care.inc
@@ -1,8 +1,8 @@
Route117_EventScript_1B222D:: @ 81B222D
lock
faceplayer
- special 181
- specialval RESULT, 182
+ special sp0B5_daycare
+ specialval RESULT, sp0B6_daycare
compare RESULT, 1
jumpeq Route117_EventScript_1B2262
compare RESULT, 2
@@ -22,12 +22,12 @@ Route117_EventScript_1B2262:: @ 81B2262
jumpeq Route117_EventScript_1B2298
msgbox Route117_Text_1B2745, 4
clearflag 134
- special 183
+ special sub_8041E7C
release
end
Route117_EventScript_1B2298:: @ 81B2298
- specialval RESULT, 131
+ specialval RESULT, CalculatePlayerPartyCount
compare RESULT, 6
jumpif 5, Route117_EventScript_1B22B2
msgbox Route117_Text_1B2766, 4
@@ -41,13 +41,13 @@ Route117_EventScript_1B22B2:: @ 81B22B2
waittext
waitbutton
msgbox Route117_Text_1B27CD, 4
- special 184
+ special sp0B8_daycare
clearflag 134
release
end
Route117_EventScript_1B22CD:: @ 81B22CD
- specialval RESULT, 195
+ specialval RESULT, sub_8042B4C
compare RESULT, 1
callif 1, Route117_EventScript_1B22DE
return
@@ -57,7 +57,7 @@ Route117_EventScript_1B22DE:: @ 81B22DE
return
Route117_EventScript_1B22E7:: @ 81B22E7
- special 181
+ special sp0B5_daycare
msgbox Route117_Text_1B2710, 4
setvar 0x8004, 0
call Route117_EventScript_1B22CD
@@ -65,10 +65,10 @@ Route117_EventScript_1B22E7:: @ 81B22E7
end
Route117_EventScript_1B22FE:: @ 81B22FE
- special 181
+ special sp0B5_daycare
msgbox Route117_Text_1B2897, 4
- special 185
- special 141
+ special sp0B9_daycare_relationship_comment
+ special ShowFieldMessageStringVar4
waittext
waitbutton
setvar 0x8004, 0
@@ -81,7 +81,7 @@ Route117_EventScript_1B22FE:: @ 81B22FE
Route117_PokemonDayCare_EventScript_1B2327:: @ 81B2327
lock
faceplayer
- specialval RESULT, 182
+ specialval RESULT, sp0B6_daycare
compare RESULT, 1
jumpeq Route117_PokemonDayCare_EventScript_1B2407
compare RESULT, 2
@@ -96,26 +96,26 @@ Route117_PokemonDayCare_EventScript_1B2327:: @ 81B2327
end
Route117_PokemonDayCare_EventScript_1B236C:: @ 81B236C
- specialval RESULT, 132
+ specialval RESULT, sub_8095B6C
compare RESULT, 1
jumpeq Route117_PokemonDayCare_EventScript_1B23F3
msgbox Route117_PokemonDayCare_Text_1B2947, 4
fadescreen 1
- special 188
+ special ChooseSendDaycareMon
waitstate
compare 0x8004, 255
jumpeq Route117_PokemonDayCare_EventScript_1B23D0
- specialval RESULT, 133
+ specialval RESULT, sub_8095C10
compare RESULT, 0
jumpeq Route117_PokemonDayCare_EventScript_1B23FD
- specialval 0x8005, 186
+ specialval 0x8005, sub_8042328
checksound
pokecry 0x8005, 0
msgbox Route117_PokemonDayCare_Text_1B296E, 4
waitpokecry
- special 187
+ special Daycare_SendPokemon_Special
inccounter GAME_STAT_USED_DAYCARE
- specialval RESULT, 182
+ specialval RESULT, sp0B6_daycare
compare RESULT, 2
jumpeq Route117_PokemonDayCare_EventScript_1B23DA
release
@@ -153,7 +153,7 @@ Route117_PokemonDayCare_EventScript_1B2411:: @ 81B2411
return
Route117_PokemonDayCare_EventScript_1B241A:: @ 81B241A
- specialval RESULT, 190
+ specialval RESULT, sub_80417B8
compare RESULT, 0
callif 5, Route117_PokemonDayCare_EventScript_1B2411
return
@@ -172,14 +172,14 @@ Route117_PokemonDayCare_EventScript_1B242B:: @ 81B242B
end
Route117_PokemonDayCare_EventScript_1B2469:: @ 81B2469
- specialval RESULT, 131
+ specialval RESULT, CalculatePlayerPartyCount
compare RESULT, 6
jumpeq Route117_PokemonDayCare_EventScript_1B2539
- specialval RESULT, 182
+ specialval RESULT, sp0B6_daycare
setvar 0x8004, 0
compare RESULT, 2
jumpeq Route117_PokemonDayCare_EventScript_1B24A8
- special 189
+ special ShowDaycareLevelMenu
waitstate
copyvar 0x8004, RESULT
compare RESULT, 2
@@ -188,7 +188,7 @@ Route117_PokemonDayCare_EventScript_1B2469:: @ 81B2469
end
Route117_PokemonDayCare_EventScript_1B24A8:: @ 81B24A8
- special 191
+ special sub_8041770
msgbox Route117_PokemonDayCare_Text_1B2B49, 5
compare RESULT, 1
jumpeq Route117_PokemonDayCare_EventScript_1B24C4
@@ -196,7 +196,7 @@ Route117_PokemonDayCare_EventScript_1B24A8:: @ 81B24A8
end
Route117_PokemonDayCare_EventScript_1B24C4:: @ 81B24C4
- specialval RESULT, 197
+ specialval RESULT, sub_80B7CE8
compare RESULT, 1
jumpeq Route117_PokemonDayCare_EventScript_1B24DE
msgbox Route117_PokemonDayCare_Text_1B2A30, 4
@@ -206,15 +206,15 @@ Route117_PokemonDayCare_EventScript_1B24C4:: @ 81B24C4
Route117_PokemonDayCare_EventScript_1B24DE:: @ 81B24DE
move 1, Route117_PokemonDayCare_Movement_1B2543
waitmove 0
- specialval RESULT, 192
- special 198
+ specialval RESULT, sub_8041648
+ special sub_80B7D0C
playsfx 95
msgbox Route117_PokemonDayCare_Text_1B2B75, 4
checksound
pokecry RESULT, 0
msgbox Route117_PokemonDayCare_Text_1B2B93, 4
waitpokecry
- specialval RESULT, 182
+ specialval RESULT, sp0B6_daycare
compare RESULT, 2
jumpeq Route117_PokemonDayCare_EventScript_1B2520
jump Route117_PokemonDayCare_EventScript_1B23D0
@@ -271,12 +271,12 @@ Route117_PokemonDayCare_EventScript_1B2558:: @ 81B2558
end
@ 81B2591
- special 189
+ special ShowDaycareLevelMenu
waitstate
compare RESULT, 2
jumpeq Route117_PokemonDayCare_EventScript_1B23D0
copyvar 0x8004, RESULT
- specialval RESULT, 192
+ specialval RESULT, sub_8041648
msgbox Route117_PokemonDayCare_Text_1B2B75, 4
msgbox Route117_PokemonDayCare_Text_1B2A76, 4
release
@@ -285,7 +285,7 @@ Route117_PokemonDayCare_EventScript_1B2558:: @ 81B2558
Event_EggHatch:: @ 81B25BC
lockall
msgbox UnknownString_81B2C68, 4
- special 194
+ special EggHatch
waitstate
releaseall
end
diff --git a/data/scripts/gabby_and_ty.inc b/data/scripts/gabby_and_ty.inc
index f008e892b..67a0920fa 100644
--- a/data/scripts/gabby_and_ty.inc
+++ b/data/scripts/gabby_and_ty.inc
@@ -2,7 +2,7 @@ Route111_EventScript_1AE313:: @ 81AE313
Route118_EventScript_1AE313:: @ 81AE313
Route120_EventScript_1AE313:: @ 81AE313
settrainerflag OPPONENT_GABBY_AND_TY_6
- specialval RESULT, 172
+ specialval RESULT, GabbyAndTyGetBattleNum
switch RESULT
case 0, Route111_EventScript_1AE384
case 1, Route111_EventScript_1AE38A
@@ -200,8 +200,8 @@ Route120_EventScript_1AE582:: @ 81AE582
end
Route111_EventScript_1AE5A2:: @ 81AE5A2
- special 174
- special 179
+ special GabbyAndTyBeforeInterview
+ special GabbyAndTySetScriptVarsToFieldObjectLocalIds
compare FACING, 2
callif 1, Route111_EventScript_1AE5E0
compare FACING, 1
@@ -234,8 +234,8 @@ Route111_EventScript_1AE5FD:: @ 81AE5FD
Route111_EventScript_1AE60F:: @ 81AE60F
Route118_EventScript_1AE60F:: @ 81AE60F
Route120_EventScript_1AE60F:: @ 81AE60F
- special 174
- special 179
+ special GabbyAndTyBeforeInterview
+ special GabbyAndTySetScriptVarsToFieldObjectLocalIds
compare FACING, 2
callif 1, Route111_EventScript_1AE5E0
compare FACING, 1
@@ -244,11 +244,11 @@ Route120_EventScript_1AE60F:: @ 81AE60F
callif 1, Route111_EventScript_1AE5FD
checkflag 1
jumpeq Route111_EventScript_1AE73A
- specialval RESULT, 177
+ specialval RESULT, GabbyAndTyGetLastQuote
compare RESULT, 0
jumpeq Route111_EventScript_1AE69F
msgbox Route111_Text_1AC10A, 4
- specialval RESULT, 178
+ specialval RESULT, sub_80BDD18
switch RESULT
case 0, Route111_EventScript_1AE6AD
case 1, Route111_EventScript_1AE6BB
@@ -310,7 +310,7 @@ Route111_EventScript_1AE6F3:: @ 81AE6F3
compare RESULT, 0
jumpeq Route111_EventScript_1AE72D
msgbox Route111_Text_1AC487, 4
- special 173
+ special sub_80BDC14
setflag 1
release
end
diff --git a/data/scripts/giddy.inc b/data/scripts/giddy.inc
index 3cd57ad6e..263589fe9 100644
--- a/data/scripts/giddy.inc
+++ b/data/scripts/giddy.inc
@@ -9,7 +9,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_1B09EB:: @ 81B09EB
end
MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C:: @ 81B0A0C
- special 106
+ special sub_80F7CC8
compare RESULT, 1
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E
compare RESULT, 0
@@ -17,7 +17,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C:: @ 81B0A0C
end
MauvilleCity_PokemonCenter_1F_EventScript_1B0A26:: @ 81B0A26
- special 106
+ special sub_80F7CC8
compare RESULT, 1
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A40
compare RESULT, 0
@@ -30,8 +30,8 @@ MauvilleCity_PokemonCenter_1F_EventScript_1B0A40:: @ 81B0A40
end
MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E:: @ 81B0A4E
- special 105
- special 141
+ special sub_80F7CF4
+ special ShowFieldMessageStringVar4
waittext
yesnobox 20, 8
compare RESULT, 1
diff --git a/data/scripts/hipster.inc b/data/scripts/hipster.inc
index 833bb1605..3e24e4868 100644
--- a/data/scripts/hipster.inc
+++ b/data/scripts/hipster.inc
@@ -3,7 +3,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_1AE845:: @ 81AE845
faceplayer
setflag 2054
msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C5B, 4
- special 100
+ special sub_80F7C70
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE86A
msgbox MauvilleCity_PokemonCenter_1F_Text_1B0CA7, 4
@@ -11,7 +11,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_1AE845:: @ 81AE845
end
MauvilleCity_PokemonCenter_1F_EventScript_1AE86A:: @ 81AE86A
- special 102
+ special sub_80F7C90
compare RESULT, 1
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE882
msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D11, 4
@@ -20,6 +20,6 @@ MauvilleCity_PokemonCenter_1F_EventScript_1AE86A:: @ 81AE86A
MauvilleCity_PokemonCenter_1F_EventScript_1AE882:: @ 81AE882
msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D75, 4
- special 101
+ special sub_80F7C84
release
end
diff --git a/data/scripts/maps/AbandonedShip_Corridors_B1F.inc b/data/scripts/maps/AbandonedShip_Corridors_B1F.inc
index e6b6a8f3d..b0ae966ad 100644
--- a/data/scripts/maps/AbandonedShip_Corridors_B1F.inc
+++ b/data/scripts/maps/AbandonedShip_Corridors_B1F.inc
@@ -38,7 +38,7 @@ AbandonedShip_Corridors_B1F_EventScript_15E9D3:: @ 815E9D3
removeitem ITEM_STORAGE_KEY, 1
setflag 239
call AbandonedShip_Corridors_B1F_EventScript_15E9C0
- special 142
+ special DrawWholeMapView
releaseall
end
diff --git a/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc b/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc
index 4b634106a..8cb2aed22 100644
--- a/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc
+++ b/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc
@@ -70,7 +70,7 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EBF3:: @ 815EBF3
removeitem ITEM_ROOM_1_KEY, 1
setflag 240
call AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -86,7 +86,7 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EC2A:: @ 815EC2A
removeitem ITEM_ROOM_2_KEY, 1
setflag 241
call AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -102,7 +102,7 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EC61:: @ 815EC61
removeitem ITEM_ROOM_4_KEY, 1
setflag 242
call AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -118,7 +118,7 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EC98:: @ 815EC98
removeitem ITEM_ROOM_6_KEY, 1
setflag 243
call AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1
- special 142
+ special DrawWholeMapView
releaseall
end
diff --git a/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc b/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc
index 5e90673fe..5c4c050a0 100644
--- a/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc
+++ b/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc
@@ -43,7 +43,7 @@ AbandonedShip_HiddenFloorRooms_EventScript_15ED9B:: @ 815ED9B
setanimation 1, 10
setanimation 2, 0
doanimation 54
- specialval RESULT, 290
+ specialval RESULT, sub_810F4D4
compare RESULT, 0
callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE8B
checkanimation 54
@@ -54,7 +54,7 @@ AbandonedShip_HiddenFloorRooms_EventScript_15EDC4:: @ 815EDC4
end
AbandonedShip_HiddenFloorRooms_EventScript_15EDC5:: @ 815EDC5
- specialval RESULT, 288
+ specialval RESULT, sub_810F488
compare RESULT, 1
jumpeq AbandonedShip_HiddenFloorRooms_EventScript_15EDEA
pause 20
@@ -77,7 +77,7 @@ AbandonedShip_HiddenFloorRooms_EventScript_15EDEB:: @ 815EDEB
setanimation 1, 3
setanimation 2, 0
doanimation 54
- specialval RESULT, 291
+ specialval RESULT, sub_810F4FC
compare RESULT, 0
callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE9B
checkanimation 54
@@ -98,7 +98,7 @@ AbandonedShip_HiddenFloorRooms_EventScript_15EE23:: @ 815EE23
setanimation 1, 6
setanimation 2, 0
doanimation 54
- specialval RESULT, 289
+ specialval RESULT, sub_810F4B0
compare RESULT, 0
callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE7B
checkanimation 54
diff --git a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
index b2525d62e..a6ccdc43c 100644
--- a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
+++ b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
@@ -3,7 +3,7 @@ AbandonedShip_Rooms2_1F_MapScripts:: @ 815EA67
AbandonedShip_Rooms2_1F_EventScript_15EA68:: @ 815EA68
trainerbattle 4, OPPONENT_LOIS_AND_HAL_1, 0, AbandonedShip_Rooms2_1F_Text_1987C1, AbandonedShip_Rooms2_1F_Text_1987FE, AbandonedShip_Rooms2_1F_Text_19887F
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq AbandonedShip_Rooms2_1F_EventScript_15EA93
msgbox AbandonedShip_Rooms2_1F_Text_198835, 6
@@ -16,7 +16,7 @@ AbandonedShip_Rooms2_1F_EventScript_15EA93:: @ 815EA93
AbandonedShip_Rooms2_1F_EventScript_15EAAE:: @ 815EAAE
trainerbattle 4, OPPONENT_LOIS_AND_HAL_1, 0, AbandonedShip_Rooms2_1F_Text_1988CC, AbandonedShip_Rooms2_1F_Text_198916, AbandonedShip_Rooms2_1F_Text_19899A
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq AbandonedShip_Rooms2_1F_EventScript_15EAD9
msgbox AbandonedShip_Rooms2_1F_Text_198934, 6
diff --git a/data/scripts/maps/AncientTomb.inc b/data/scripts/maps/AncientTomb.inc
index f8eba6a9d..7ba7540c4 100644
--- a/data/scripts/maps/AncientTomb.inc
+++ b/data/scripts/maps/AncientTomb.inc
@@ -64,7 +64,7 @@ AncientTomb_EventScript_15F050:: @ 815F050
setwildbattle SPECIES_REGISTEEL, 40, ITEM_NONE
setflag 937
setflag 2145
- special 313
+ special StartBattle_Regi
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/BattleTower_BattleRoom.inc b/data/scripts/maps/BattleTower_BattleRoom.inc
index d991b8853..176d8e8e8 100644
--- a/data/scripts/maps/BattleTower_BattleRoom.inc
+++ b/data/scripts/maps/BattleTower_BattleRoom.inc
@@ -12,35 +12,35 @@ BattleTower_BattleRoom_EventScript_1608EB:: @ 81608EB
waitmove 0
BattleTower_BattleRoom_EventScript_1608FA:: @ 81608FA
- special 232
+ special sub_81347F8
reappear 1
move 1, BattleTower_BattleRoom_Movement_160AC0
waitmove 0
- special 234
+ special sub_8135474
msgbox 0x20234cc, 4
waittext
closebutton
- special 0
+ special HealPlayerParty
setvar 0x8004, 0
setvar 0x8005, 0
- special 236
+ special sub_813556C
waitstate
switch RESULT
case 1, BattleTower_BattleRoom_EventScript_160961
- special 40
+ special LoadPlayerParty
setvar 0x8004, 0
setvar 0x8005, 5
- special 237
+ special sub_8135668
setvar 0x8004, 14
- special 237
+ special sub_8135668
setvar 0x8004, 3
- special 170
+ special sub_810FF60
warp BattleTower_Lobby, 255, 6, 6
waitstate
BattleTower_BattleRoom_EventScript_160961:: @ 8160961
setvar 0x8004, 6
- special 237
+ special sub_8135668
switch RESULT
case 8, BattleTower_BattleRoom_EventScript_160A56
move 1, BattleTower_BattleRoom_Movement_160AC6
@@ -51,12 +51,12 @@ BattleTower_BattleRoom_EventScript_160961:: @ 8160961
move 255, BattleTower_BattleRoom_Movement_160ABC
waitmove 0
msgbox BattleTower_BattleRoom_Text_19ACDC, 4
- special 40
- special 39
- special 239
+ special LoadPlayerParty
+ special SavePlayerParty
+ special sub_8135A14
fanfare 368
waitfanfare
- special 0
+ special HealPlayerParty
BattleTower_BattleRoom_EventScript_1609B2:: @ 81609B2
msgbox BattleTower_BattleRoom_Text_19AD09, 5
@@ -88,25 +88,25 @@ BattleTower_BattleRoom_EventScript_160A3C:: @ 8160A3C
jump BattleTower_BattleRoom_EventScript_1608FA
BattleTower_BattleRoom_EventScript_160A56:: @ 8160A56
- special 40
+ special LoadPlayerParty
setvar 0x8004, 0
setvar 0x8005, 4
- special 237
+ special sub_8135668
setvar 0x8004, 2
setvar 0x8005, 1
- special 237
+ special sub_8135668
setvar 0x8004, 7
- special 237
+ special sub_8135668
setvar 0x8004, 14
- special 237
+ special sub_8135668
setvar 0x8004, 3
- special 170
+ special sub_810FF60
warp BattleTower_Lobby, 255, 6, 6
waitstate
BattleTower_BattleRoom_EventScript_160A94:: @ 8160A94
setvar 0x8004, 2
- special 240
+ special sub_8135BA0
message BattleTower_BattleRoom_Text_1C6CE1
pause 60
waittext
@@ -116,7 +116,7 @@ BattleTower_BattleRoom_EventScript_160A94:: @ 8160A94
BattleTower_BattleRoom_EventScript_160AB1:: @ 8160AB1
fadescreen 1
- special 241
+ special sub_8135C38
end
BattleTower_BattleRoom_Movement_160AB7:: @ 8160AB7
diff --git a/data/scripts/maps/BattleTower_Elevator.inc b/data/scripts/maps/BattleTower_Elevator.inc
index 7a79cc4e9..408e7485e 100644
--- a/data/scripts/maps/BattleTower_Elevator.inc
+++ b/data/scripts/maps/BattleTower_Elevator.inc
@@ -12,7 +12,7 @@ BattleTower_Elevator_EventScript_1607E4:: @ 81607E4
move 1, BattleTower_Elevator_Movement_160835
move 255, BattleTower_Elevator_Movement_160839
waitmove 0
- special 273
+ special sub_810EBEC
waitstate
pause 64
move 1, BattleTower_Elevator_Movement_16083D
diff --git a/data/scripts/maps/BattleTower_Lobby.inc b/data/scripts/maps/BattleTower_Lobby.inc
index cee3d7cec..8cd3639a5 100644
--- a/data/scripts/maps/BattleTower_Lobby.inc
+++ b/data/scripts/maps/BattleTower_Lobby.inc
@@ -6,30 +6,30 @@ BattleTower_Lobby_MapScripts:: @ 816027E
.byte 0
BattleTower_Lobby_MapScript1_160293:: @ 8160293
- special 338
+ special sub_813610C
call BattleTower_Lobby_EventScript_16029C
end
BattleTower_Lobby_EventScript_16029C:: @ 816029C
setvar 0x8004, 10
- special 237
+ special sub_8135668
checkflag 238
jumpeq BattleTower_Lobby_EventScript_1602E4
checkflag 237
jumpeq BattleTower_Lobby_EventScript_1602CD
- specialval 0x8007, 247
+ specialval 0x8007, sub_810F404
compare 0x8007, 50
jumpif 0, BattleTower_Lobby_EventScript_1602E4
clearflag 941
- special 329
+ special sub_810F8FC
return
BattleTower_Lobby_EventScript_1602CD:: @ 81602CD
- specialval 0x8007, 247
+ specialval 0x8007, sub_810F404
compare 0x8007, 100
jumpif 0, BattleTower_Lobby_EventScript_1602E4
clearflag 941
- special 329
+ special sub_810F8FC
return
BattleTower_Lobby_EventScript_1602E4:: @ 81602E4
@@ -58,7 +58,7 @@ BattleTower_Lobby_MapScript2_160302:: @ 8160302
.2byte 0
BattleTower_Lobby_EventScript_16032C:: @ 816032C
- special 231
+ special sub_8134548
end
BattleTower_Lobby_EventScript_160330:: @ 8160330
@@ -76,10 +76,10 @@ BattleTower_Lobby_EventScript_160342:: @ 8160342
message BattleTower_Lobby_Text_19A487
waittext
setvar 0x8004, 0
- special 238
+ special sub_81358A4
compare RESULT, 6
jumpeq BattleTower_Lobby_EventScript_16037D
- special 244
+ special sub_8135E50
compare RESULT, 0
jumpeq BattleTower_Lobby_EventScript_16037D
message BattleTower_Lobby_Text_19A6BE
@@ -90,26 +90,26 @@ BattleTower_Lobby_EventScript_160342:: @ 8160342
BattleTower_Lobby_EventScript_16037D:: @ 816037D
setvar 0x8004, 8
- special 238
+ special sub_81358A4
compare RESULT, 1
jumpeq BattleTower_Lobby_EventScript_1603AD
message BattleTower_Lobby_Text_19A589
waittext
setvar 0x8004, 13
- special 237
- special 242
+ special sub_8135668
+ special sub_8135D84
setvar 0x8004, 3
- special 240
+ special sub_8135BA0
playsfx 55
checksound
BattleTower_Lobby_EventScript_1603AD:: @ 81603AD
setvar 0x8004, 0
setvar 0x8005, 3
- special 237
+ special sub_8135668
message BattleTower_Lobby_Text_19A4BB
waittext
- special 243
+ special sub_8135DEC
switch RESULT
case 0, BattleTower_Lobby_EventScript_160408
message BattleTower_Lobby_Text_19A506
@@ -117,7 +117,7 @@ BattleTower_Lobby_EventScript_1603AD:: @ 81603AD
fanfare 370
waitfanfare
setvar 0x8004, 9
- special 238
+ special sub_81358A4
compare RESULT, 49
jumpif 5, BattleTower_Lobby_EventScript_1603F8
msgbox BattleTower_Lobby_Text_19A617, 4
@@ -145,9 +145,9 @@ BattleTower_Lobby_EventScript_160419:: @ 8160419
message BattleTower_Lobby_Text_19A589
waittext
setvar 0x8004, 13
- special 237
+ special sub_8135668
setvar 0x8004, 0
- special 240
+ special sub_8135BA0
playsfx 55
checksound
msgbox BattleTower_Lobby_Text_199FA9, 4
@@ -165,15 +165,15 @@ BattleTower_Lobby_EventScript_16044B:: @ 816044B
message BattleTower_Lobby_Text_19A5CE
waittext
setvar 0x8004, 1
- special 240
+ special sub_8135BA0
playsfx 55
checksound
setvar 0x8004, 8
setvar 0x8005, 0
- special 237
+ special sub_8135668
setvar 0x4000, 5
- special 39
- special 239
+ special SavePlayerParty
+ special sub_8135A14
msgbox BattleTower_Lobby_Text_19A0A8, 4
closebutton
call BattleTower_Lobby_EventScript_160664
@@ -185,10 +185,10 @@ BattleTower_Lobby_EventScript_16049E:: @ 816049E
lock
faceplayer
setvar 0x8004, 0
- special 238
+ special sub_81358A4
compare RESULT, 6
jumpeq BattleTower_Lobby_EventScript_160342
- special 39
+ special SavePlayerParty
msgbox BattleTower_Lobby_Text_199F2C, 4
BattleTower_Lobby_EventScript_1604BE:: @ 81604BE
@@ -208,16 +208,16 @@ BattleTower_Lobby_EventScript_1604FA:: @ 81604FA
switch RESULT
case 2, BattleTower_Lobby_EventScript_160652
case 127, BattleTower_Lobby_EventScript_160652
- special 233
+ special CheckPartyBattleTowerBanlist
compare 0x8004, 1
jumpeq BattleTower_Lobby_EventScript_16060D
setvar 0x8004, 1
copyvar 0x8005, RESULT
copyvar 0x8006, RESULT
- special 237
+ special sub_8135668
msgbox BattleTower_Lobby_Text_19A07B, 4
fadescreen 1
- special 245
+ special ChooseBattleTowerPlayerParty
waitstate
compare RESULT, 0
jumpeq BattleTower_Lobby_EventScript_16064F
@@ -229,17 +229,17 @@ BattleTower_Lobby_EventScript_1604FA:: @ 81604FA
BattleTower_Lobby_EventScript_160587:: @ 8160587
setvar 0x8004, 5
- special 237
+ special sub_8135668
setvar 0x4000, 0
setvar 0x8004, 11
- special 237
+ special sub_8135668
setvar 0x8004, 0
setvar 0x8005, 1
- special 237
+ special sub_8135668
setvar 0x8004, 8
setvar 0x8005, 0
- special 237
- special 40
+ special sub_8135668
+ special LoadPlayerParty
closebutton
pause 2
call BattleTower_Lobby_EventScript_19F806
@@ -248,8 +248,8 @@ BattleTower_Lobby_EventScript_160587:: @ 8160587
compare RESULT, 0
jumpeq BattleTower_Lobby_EventScript_160642
inccounter GAME_STAT_ENTERED_BATTLE_TOWER
- special 39
- special 239
+ special SavePlayerParty
+ special sub_8135A14
setvar 0x40bc, 1
msgbox BattleTower_Lobby_Text_19A0A8, 4
closebutton
@@ -277,16 +277,16 @@ BattleTower_Lobby_EventScript_160635:: @ 8160635
BattleTower_Lobby_EventScript_160642:: @ 8160642
setvar 0x8004, 12
- special 237
+ special sub_8135668
jump BattleTower_Lobby_EventScript_160652
BattleTower_Lobby_EventScript_16064F:: @ 816064F
- special 40
+ special LoadPlayerParty
BattleTower_Lobby_EventScript_160652:: @ 8160652
msgbox BattleTower_Lobby_Text_199FA9, 4
setvar 0x8004, 11
- special 237
+ special sub_8135668
BattleTower_Lobby_EventScript_160662:: @ 8160662
release
@@ -378,7 +378,7 @@ BattleTower_Lobby_EventScript_16071E:: @ 816071E
BattleTower_Lobby_EventScript_160727:: @ 8160727
lockall
- special 283
+ special ShowBattleTowerRecords
waitbutton
hidebox 0, 0, 29, 19
releaseall
@@ -402,7 +402,7 @@ BattleTower_Lobby_EventScript_160733:: @ 8160733
end
BattleTower_Lobby_EventScript_160773:: @ 8160773
- specialval RESULT, 247
+ specialval RESULT, sub_810F404
compare RESULT, 100
jumpif 0, BattleTower_Lobby_EventScript_1607C5
msgbox BattleTower_Lobby_Text_19AAC4, 4
diff --git a/data/scripts/maps/CaveOfOrigin_B4F.inc b/data/scripts/maps/CaveOfOrigin_B4F.inc
index e9f23ff5a..023892d36 100644
--- a/data/scripts/maps/CaveOfOrigin_B4F.inc
+++ b/data/scripts/maps/CaveOfOrigin_B4F.inc
@@ -35,7 +35,7 @@ CaveOfOrigin_B4F_EventScript_15DDD7:: @ 815DDD7
closebutton
setweather 0
doweather
- special 284
+ special WaitWeather
waitstate
playsfx 209
setanimation 0, 9
@@ -49,9 +49,9 @@ CaveOfOrigin_B4F_EventScript_15DDD7:: @ 815DDD7
setvar RESULT, 2
.endif
playsfx 107
- special 281
+ special sub_80818A4
waitstate
- special 282
+ special sub_80818FC
waitstate
move 1, CaveOfOrigin_B4F_Movement_15DE7D
waitmove 0
@@ -62,10 +62,10 @@ CaveOfOrigin_B4F_EventScript_15DDD7:: @ 815DDD7
pause 40
waitpokecry
setflag 2145
- special 311
+ special StartBattle_GroudonKyogre
waitstate
clearflag 2145
- specialval RESULT, 180
+ specialval RESULT, sub_810E300
compare RESULT, 1
callif 1, CaveOfOrigin_B4F_EventScript_15DE73
setflag 816
diff --git a/data/scripts/maps/DesertRuins.inc b/data/scripts/maps/DesertRuins.inc
index d5787d792..df40fc126 100644
--- a/data/scripts/maps/DesertRuins.inc
+++ b/data/scripts/maps/DesertRuins.inc
@@ -64,7 +64,7 @@ DesertRuins_EventScript_15CB85:: @ 815CB85
setwildbattle SPECIES_REGIROCK, 40, ITEM_NONE
setflag 935
setflag 2145
- special 313
+ special StartBattle_Regi
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/DewfordTown_Hall.inc b/data/scripts/maps/DewfordTown_Hall.inc
index 0b25e0aba..28d396a3e 100644
--- a/data/scripts/maps/DewfordTown_Hall.inc
+++ b/data/scripts/maps/DewfordTown_Hall.inc
@@ -5,7 +5,7 @@ DewfordTown_Hall_EventScript_153293:: @ 8153293
lock
faceplayer
call DewfordTown_Hall_EventScript_1A0102
- special 127
+ special sub_80FA5E4
compare RESULT, 1
jumpeq DewfordTown_Hall_EventScript_1532B2
msgbox DewfordTown_Hall_Text_1754C9, 4
@@ -29,7 +29,7 @@ DewfordTown_Hall_EventScript_1532CD:: @ 81532CD
lock
faceplayer
call DewfordTown_Hall_EventScript_1A0102
- special 128
+ special sub_80EB83C
msgbox DewfordTown_Hall_Text_1755F9, 5
compare RESULT, 1
jumpeq DewfordTown_Hall_EventScript_1532F6
@@ -87,7 +87,7 @@ DewfordTown_Hall_EventScript_153353:: @ 8153353
DewfordTown_Hall_EventScript_153363:: @ 8153363
lockall
call DewfordTown_Hall_EventScript_1A0102
- special 129
+ special sub_80FA648
switch RESULT
case 0, DewfordTown_Hall_EventScript_1533CA
case 4, DewfordTown_Hall_EventScript_1533CA
@@ -133,7 +133,7 @@ DewfordTown_Hall_EventScript_1533FE:: @ 81533FE
DewfordTown_Hall_EventScript_15340A:: @ 815340A
call DewfordTown_Hall_EventScript_1A0102
- special 129
+ special sub_80FA648
switch RESULT
case 0, DewfordTown_Hall_EventScript_153470
case 1, DewfordTown_Hall_EventScript_153470
diff --git a/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc b/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc
index 0e5dc21b0..bddcfa74b 100644
--- a/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc
+++ b/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc
@@ -48,7 +48,7 @@ EverGrandeCity_ChampionsRoom_EventScript_15B821:: @ 815B821
playsfx 8
setmaptile 6, 1, 838, 0
setmaptile 6, 2, 839, 0
- special 142
+ special DrawWholeMapView
msgbox EverGrandeCity_ChampionsRoom_Text_1910FE, 4
closebutton
playsfx 8
diff --git a/data/scripts/maps/EverGrandeCity_DrakesRoom.inc b/data/scripts/maps/EverGrandeCity_DrakesRoom.inc
index c16bd544f..d10957a8e 100644
--- a/data/scripts/maps/EverGrandeCity_DrakesRoom.inc
+++ b/data/scripts/maps/EverGrandeCity_DrakesRoom.inc
@@ -56,7 +56,7 @@ EverGrandeCity_DrakesRoom_EventScript_15B78B:: @ 815B78B
EverGrandeCity_DrakesRoom_EventScript_15B795:: @ 815B795
setvar 0x8004, 0
- special 170
+ special sub_810FF60
setflag 1248
call EverGrandeCity_DrakesRoom_EventScript_1A0693
msgbox EverGrandeCity_DrakesRoom_Text_190E5D, 4
diff --git a/data/scripts/maps/EverGrandeCity_HallOfFame.inc b/data/scripts/maps/EverGrandeCity_HallOfFame.inc
index 2e7099110..175990328 100644
--- a/data/scripts/maps/EverGrandeCity_HallOfFame.inc
+++ b/data/scripts/maps/EverGrandeCity_HallOfFame.inc
@@ -53,7 +53,7 @@ EverGrandeCity_HallOfFame_EventScript_15BBA8:: @ 815BBA8
EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41
sethealplace 1
fadescreendelay 1, 24
- special 272
+ special GameClear
waitstate
releaseall
end
@@ -61,7 +61,7 @@ EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41
EverGrandeCity_HallOfFame_EventScript_15BC4D:: @ 815BC4D
sethealplace 2
fadescreendelay 1, 24
- special 272
+ special GameClear
waitstate
releaseall
end
diff --git a/data/scripts/maps/FallarborTown_ContestLobby.inc b/data/scripts/maps/FallarborTown_ContestLobby.inc
index 706d9aa5f..ed67d922d 100644
--- a/data/scripts/maps/FallarborTown_ContestLobby.inc
+++ b/data/scripts/maps/FallarborTown_ContestLobby.inc
@@ -11,7 +11,7 @@ FallarborTown_ContestLobby_EventScript_1539CD:: @ 81539CD
setvar CONTEST_RANK, 1
call FallarborTown_ContestLobby_EventScript_1A4E92
call FallarborTown_ContestLobby_EventScript_1539F8
- special 83
+ special sub_80C4BF0
call FallarborTown_ContestLobby_EventScript_15FBDB
setvar 0x4088, 2
warp LinkContestRoom1, 255, 7, 5
@@ -25,13 +25,13 @@ FallarborTown_ContestLobby_EventScript_1539F8:: @ 81539F8
playsfx 71
setmaptile 4, 2, 545, 1
setmaptile 4, 3, 609, 1
- special 142
+ special DrawWholeMapView
move 1, FallarborTown_ContestLobby_Movement_153A7F
waitmove 0
playsfx 71
setmaptile 4, 2, 721, 1
setmaptile 4, 3, 729, 1
- special 142
+ special DrawWholeMapView
pause 20
move 1, FallarborTown_ContestLobby_Movement_153A8C
waitmove 0
@@ -114,7 +114,7 @@ FallarborTown_ContestLobby_EventScript_153ABB:: @ 8153ABB
FallarborTown_ContestLobby_EventScript_153AC2:: @ 8153AC2
lockall
- special 259
+ special ShowBerryBlenderRecordWindow
waitbutton
hidebox 0, 0, 29, 19
releaseall
diff --git a/data/scripts/maps/FallarborTown_House2.inc b/data/scripts/maps/FallarborTown_House2.inc
index 179f281af..1351b96d3 100644
--- a/data/scripts/maps/FallarborTown_House2.inc
+++ b/data/scripts/maps/FallarborTown_House2.inc
@@ -24,11 +24,11 @@ FallarborTown_House2_EventScript_153CB6:: @ 8153CB6
FallarborTown_House2_EventScript_153CE4:: @ 8153CE4
msgbox FallarborTown_House2_Text_177C3F, 4
- special 219
+ special sub_80F9A4C
waitstate
compare 0x8004, 255
jumpeq FallarborTown_House2_EventScript_153D60
- special 328
+ special sub_80FA148
compare RESULT, 1
jumpeq FallarborTown_House2_EventScript_153D52
compare 0x8005, 0
@@ -38,7 +38,7 @@ FallarborTown_House2_EventScript_153CE4:: @ 8153CE4
FallarborTown_House2_EventScript_153D1A:: @ 8153D1A
msgbox FallarborTown_House2_Text_177C5D, 4
- special 224
+ special sub_8132670
waitstate
compare 0x8004, 0
jumpeq FallarborTown_House2_EventScript_153CE4
diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc
index 1bf6b0825..44f5890a2 100644
--- a/data/scripts/maps/FortreeCity_Gym.inc
+++ b/data/scripts/maps/FortreeCity_Gym.inc
@@ -4,7 +4,7 @@ FortreeCity_Gym_MapScripts:: @ 8157ED3
.byte 0
FortreeCity_Gym_MapScript1_157EDE:: @ 8157EDE
- special 201
+ special RotatingGate_InitPuzzle
end
FortreeCity_Gym_MapScript2_157EE2:: @ 8157EE2
@@ -12,7 +12,7 @@ FortreeCity_Gym_MapScript2_157EE2:: @ 8157EE2
.2byte 0
FortreeCity_Gym_EventScript_157EEC:: @ 8157EEC
- special 202
+ special RotatingGate_InitPuzzleAndGraphics
end
FortreeCity_Gym_EventScript_157EF0:: @ 8157EF0
diff --git a/data/scripts/maps/FortreeCity_House1.inc b/data/scripts/maps/FortreeCity_House1.inc
index 0ae6e3fbd..f5bda05ab 100644
--- a/data/scripts/maps/FortreeCity_House1.inc
+++ b/data/scripts/maps/FortreeCity_House1.inc
@@ -8,25 +8,25 @@ FortreeCity_House1_EventScript_157E13:: @ 8157E13
jumpeq FortreeCity_House1_EventScript_157EAD
setvar 0x8008, 1
copyvar 0x8004, 0x8008
- specialval RESULT, 252
+ specialval RESULT, sub_804D89C
copyvar 0x8009, RESULT
msgbox FortreeCity_House1_Text_18568C, 5
compare RESULT, 0
jumpeq FortreeCity_House1_EventScript_157E95
- special 159
+ special sub_80F9A0C
waitstate
copyvar 0x800a, 0x8004
compare 0x8004, 255
jumpeq FortreeCity_House1_EventScript_157E95
copyvar 0x8005, 0x800a
- specialval RESULT, 255
+ specialval RESULT, sub_804DB2C
copyvar 0x800b, RESULT
comparevars RESULT, 0x8009
jumpif 5, FortreeCity_House1_EventScript_157E9F
copyvar 0x8004, 0x8008
copyvar 0x8005, 0x800a
- special 253
- special 254
+ special sub_804DB68
+ special sub_804E174
waitstate
bufferpoke 0, 0x8009
msgbox FortreeCity_House1_Text_1856F7, 4
diff --git a/data/scripts/maps/IslandCave.inc b/data/scripts/maps/IslandCave.inc
index c5d932a91..b16f386d8 100644
--- a/data/scripts/maps/IslandCave.inc
+++ b/data/scripts/maps/IslandCave.inc
@@ -38,7 +38,7 @@ gIslandCave_EventScript_OpenRegiiceChamber:: @ 815EF19
setmaptile 7, 20, 562, 1
setmaptile 8, 20, 563, 0
setmaptile 9, 20, 564, 1
- special 142
+ special DrawWholeMapView
playsfx SE_BAN
setflag 2129
end
@@ -48,7 +48,7 @@ IslandCave_EventScript_15EF59:: @ 815EF59
checkflag 2129
jumpeq IslandCave_EventScript_15EF72
braillemsg IslandCave_Braille_1C54FC
- special 280
+ special DoBrailleWait
waitstate
jump IslandCave_EventScript_15EF95
end
@@ -63,7 +63,7 @@ IslandCave_EventScript_15EF7C:: @ 815EF7C
braillemsg IslandCave_Braille_1C54FC
checkflag 2129
jumpeq IslandCave_EventScript_15EF95
- special 280
+ special DoBrailleWait
waitstate
jump IslandCave_EventScript_15EF95
end
@@ -84,7 +84,7 @@ IslandCave_EventScript_15EF9D:: @ 815EF9D
setwildbattle SPECIES_REGICE, 40, ITEM_NONE
setflag 936
setflag 2145
- special 313
+ special StartBattle_Regi
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/JaggedPass.inc b/data/scripts/maps/JaggedPass.inc
index 3ae0882c5..151f1ec79 100644
--- a/data/scripts/maps/JaggedPass.inc
+++ b/data/scripts/maps/JaggedPass.inc
@@ -24,7 +24,7 @@ JaggedPass_EventScript_15D285:: @ 815D285
JaggedPass_EventScript_15D29C:: @ 815D29C
trainerbattle 0, OPPONENT_DIANA_1, 0, JaggedPass_Text_195E9E, JaggedPass_Text_195EDF
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq JaggedPass_EventScript_15D2C3
msgbox JaggedPass_Text_195F04, 6
@@ -37,7 +37,7 @@ JaggedPass_EventScript_15D2C3:: @ 815D2C3
JaggedPass_EventScript_15D2DA:: @ 815D2DA
trainerbattle 0, OPPONENT_ETHAN_1, 0, JaggedPass_Text_195FF2, JaggedPass_Text_196032
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq JaggedPass_EventScript_15D301
msgbox JaggedPass_Text_196077, 6
diff --git a/data/scripts/maps/LavaridgeTown.inc b/data/scripts/maps/LavaridgeTown.inc
index a71bd4854..685e44d58 100644
--- a/data/scripts/maps/LavaridgeTown.inc
+++ b/data/scripts/maps/LavaridgeTown.inc
@@ -236,7 +236,7 @@ LavaridgeTown_Movement_14E70E:: @ 814E70E
step_end
LavaridgeTown_EventScript_14E710:: @ 814E710
- specialval RESULT, 287
+ specialval RESULT, player_get_direction_lower_nybble
compare RESULT, 1
jumpeq LavaridgeTown_EventScript_14E721
end
diff --git a/data/scripts/maps/LilycoveCity.inc b/data/scripts/maps/LilycoveCity.inc
index ae36e33b5..b688107ce 100644
--- a/data/scripts/maps/LilycoveCity.inc
+++ b/data/scripts/maps/LilycoveCity.inc
@@ -172,7 +172,7 @@ LilycoveCity_EventScript_14CC79:: @ 814CC79
LilycoveCity_EventScript_14CC82:: @ 814CC82
lockall
- specialval 0x8004, 137
+ specialval 0x8004, sub_80C4D50
switch 0x8004
case 0, LilycoveCity_EventScript_14CCA2
msgbox LilycoveCity_Text_168EA4, 4
diff --git a/data/scripts/maps/LilycoveCity_ContestLobby.inc b/data/scripts/maps/LilycoveCity_ContestLobby.inc
index 419e04a8f..3c8cc5bdf 100644
--- a/data/scripts/maps/LilycoveCity_ContestLobby.inc
+++ b/data/scripts/maps/LilycoveCity_ContestLobby.inc
@@ -41,9 +41,9 @@ LilycoveCity_ContestLobby_EventScript_158898:: @ 8158898
LilycoveCity_ContestLobby_EventScript_1588DE:: @ 81588DE
msgbox LilycoveCity_ContestLobby_Text_188AE8, 4
closebutton
- special 135
+ special sub_80C4CEC
setvar 0x4099, 0
- specialval RESULT, 91
+ specialval RESULT, GiveMonArtistRibbon
compare RESULT, 1
callif 1, LilycoveCity_ContestLobby_EventScript_158948
move 4, LilycoveCity_ContestLobby_Movement_158A43
@@ -69,7 +69,7 @@ LilycoveCity_ContestLobby_EventScript_158918:: @ 8158918
LilycoveCity_ContestLobby_EventScript_158948:: @ 8158948
inccounter GAME_STAT_RECEIVED_RIBBONS
- special 80
+ special sub_80C4858
move 4, LilycoveCity_ContestLobby_Movement_158A4E
waitmove 0
playsfx 21
@@ -87,7 +87,7 @@ LilycoveCity_ContestLobby_EventScript_158948:: @ 8158948
return
LilycoveCity_ContestLobby_EventScript_158994:: @ 8158994
- specialval 0x8004, 137
+ specialval 0x8004, sub_80C4D50
switch 0x8004
case 1, LilycoveCity_ContestLobby_EventScript_1589D6
case 2, LilycoveCity_ContestLobby_EventScript_1589DA
@@ -214,9 +214,9 @@ LilycoveCity_ContestLobby_EventScript_158A6A:: @ 8158A6A
LilycoveCity_ContestLobby_EventScript_158AAE:: @ 8158AAE
msgbox LilycoveCity_ContestLobby_Text_188AE8, 4
closebutton
- special 135
+ special sub_80C4CEC
setvar 0x4099, 0
- specialval RESULT, 91
+ specialval RESULT, GiveMonArtistRibbon
compare RESULT, 1
callif 1, LilycoveCity_ContestLobby_EventScript_158B18
move 11, LilycoveCity_ContestLobby_Movement_158B6D
@@ -242,7 +242,7 @@ LilycoveCity_ContestLobby_EventScript_158AE8:: @ 8158AE8
LilycoveCity_ContestLobby_EventScript_158B18:: @ 8158B18
inccounter GAME_STAT_RECEIVED_RIBBONS
- special 80
+ special sub_80C4858
move 11, LilycoveCity_ContestLobby_Movement_158B78
waitmove 0
playsfx 21
@@ -363,7 +363,7 @@ LilycoveCity_ContestLobby_EventScript_158C42:: @ 8158C42
choosecontestpkmn
compare 0x8004, 255
jumpeq LilycoveCity_ContestLobby_EventScript_158CEA
- special 84
+ special sub_80C43F4
compare RESULT, 0
jumpeq LilycoveCity_ContestLobby_EventScript_158C96
compare RESULT, 1
@@ -418,7 +418,7 @@ LilycoveCity_ContestLobby_EventScript_158D24:: @ 8158D24
message LilycoveCity_ContestLobby_Text_1887C7
waittext
copyvar 0x8004, RESULT
- special 92
+ special sub_808363C
waitstate
compare RESULT, 3
jumpeq LilycoveCity_ContestLobby_EventScript_158D90
@@ -441,7 +441,7 @@ LilycoveCity_ContestLobby_EventScript_158D82:: @ 8158D82
end
LilycoveCity_ContestLobby_EventScript_158D90:: @ 8158D90
- special 31
+ special CloseLink
msgbox LilycoveCity_ContestLobby_Text_18878D, 4
closebutton
releaseall
@@ -449,7 +449,7 @@ LilycoveCity_ContestLobby_EventScript_158D90:: @ 8158D90
end
LilycoveCity_ContestLobby_EventScript_158DA1:: @ 8158DA1
- special 31
+ special CloseLink
msgbox LilycoveCity_ContestLobby_Text_1887F4, 4
closebutton
releaseall
@@ -457,7 +457,7 @@ LilycoveCity_ContestLobby_EventScript_158DA1:: @ 8158DA1
end
LilycoveCity_ContestLobby_EventScript_158DB2:: @ 8158DB2
- special 31
+ special CloseLink
msgbox LilycoveCity_ContestLobby_Text_18881F, 4
closebutton
releaseall
@@ -470,7 +470,7 @@ LilycoveCity_ContestLobby_EventScript_158DC3:: @ 8158DC3
end
LilycoveCity_ContestLobby_EventScript_158DD1:: @ 8158DD1
- special 77
+ special sub_80C496C
addvar 0x8004, 1
buffernum 1, 32772
message2 LilycoveCity_ContestLobby_Text_188845
@@ -482,7 +482,7 @@ LilycoveCity_ContestLobby_EventScript_158DD1:: @ 8158DD1
LilycoveCity_ContestLobby_EventScript_158DEE:: @ 8158DEE
call LilycoveCity_ContestLobby_EventScript_158E0B
setvar 0x4086, 1
- special 86
+ special sub_80C4F70
setvar 0x4088, 5
setvar CONTEST_RANK, 3
call LilycoveCity_ContestLobby_EventScript_158F08
@@ -499,13 +499,13 @@ LilycoveCity_ContestLobby_EventScript_158E0B:: @ 8158E0B
playsfx 71
setmaptile 9, 2, 545, 1
setmaptile 9, 3, 609, 1
- special 142
+ special DrawWholeMapView
move 2, LilycoveCity_ContestLobby_Movement_158EA0
waitmove 0
playsfx 71
setmaptile 9, 2, 721, 1
setmaptile 9, 3, 729, 1
- special 142
+ special DrawWholeMapView
pause 20
move 2, LilycoveCity_ContestLobby_Movement_158EAE
waitmove 0
@@ -568,14 +568,14 @@ LilycoveCity_ContestLobby_Movement_158EAE:: @ 8158EAE
step_end
LilycoveCity_ContestLobby_EventScript_158EB0:: @ 8158EB0
- specialval RESULT, 90
+ specialval RESULT, sub_80C5044
compare RESULT, 1
jumpeq LilycoveCity_ContestLobby_EventScript_158EE8
setvar 0x800b, 8
setvar CONTEST_RANK, 3
call LilycoveCity_ContestLobby_EventScript_1A4E92
call LilycoveCity_ContestLobby_EventScript_158F86
- special 83
+ special sub_80C4BF0
call LilycoveCity_ContestLobby_EventScript_15FBDB
setvar 0x4088, 4
call LilycoveCity_ContestLobby_EventScript_158F08
@@ -603,31 +603,31 @@ LilycoveCity_ContestLobby_EventScript_158F08:: @ 8158F08
LilycoveCity_ContestLobby_EventScript_158F45:: @ 8158F45
warp3 LinkContestRoom4, 255, 7, 5
- special 300
+ special sub_8081334
waitstate
return
LilycoveCity_ContestLobby_EventScript_158F52:: @ 8158F52
warp3 LinkContestRoom2, 255, 7, 5
- special 300
+ special sub_8081334
waitstate
return
LilycoveCity_ContestLobby_EventScript_158F5F:: @ 8158F5F
warp3 LinkContestRoom6, 255, 7, 5
- special 300
+ special sub_8081334
waitstate
return
LilycoveCity_ContestLobby_EventScript_158F6C:: @ 8158F6C
warp3 LinkContestRoom5, 255, 7, 5
- special 300
+ special sub_8081334
waitstate
return
LilycoveCity_ContestLobby_EventScript_158F79:: @ 8158F79
warp3 LinkContestRoom3, 255, 7, 5
- special 300
+ special sub_8081334
waitstate
return
@@ -638,13 +638,13 @@ LilycoveCity_ContestLobby_EventScript_158F86:: @ 8158F86
playsfx 71
setmaptile 4, 2, 545, 1
setmaptile 4, 3, 609, 1
- special 142
+ special DrawWholeMapView
move 1, LilycoveCity_ContestLobby_Movement_15900F
waitmove 0
playsfx 71
setmaptile 4, 2, 721, 1
setmaptile 4, 3, 729, 1
- special 142
+ special DrawWholeMapView
pause 20
move 1, LilycoveCity_ContestLobby_Movement_15901C
waitmove 0
@@ -764,7 +764,7 @@ LilycoveCity_ContestLobby_EventScript_159084:: @ 8159084
LilycoveCity_ContestLobby_EventScript_15908D:: @ 815908D
SlateportCity_ContestLobby_EventScript_15908D:: @ 815908D
lockall
- special 259
+ special ShowBerryBlenderRecordWindow
waitbutton
hidebox 0, 0, 29, 19
releaseall
diff --git a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc
index d2a86e0a5..dcf74b77c 100644
--- a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc
+++ b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc
@@ -8,7 +8,7 @@ LilycoveCity_CoveLilyMotel_2F_EventScript_1583A1:: @ 81583A1
callif 0, LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7
checkflag 2
callif 1, LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD
- specialval RESULT, 335
+ specialval RESULT, sub_8090FC0
compare RESULT, 1
jumpeq LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0
release
@@ -29,7 +29,7 @@ LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD:: @ 81583DD
message LilycoveCity_CoveLilyMotel_2F_Text_18708F
waittext
call LilycoveCity_CoveLilyMotel_2F_EventScript_1A02C5
- special 264
+ special sub_810D6A4
waitstate
release
end
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc b/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc
index c82cc6428..74b746633 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc
@@ -7,7 +7,7 @@ LilycoveCity_DepartmentStoreElevator_EventScript_15A39C:: @ 815A39C
checkflag 2
callif 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A4CF
copyvar 0x8005, 0x4043
- special 306
+ special sub_810E944
message LilycoveCity_DepartmentStoreElevator_Text_1A0EF6
waittext
multichoice 0, 0, 57, 0
@@ -74,11 +74,11 @@ LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8:: @ 815A4B8
hidebox 0, 0, 29, 19
move LAST_TALKED, LilycoveCity_DepartmentStoreElevator_Movement_1A0845
waitmove 0
- special 273
+ special sub_810EBEC
waitstate
setflag 2
return
LilycoveCity_DepartmentStoreElevator_EventScript_15A4CF:: @ 815A4CF
- special 216
+ special SetDepartmentStoreFloorVar
return
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc
index 325c56330..feff49c42 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc
@@ -19,17 +19,17 @@ LilycoveCity_DepartmentStore_1F_EventScript_159D5E:: @ 8159D5E
setflag 2250
message LilycoveCity_DepartmentStore_1F_Text_1C4CC6
waittext
- special 257
+ special RetrieveLotteryNumber
copyvar 0x8008, RESULT
- special 337
+ special sub_810F9AC
msgbox LilycoveCity_DepartmentStore_1F_Text_1C4CF6, 4
move 2, LilycoveCity_DepartmentStore_1F_Movement_1A0843
waitmove 0
playsfx 4
- special 217
- special 258
+ special DoLotteryCornerComputerEffect
+ special PickLotteryCornerTicket
pause 220
- special 218
+ special EndLotteryCornerComputerEffect
pause 10
move 2, LilycoveCity_DepartmentStore_1F_Movement_1A0839
waitmove 0
diff --git a/data/scripts/maps/LilycoveCity_Harbor.inc b/data/scripts/maps/LilycoveCity_Harbor.inc
index 2f4e4352e..f8ff8f9f3 100644
--- a/data/scripts/maps/LilycoveCity_Harbor.inc
+++ b/data/scripts/maps/LilycoveCity_Harbor.inc
@@ -135,7 +135,7 @@ LilycoveCity_Harbor_EventScript_1599EE:: @ 81599EE
callif 1, LilycoveCity_Harbor_EventScript_1599CE
pause 30
spriteinvisible 255, 0, 0
- special 0
+ special HealPlayerParty
setvar 0x8004, 2
call LilycoveCity_Harbor_EventScript_1A040E
warp SouthernIsland_Exterior, 255, 13, 22
diff --git a/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc b/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc
index 2e6d6698f..b3564ebf5 100644
--- a/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc
+++ b/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc
@@ -98,7 +98,7 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_1586D8:: @ 81586D8
lockall
checkflag 236
jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158793
- specialval 0x8004, 137
+ specialval 0x8004, sub_80C4D50
switch 0x8004
case 1, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C
case 2, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C
diff --git a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc
index c9b026060..6adea2eb2 100644
--- a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc
+++ b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc
@@ -14,23 +14,23 @@ LilycoveCity_MoveDeletersHouse_EventScript_159AAE:: @ 8159AAE
LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE
msgbox LilycoveCity_MoveDeletersHouse_Text_18B68C, 4
- special 159
+ special sub_80F9A0C
waitstate
compare 0x8004, 255
jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B7B
- special 328
+ special sub_80FA148
compare RESULT, 1
jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B71
- special 223
+ special sub_80F9F3C
compare RESULT, 1
jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B64
msgbox LilycoveCity_MoveDeletersHouse_Text_18B6B0, 4
fadescreen 1
- special 220
+ special sub_80F9EEC
fadescreen 0
compare 0x8005, 4
jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159ADE
- special 222
+ special sub_80F9F84
msgbox LilycoveCity_MoveDeletersHouse_Text_18B6F2, 5
switch RESULT
case 1, LilycoveCity_MoveDeletersHouse_EventScript_159B53
@@ -39,7 +39,7 @@ LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE
end
LilycoveCity_MoveDeletersHouse_EventScript_159B53:: @ 8159B53
- special 221
+ special sub_80FA0DC
fanfare 378
waitfanfare
msgbox LilycoveCity_MoveDeletersHouse_Text_18B71E, 4
@@ -47,7 +47,7 @@ LilycoveCity_MoveDeletersHouse_EventScript_159B53:: @ 8159B53
end
LilycoveCity_MoveDeletersHouse_EventScript_159B64:: @ 8159B64
- special 222
+ special sub_80F9F84
msgbox LilycoveCity_MoveDeletersHouse_Text_18B6D0, 4
releaseall
end
diff --git a/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc b/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc
index 9ac66f98e..e503ef4ec 100644
--- a/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc
+++ b/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc
@@ -68,37 +68,37 @@ LilycoveCity_PokemonTrainerFanClub_MapScript1_159412:: @ 8159412
end
LilycoveCity_PokemonTrainerFanClub_EventScript_159429:: @ 8159429
- special 167
+ special sub_810FCE8
setvar 0x8004, 8
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 0
callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5
setvar 0x8004, 9
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 0
callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD
setvar 0x8004, 10
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 0
callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5
setvar 0x8004, 11
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 0
callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED
setvar 0x8004, 12
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 0
callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5
setvar 0x8004, 13
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 0
callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD
setvar 0x8004, 14
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 0
callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_159505
setvar 0x8004, 15
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 0
callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_15950D
end
@@ -147,13 +147,13 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15952F:: @ 815952F
lock
faceplayer
setvar 0x8004, 13
- special 165
+ special sub_810FDAC
compare 0x4095, 0
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15959C
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15956E
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 7
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159592
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A400, 4
@@ -161,7 +161,7 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15952F:: @ 815952F
end
LilycoveCity_PokemonTrainerFanClub_EventScript_15956E:: @ 815956E
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159588
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A36A, 4
@@ -187,13 +187,13 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1595A6:: @ 81595A6
lock
faceplayer
setvar 0x8004, 8
- special 165
+ special sub_810FDAC
compare 0x4095, 0
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159613
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 7
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159609
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A629, 4
@@ -201,7 +201,7 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1595A6:: @ 81595A6
end
LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5:: @ 81595E5
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1595FF
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A584, 4
@@ -227,13 +227,13 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15961D:: @ 815961D
lock
faceplayer
setvar 0x8004, 9
- special 165
+ special sub_810FDAC
compare 0x4095, 0
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15968A
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15965C
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 7
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159680
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A814, 4
@@ -241,7 +241,7 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15961D:: @ 815961D
end
LilycoveCity_PokemonTrainerFanClub_EventScript_15965C:: @ 815965C
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159676
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A71E, 4
@@ -267,13 +267,13 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159694:: @ 8159694
lock
faceplayer
setvar 0x8004, 10
- special 165
+ special sub_810FDAC
compare 0x4095, 0
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159701
- specialval RESULT, 163
+ specialval RESULT, sub_810FD60
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 7
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596F7
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AB0A, 4
@@ -281,7 +281,7 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159694:: @ 8159694
end
LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3:: @ 81596D3
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596ED
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AA39, 4
@@ -307,11 +307,11 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15970B:: @ 815970B
lock
faceplayer
setvar 0x8004, 11
- special 165
- specialval RESULT, 163
+ special sub_810FDAC
+ specialval RESULT, sub_810FD60
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15973F
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 7
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159763
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18ACC7, 4
@@ -319,7 +319,7 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15970B:: @ 815970B
end
LilycoveCity_PokemonTrainerFanClub_EventScript_15973F:: @ 815973F
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159759
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AC15, 4
@@ -340,11 +340,11 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15976D:: @ 815976D
lock
faceplayer
setvar 0x8004, 12
- special 165
- specialval RESULT, 163
+ special sub_810FDAC
+ specialval RESULT, sub_810FD60
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 7
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597C5
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AE63, 4
@@ -352,7 +352,7 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15976D:: @ 815976D
end
LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1:: @ 81597A1
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597BB
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AD6D, 4
@@ -373,11 +373,11 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1597CF:: @ 81597CF
lock
faceplayer
setvar 0x8004, 14
- special 165
- specialval RESULT, 163
+ special sub_810FDAC
+ specialval RESULT, sub_810FD60
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159803
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 7
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159827
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B030, 4
@@ -385,7 +385,7 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1597CF:: @ 81597CF
end
LilycoveCity_PokemonTrainerFanClub_EventScript_159803:: @ 8159803
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15981D
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AF62, 4
@@ -406,11 +406,11 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159831:: @ 8159831
lock
faceplayer
setvar 0x8004, 15
- special 165
- specialval RESULT, 163
+ special sub_810FDAC
+ specialval RESULT, sub_810FD60
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159865
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 7
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159889
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B1FD, 4
@@ -418,7 +418,7 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159831:: @ 8159831
end
LilycoveCity_PokemonTrainerFanClub_EventScript_159865:: @ 8159865
- specialval RESULT, 164
+ specialval RESULT, sub_810FCB0
compare RESULT, 1
jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15987F
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B16E, 4
diff --git a/data/scripts/maps/LittlerootTown.inc b/data/scripts/maps/LittlerootTown.inc
index 81692acc5..2a4f77529 100644
--- a/data/scripts/maps/LittlerootTown.inc
+++ b/data/scripts/maps/LittlerootTown.inc
@@ -207,7 +207,7 @@ LittlerootTown_EventScript_14D708:: @ 814D708
end
LittlerootTown_EventScript_14D722:: @ 814D722
- special 148
+ special GetPlayerBigGuyGirlString
msgbox LittlerootTown_Text_16ADF2, 4
release
end
diff --git a/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc b/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc
index 9816734d0..69206566a 100644
--- a/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc
+++ b/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc
@@ -98,7 +98,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_152744:: @ 8152744
move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F
move 4, LittlerootTown_BrendansHouse_1F_Movement_152782
waitmove 0
- special 149
+ special GetRivalSonDaughterString
msgbox LittlerootTown_BrendansHouse_1F_Text_1730C2, 4
setflag 87
setvar 0x4082, 2
diff --git a/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc b/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc
index 0c6ec79f7..0803cd512 100644
--- a/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc
+++ b/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc
@@ -59,10 +59,10 @@ LittlerootTown_BrendansHouse_2F_EventScript_15281E:: @ 815281E
LittlerootTown_BrendansHouse_2F_EventScript_152837:: @ 8152837
setvar 0x8004, 1
- special 214
+ special DoPCTurnOnEffect
playsfx SE_PC_ON
msgbox LittlerootTown_BrendansHouse_2F_Text_1A10D6, 4
- special 249
+ special BedroomPC
waitstate
releaseall
end
@@ -70,7 +70,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_152837:: @ 8152837
gBrendanHouse_TurnPCOff:: @ 8152850
setvar 0x8004, 1
playsfx SE_PC_OFF
- special 215
+ special DoPCTurnOffEffect
releaseall
end
diff --git a/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc b/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc
index 2b9ad42ef..5f7f20d63 100644
--- a/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc
+++ b/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc
@@ -98,7 +98,7 @@ LittlerootTown_MaysHouse_1F_EventScript_152982:: @ 8152982
move 255, LittlerootTown_MaysHouse_1F_Movement_1A0843
move 4, LittlerootTown_MaysHouse_1F_Movement_1529C0
waitmove 0
- special 149
+ special GetRivalSonDaughterString
msgbox LittlerootTown_MaysHouse_1F_Text_1730C2, 4
setflag 87
setvar 0x408c, 2
@@ -141,7 +141,7 @@ LittlerootTown_MaysHouse_1F_EventScript_1529EB:: @ 81529EB
jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A17
compare 0x408d, 3
jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A2B
- special 149
+ special GetRivalSonDaughterString
msgbox LittlerootTown_BrendansHouse_1F_Text_1731C6, 4
release
end
diff --git a/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc b/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc
index 1aca3f86e..85a41caff 100644
--- a/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc
+++ b/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc
@@ -207,10 +207,10 @@ LittlerootTown_MaysHouse_2F_EventScript_152C52:: @ 8152C52
LittlerootTown_MaysHouse_2F_EventScript_152C5C:: @ 8152C5C
setvar 0x8004, 2
- special 214
+ special DoPCTurnOnEffect
playsfx SE_PC_ON
msgbox LittlerootTown_MaysHouse_2F_Text_1A10D6, 4
- special 249
+ special BedroomPC
waitstate
releaseall
end
@@ -218,6 +218,6 @@ LittlerootTown_MaysHouse_2F_EventScript_152C5C:: @ 8152C5C
gMayHouse_TurnPCOff:: @ 8152C75
setvar 0x8004, 2
playsfx SE_PC_OFF
- special 215
+ special DoPCTurnOffEffect
releaseall
end
diff --git a/data/scripts/maps/MauvilleCity_BikeShop.inc b/data/scripts/maps/MauvilleCity_BikeShop.inc
index cb3b8505b..5436bf38a 100644
--- a/data/scripts/maps/MauvilleCity_BikeShop.inc
+++ b/data/scripts/maps/MauvilleCity_BikeShop.inc
@@ -58,7 +58,7 @@ MauvilleCity_BikeShop_EventScript_156847:: @ 8156847
MauvilleCity_BikeShop_EventScript_156861:: @ 8156861
msgbox MauvilleCity_BikeShop_Text_181362, 4
- special 130
+ special SwapRegisteredBike
release
end
diff --git a/data/scripts/maps/MauvilleCity_GameCorner.inc b/data/scripts/maps/MauvilleCity_GameCorner.inc
index a0aab4238..f20a7dacd 100644
--- a/data/scripts/maps/MauvilleCity_GameCorner.inc
+++ b/data/scripts/maps/MauvilleCity_GameCorner.inc
@@ -525,7 +525,7 @@ MauvilleCity_GameCorner_EventScript_157135:: @ 8157135
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 0
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -536,7 +536,7 @@ MauvilleCity_GameCorner_EventScript_157155:: @ 8157155
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 1
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -547,7 +547,7 @@ MauvilleCity_GameCorner_EventScript_157175:: @ 8157175
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 2
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -558,7 +558,7 @@ MauvilleCity_GameCorner_EventScript_157195:: @ 8157195
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 3
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -569,7 +569,7 @@ MauvilleCity_GameCorner_EventScript_1571B5:: @ 81571B5
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 4
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -580,7 +580,7 @@ MauvilleCity_GameCorner_EventScript_1571D5:: @ 81571D5
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 5
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -591,7 +591,7 @@ MauvilleCity_GameCorner_EventScript_1571F5:: @ 81571F5
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 6
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -602,7 +602,7 @@ MauvilleCity_GameCorner_EventScript_157215:: @ 8157215
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 7
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -613,7 +613,7 @@ MauvilleCity_GameCorner_EventScript_157235:: @ 8157235
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 8
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -624,7 +624,7 @@ MauvilleCity_GameCorner_EventScript_157255:: @ 8157255
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 9
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -635,7 +635,7 @@ MauvilleCity_GameCorner_EventScript_157275:: @ 8157275
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 10
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
@@ -646,7 +646,7 @@ MauvilleCity_GameCorner_EventScript_157295:: @ 8157295
compare RESULT, 0
jumpeq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 11
- specialval RESULT, 286
+ specialval RESULT, sub_810F424
pokecasino RESULT
releaseall
end
diff --git a/data/scripts/maps/MauvilleCity_Gym.inc b/data/scripts/maps/MauvilleCity_Gym.inc
index 9abac00d7..bd5c119f3 100644
--- a/data/scripts/maps/MauvilleCity_Gym.inc
+++ b/data/scripts/maps/MauvilleCity_Gym.inc
@@ -47,24 +47,24 @@ MauvilleCity_Gym_EventScript_15649B:: @ 815649B
MauvilleCity_Gym_EventScript_15657D:: @ 815657D
setvar 0x8004, 0
- special 140
+ special MauvilleGymSpecial1
jump MauvilleCity_Gym_EventScript_156491
end
MauvilleCity_Gym_EventScript_15658B:: @ 815658B
setvar 0x8004, 1
- special 140
+ special MauvilleGymSpecial1
jump MauvilleCity_Gym_EventScript_156491
end
MauvilleCity_Gym_EventScript_156599:: @ 8156599
setvar 0x8004, 2
- special 140
+ special MauvilleGymSpecial1
jump MauvilleCity_Gym_EventScript_156491
end
MauvilleCity_Gym_EventScript_1565A7:: @ 81565A7
- special 144
+ special MauvilleGymSpecial3
end
MauvilleCity_Gym_EventScript_1565AB:: @ 81565AB
@@ -89,8 +89,8 @@ MauvilleCity_Gym_EventScript_1565DB:: @ 81565DB
callif 1, MauvilleCity_Gym_EventScript_1A00FB
setvar 0x8008, 3
call MauvilleCity_Gym_EventScript_1A01C0
- special 144
- special 142
+ special MauvilleGymSpecial3
+ special DrawWholeMapView
playsfx 44
jump MauvilleCity_Gym_EventScript_15661D
end
@@ -143,9 +143,9 @@ MauvilleCity_Gym_EventScript_156695:: @ 8156695
end
MauvilleCity_Gym_EventScript_1566BA:: @ 81566BA
- special 139
- special 140
- special 142
+ special MauvilleGymSpecial2
+ special MauvilleGymSpecial1
+ special DrawWholeMapView
playsfx 44
checkflag 99
jumpeq MauvilleCity_Gym_EventScript_1566E1
diff --git a/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc b/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc
index b943b9c8f..b2b5dabd4 100644
--- a/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc
@@ -9,7 +9,7 @@ MauvilleCity_PokemonCenter_1F_MapScript1_157357:: @ 8157357
end
MauvilleCity_PokemonCenter_1F_EventScript_157365:: @ 8157365
- special 104
+ special sub_80F83D0
end
MauvilleCity_PokemonCenter_1F_EventScript_157369:: @ 8157369
diff --git a/data/scripts/maps/MeteorFalls_1F_2R.inc b/data/scripts/maps/MeteorFalls_1F_2R.inc
index 6c239043d..8e45c34ae 100644
--- a/data/scripts/maps/MeteorFalls_1F_2R.inc
+++ b/data/scripts/maps/MeteorFalls_1F_2R.inc
@@ -3,7 +3,7 @@ MeteorFalls_1F_2R_MapScripts:: @ 815C678
MeteorFalls_1F_2R_EventScript_15C679:: @ 815C679
trainerbattle 0, OPPONENT_NICOLAS_1, 0, MeteorFalls_1F_2R_Text_1939C5, MeteorFalls_1F_2R_Text_193A35
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq MeteorFalls_1F_2R_EventScript_15C6A0
msgbox MeteorFalls_1F_2R_Text_193A60, 6
@@ -16,7 +16,7 @@ MeteorFalls_1F_2R_EventScript_15C6A0:: @ 815C6A0
MeteorFalls_1F_2R_EventScript_15C6B7:: @ 815C6B7
trainerbattle 4, OPPONENT_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_193BB7, MeteorFalls_1F_2R_Text_193C10, MeteorFalls_1F_2R_Text_193C9F
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq MeteorFalls_1F_2R_EventScript_15C6E2
msgbox MeteorFalls_1F_2R_Text_193C35, 6
@@ -29,7 +29,7 @@ MeteorFalls_1F_2R_EventScript_15C6E2:: @ 815C6E2
MeteorFalls_1F_2R_EventScript_15C6FD:: @ 815C6FD
trainerbattle 4, OPPONENT_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_193D10, MeteorFalls_1F_2R_Text_193D6E, MeteorFalls_1F_2R_Text_193DFB
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq MeteorFalls_1F_2R_EventScript_15C728
msgbox MeteorFalls_1F_2R_Text_193D9A, 6
diff --git a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc
index c56adb1f3..14836f3e0 100644
--- a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc
+++ b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc
@@ -5,7 +5,7 @@ MossdeepCity_GameCorner_1F_MapScripts:: @ 815AC52
.byte 0
MossdeepCity_GameCorner_1F_MapScript1_15AC62:: @ 815AC62
- special 246
+ special sub_813601C
compare RESULT, 1
callif 1, MossdeepCity_GameCorner_1F_EventScript_15AC71
end
@@ -16,7 +16,7 @@ MossdeepCity_GameCorner_1F_EventScript_15AC71:: @ 815AC71
return
MossdeepCity_GameCorner_1F_MapScript1_15AC84:: @ 815AC84
- special 246
+ special sub_813601C
compare RESULT, 0
callif 1, MossdeepCity_GameCorner_1F_EventScript_15AC9E
compare 0x40c0, 0
@@ -55,7 +55,7 @@ MossdeepCity_GameCorner_1F_EventScript_15ACD5:: @ 815ACD5
callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD2B
compare 0x40c0, 3
callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD34
- special 40
+ special LoadPlayerParty
setvar 0x40c0, 0
releaseall
end
@@ -91,8 +91,8 @@ MossdeepCity_GameCorner_1F_EventScript_15AD42:: @ 815AD42
end
MossdeepCity_GameCorner_1F_EventScript_15AD59:: @ 815AD59
- special 39
- special 285
+ special SavePlayerParty
+ special sub_810F414
msgbox MossdeepCity_GameCorner_1F_Text_18E650, 5
compare RESULT, 0
jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8
@@ -102,13 +102,13 @@ MossdeepCity_GameCorner_1F_EventScript_15AD59:: @ 815AD59
msgbox MossdeepCity_GameCorner_1F_Text_18E741, 5
compare RESULT, 0
callif 1, MossdeepCity_GameCorner_1F_EventScript_15ADE8
- special 40
+ special LoadPlayerParty
call MossdeepCity_GameCorner_1F_EventScript_19F806
compare RESULT, 0
jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8
hidebox 0, 0, 15, 10
- special 39
- special 248
+ special SavePlayerParty
+ special ReducePlayerPartyToThree
msgbox MossdeepCity_GameCorner_1F_Text_18E777, 4
closebutton
compare FACING, 2
@@ -123,7 +123,7 @@ MossdeepCity_GameCorner_1F_EventScript_15AD59:: @ 815AD59
end
MossdeepCity_GameCorner_1F_EventScript_15ADE8:: @ 815ADE8
- special 40
+ special LoadPlayerParty
msgbox MossdeepCity_GameCorner_1F_Text_18E698, 4
release
end
@@ -131,7 +131,7 @@ MossdeepCity_GameCorner_1F_EventScript_15ADE8:: @ 815ADE8
MossdeepCity_GameCorner_1F_EventScript_15ADF5:: @ 815ADF5
msgbox MossdeepCity_GameCorner_1F_Text_18E6DA, 4
fadescreen 1
- special 41
+ special sub_80C5568
waitstate
return
diff --git a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc
index a733093f9..a5a013d5f 100644
--- a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc
+++ b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc
@@ -4,7 +4,7 @@ MossdeepCity_GameCorner_B1F_MapScripts:: @ 815AE55
.byte 0
MossdeepCity_GameCorner_B1F_MapScript1_15AE60:: @ 815AE60
- special 322
+ special sub_8134AB4
end
MossdeepCity_GameCorner_B1F_MapScript2_15AE64:: @ 815AE64
@@ -15,12 +15,12 @@ MossdeepCity_GameCorner_B1F_EventScript_15AE6E:: @ 815AE6E
lockall
move 255, MossdeepCity_GameCorner_B1F_Movement_15AEF9
waitmove 0
- special 235
+ special sub_81360C0
msgbox 0x20234cc, 4
closebutton
setvar 0x8004, 2
setvar 0x8005, 0
- special 236
+ special sub_813556C
waitstate
compare RESULT, 3
callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AED5
@@ -29,10 +29,10 @@ MossdeepCity_GameCorner_B1F_EventScript_15AE6E:: @ 815AE6E
compare RESULT, 2
callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AEEE
closebutton
- special 0
+ special HealPlayerParty
move 255, MossdeepCity_GameCorner_B1F_Movement_15AEFF
waitmove 0
- special 40
+ special LoadPlayerParty
setvar 0x4001, 1
warp MossdeepCity_GameCorner_1F, 255, 3, 1
waitstate
@@ -46,14 +46,14 @@ MossdeepCity_GameCorner_B1F_EventScript_15AED5:: @ 815AED5
MossdeepCity_GameCorner_B1F_EventScript_15AEE3:: @ 815AEE3
setvar 0x40c0, 1
- special 141
+ special ShowFieldMessageStringVar4
waittext
waitbutton
return
MossdeepCity_GameCorner_B1F_EventScript_15AEEE:: @ 815AEEE
setvar 0x40c0, 2
- special 141
+ special ShowFieldMessageStringVar4
waittext
waitbutton
return
diff --git a/data/scripts/maps/MossdeepCity_Gym.inc b/data/scripts/maps/MossdeepCity_Gym.inc
index 192f9e396..20f43a150 100644
--- a/data/scripts/maps/MossdeepCity_Gym.inc
+++ b/data/scripts/maps/MossdeepCity_Gym.inc
@@ -93,7 +93,7 @@ MossdeepCity_Gym_EventScript_15A5EA:: @ 815A5EA
end
MossdeepCity_Gym_EventScript_15A619:: @ 815A619
- special 142
+ special DrawWholeMapView
playsfx 36
releaseall
end
diff --git a/data/scripts/maps/MossdeepCity_House1.inc b/data/scripts/maps/MossdeepCity_House1.inc
index d83e49643..319dfba8e 100644
--- a/data/scripts/maps/MossdeepCity_House1.inc
+++ b/data/scripts/maps/MossdeepCity_House1.inc
@@ -6,7 +6,7 @@ MossdeepCity_House1_EventScript_15A82F:: @ 815A82F
faceplayer
bufferfirstpoke 0
msgbox MossdeepCity_House1_Text_18D465, 4
- specialval RESULT, 277
+ specialval RESULT, GetPokeblockNameByMonNature
compare RESULT, 0
jumpeq MossdeepCity_House1_EventScript_15A855
msgbox MossdeepCity_House1_Text_18D475, 4
diff --git a/data/scripts/maps/MossdeepCity_House4.inc b/data/scripts/maps/MossdeepCity_House4.inc
index bc8f44400..12dc941e7 100644
--- a/data/scripts/maps/MossdeepCity_House4.inc
+++ b/data/scripts/maps/MossdeepCity_House4.inc
@@ -18,10 +18,10 @@ MossdeepCity_House4_EventScript_15AB46:: @ 815AB46
MossdeepCity_House4_EventScript_15AB50:: @ 815AB50
lock
faceplayer
- special 7
+ special sub_80BB63C
compare RESULT, 0
jumpeq MossdeepCity_House4_EventScript_15AB6D
- special 278
+ special GetSecretBaseNearbyMapName
msgbox MossdeepCity_House4_Text_18E17E, 4
release
end
diff --git a/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc b/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc
index 3b3a7f083..db31e4c62 100644
--- a/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc
+++ b/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc
@@ -5,7 +5,7 @@ MossdeepCity_SpaceCenter_1F_EventScript_15AB8B:: @ 815AB8B
lock
faceplayer
checkdailyflags
- specialval RESULT, 256
+ specialval RESULT, GetWeekCount
buffernum 0, RESULT
compare RESULT, 0
callif 1, MossdeepCity_SpaceCenter_1F_EventScript_15ABBA
diff --git a/data/scripts/maps/MtChimney.inc b/data/scripts/maps/MtChimney.inc
index b7a43328b..fdebcf102 100644
--- a/data/scripts/maps/MtChimney.inc
+++ b/data/scripts/maps/MtChimney.inc
@@ -440,7 +440,7 @@ MtChimney_EventScript_15D1DA:: @ 815D1DA
MtChimney_EventScript_15D1E3:: @ 815D1E3
trainerbattle 0, OPPONENT_SHELBY_1, 0, MtChimney_Text_19597F, MtChimney_Text_1959D8
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq MtChimney_EventScript_15D20A
msgbox MtChimney_Text_195A04, 6
diff --git a/data/scripts/maps/MtChimney_CableCarStation.inc b/data/scripts/maps/MtChimney_CableCarStation.inc
index c00914f2e..24101b0cb 100644
--- a/data/scripts/maps/MtChimney_CableCarStation.inc
+++ b/data/scripts/maps/MtChimney_CableCarStation.inc
@@ -47,8 +47,8 @@ MtChimney_CableCarStation_EventScript_15C16C:: @ 815C16C
setvar 0x8004, 1
setvar 0x40a3, 2
inccounter GAME_STAT_RODE_CABLE_CAR
- special 151
- special 152
+ special CableCarWarp
+ special sub_8123218
waitstate
release
end
diff --git a/data/scripts/maps/MtPyre_6F.inc b/data/scripts/maps/MtPyre_6F.inc
index 3729079bb..657b4ef15 100644
--- a/data/scripts/maps/MtPyre_6F.inc
+++ b/data/scripts/maps/MtPyre_6F.inc
@@ -3,7 +3,7 @@ MtPyre_6F_MapScripts:: @ 815D447
MtPyre_6F_EventScript_15D448:: @ 815D448
trainerbattle 0, OPPONENT_VALERIE_1, 0, MtPyre_6F_Text_1969FE, MtPyre_6F_Text_196A30
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq MtPyre_6F_EventScript_15D46F
msgbox MtPyre_6F_Text_196A4C, 6
diff --git a/data/scripts/maps/NewMauville_Entrance.inc b/data/scripts/maps/NewMauville_Entrance.inc
index dc5885939..547fc72e7 100644
--- a/data/scripts/maps/NewMauville_Entrance.inc
+++ b/data/scripts/maps/NewMauville_Entrance.inc
@@ -39,7 +39,7 @@ NewMauville_Entrance_EventScript_15E4DC:: @ 815E4DC
setmaptile 3, 1, 715, 1
setmaptile 4, 1, 716, 0
setmaptile 5, 1, 717, 1
- special 142
+ special DrawWholeMapView
playsfx 20
setvar 0x40ba, 1
releaseall
diff --git a/data/scripts/maps/NewMauville_Inside.inc b/data/scripts/maps/NewMauville_Inside.inc
index 29c42e460..b088b8e7d 100644
--- a/data/scripts/maps/NewMauville_Inside.inc
+++ b/data/scripts/maps/NewMauville_Inside.inc
@@ -33,7 +33,7 @@ NewMauville_Inside_EventScript_15E5AA:: @ 815E5AA
setvar 0x4002, 0
playsfx 21
call NewMauville_Inside_EventScript_15E5DA
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -43,7 +43,7 @@ NewMauville_Inside_EventScript_15E5C2:: @ 815E5C2
setvar 0x4002, 1
playsfx 21
call NewMauville_Inside_EventScript_15E728
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -145,7 +145,7 @@ NewMauville_Inside_EventScript_15E88B:: @ 815E88B
setmaptile 33, 3, 757, 1
setmaptile 34, 3, 758, 1
setmaptile 35, 3, 759, 1
- special 142
+ special DrawWholeMapView
return
NewMauville_Inside_EventScript_15E8E0:: @ 815E8E0
diff --git a/data/scripts/maps/PacifidlogTown_House2.inc b/data/scripts/maps/PacifidlogTown_House2.inc
index b95a41ceb..e45f09de4 100644
--- a/data/scripts/maps/PacifidlogTown_House2.inc
+++ b/data/scripts/maps/PacifidlogTown_House2.inc
@@ -13,10 +13,10 @@ PacifidlogTown_House2_EventScript_154168:: @ 8154168
checkflag 300
callif 0, PacifidlogTown_House2_EventScript_1541D7
setflag 300
- specialval RESULT, 230
+ specialval RESULT, GetLeadMonFriendshipScore
compare RESULT, 4
jumpif 4, PacifidlogTown_House2_EventScript_1541EC
- specialval RESULT, 230
+ specialval RESULT, GetLeadMonFriendshipScore
compare RESULT, 2
jumpif 4, PacifidlogTown_House2_EventScript_15421B
jump PacifidlogTown_House2_EventScript_154225
@@ -25,7 +25,7 @@ PacifidlogTown_House2_EventScript_154168:: @ 8154168
PacifidlogTown_House2_EventScript_1541B4:: @ 81541B4
checkflag 299
jumpif 0, PacifidlogTown_House2_EventScript_1A14DC
- specialval RESULT, 334
+ specialval RESULT, sub_810F908
compare RESULT, 0
callif 1, PacifidlogTown_House2_EventScript_1541E8
return
@@ -49,7 +49,7 @@ PacifidlogTown_House2_EventScript_1541EC:: @ 81541EC
compare RESULT, 0
jumpeq PacifidlogTown_House2_EventScript_1A029B
setflag 299
- special 333
+ special sub_810F950
msgbox PacifidlogTown_House2_Text_179283, 4
release
end
@@ -65,13 +65,13 @@ PacifidlogTown_House2_EventScript_154225:: @ 8154225
compare RESULT, 0
jumpeq PacifidlogTown_House2_EventScript_1A029B
setflag 299
- special 333
+ special sub_810F950
msgbox PacifidlogTown_House2_Text_179283, 4
release
end
PacifidlogTown_House2_EventScript_154254:: @ 8154254
- specialval RESULT, 334
+ specialval RESULT, sub_810F908
buffernum 0, RESULT
msgbox PacifidlogTown_House2_Text_1792F2, 4
release
diff --git a/data/scripts/maps/PacifidlogTown_House3.inc b/data/scripts/maps/PacifidlogTown_House3.inc
index 7ee815f07..6ab9a09b0 100644
--- a/data/scripts/maps/PacifidlogTown_House3.inc
+++ b/data/scripts/maps/PacifidlogTown_House3.inc
@@ -8,25 +8,25 @@ PacifidlogTown_House3_EventScript_15429E:: @ 815429E
jumpeq PacifidlogTown_House3_EventScript_154338
setvar 0x8008, 2
copyvar 0x8004, 0x8008
- specialval RESULT, 252
+ specialval RESULT, sub_804D89C
copyvar 0x8009, RESULT
msgbox PacifidlogTown_House3_Text_17940E, 5
compare RESULT, 0
jumpeq PacifidlogTown_House3_EventScript_154320
- special 159
+ special sub_80F9A0C
waitstate
copyvar 0x800a, 0x8004
compare 0x8004, 255
jumpeq PacifidlogTown_House3_EventScript_154320
copyvar 0x8005, 0x800a
- specialval RESULT, 255
+ specialval RESULT, sub_804DB2C
copyvar 0x800b, RESULT
comparevars RESULT, 0x8009
jumpif 5, PacifidlogTown_House3_EventScript_15432A
copyvar 0x8004, 0x8008
copyvar 0x8005, 0x800a
- special 253
- special 254
+ special sub_804DB68
+ special sub_804E174
waitstate
bufferpoke 0, 0x8009
msgbox PacifidlogTown_House3_Text_1794C4, 4
diff --git a/data/scripts/maps/PacifidlogTown_House5.inc b/data/scripts/maps/PacifidlogTown_House5.inc
index f20de28df..dca1a51b0 100644
--- a/data/scripts/maps/PacifidlogTown_House5.inc
+++ b/data/scripts/maps/PacifidlogTown_House5.inc
@@ -4,7 +4,7 @@ PacifidlogTown_House5_MapScripts:: @ 8154393
PacifidlogTown_House5_EventScript_154394:: @ 8154394
lock
faceplayer
- specialval RESULT, 209
+ specialval RESULT, IsMirageIslandPresent
compare RESULT, 1
jumpeq PacifidlogTown_House5_EventScript_1543B0
msgbox PacifidlogTown_House5_Text_179718, 4
diff --git a/data/scripts/maps/PetalburgCity.inc b/data/scripts/maps/PetalburgCity.inc
index 3667eb3cf..dc5efe243 100644
--- a/data/scripts/maps/PetalburgCity.inc
+++ b/data/scripts/maps/PetalburgCity.inc
@@ -26,13 +26,13 @@ PetalburgCity_MapScript2_14B73D:: @ 814B73D
PetalburgCity_EventScript_14B747:: @ 814B747
lockall
setflag 0x4000
- special 39
- special 301
+ special SavePlayerParty
+ special PutZigzagoonInPlayerParty
move 2, PetalburgCity_Movement_14B7ED
move 255, PetalburgCity_Movement_14B7CC
waitmove 0
msgbox PetalburgCity_Text_16D361, 4
- special 157
+ special StartBattle_WallyTutorial
waitstate
msgbox PetalburgCity_Text_16D3DE, 4
movecoords 2, PetalburgCity_Movement_1A083F, 0, 0
@@ -43,7 +43,7 @@ PetalburgCity_EventScript_14B747:: @ 814B747
setvar 0x4057, 3
fadedefault
clearflag 0x4001
- special 40
+ special LoadPlayerParty
setvar 0x4085, 1
warp PetalburgCity_Gym, 255, 4, 108
waitstate
diff --git a/data/scripts/maps/PetalburgCity_Gym.inc b/data/scripts/maps/PetalburgCity_Gym.inc
index 9c6802e28..c534cb538 100644
--- a/data/scripts/maps/PetalburgCity_Gym.inc
+++ b/data/scripts/maps/PetalburgCity_Gym.inc
@@ -211,7 +211,7 @@ PetalburgCity_Gym_EventScript_154669:: @ 8154669
clearflag 726
clearflag 866
setflag 889
- special 211
+ special InitBirchState
warp PetalburgCity, 255, 15, 8
waitstate
release
@@ -363,7 +363,7 @@ PetalburgCity_Gym_EventScript_15493D:: @ 815493D
end
PetalburgCity_Gym_EventScript_154969:: @ 8154969
- specialval RESULT, 50
+ specialval RESULT, IsEnigmaBerryValid
compare RESULT, 0
jumpeq PetalburgCity_Gym_EventScript_1549B2
checkitem ITEM_ENIGMA_BERRY, 1
@@ -407,7 +407,7 @@ PetalburgCity_Gym_EventScript_1549D6:: @ 81549D6
call PetalburgCity_Gym_EventScript_1A01C0
clearflag 940
call PetalburgCity_Gym_EventScript_1544ED
- special 142
+ special DrawWholeMapView
jump PetalburgCity_Gym_EventScript_154A2C
end
@@ -773,7 +773,7 @@ PetalburgCity_Gym_EventScript_154DF6:: @ 8154DF6
PetalburgCity_Gym_EventScript_154E1A:: @ 8154E1A
setvar 0x8005, 0
call PetalburgCity_Gym_EventScript_154FBB
- special 142
+ special DrawWholeMapView
release
end
@@ -791,7 +791,7 @@ PetalburgCity_Gym_EventScript_154E32:: @ 8154E32
PetalburgCity_Gym_EventScript_154E56:: @ 8154E56
setvar 0x8005, 0
call PetalburgCity_Gym_EventScript_154FFD
- special 142
+ special DrawWholeMapView
release
end
@@ -809,7 +809,7 @@ PetalburgCity_Gym_EventScript_154E6E:: @ 8154E6E
PetalburgCity_Gym_EventScript_154E92:: @ 8154E92
setvar 0x8005, 0
call PetalburgCity_Gym_EventScript_15503F
- special 142
+ special DrawWholeMapView
release
end
@@ -827,7 +827,7 @@ PetalburgCity_Gym_EventScript_154EAA:: @ 8154EAA
PetalburgCity_Gym_EventScript_154ECE:: @ 8154ECE
setvar 0x8005, 0
call PetalburgCity_Gym_EventScript_155081
- special 142
+ special DrawWholeMapView
release
end
@@ -845,7 +845,7 @@ PetalburgCity_Gym_EventScript_154EE6:: @ 8154EE6
PetalburgCity_Gym_EventScript_154F0A:: @ 8154F0A
setvar 0x8005, 0
call PetalburgCity_Gym_EventScript_154FDC
- special 142
+ special DrawWholeMapView
release
end
@@ -863,7 +863,7 @@ PetalburgCity_Gym_EventScript_154F22:: @ 8154F22
PetalburgCity_Gym_EventScript_154F46:: @ 8154F46
setvar 0x8005, 0
call PetalburgCity_Gym_EventScript_15501E
- special 142
+ special DrawWholeMapView
release
end
@@ -881,7 +881,7 @@ PetalburgCity_Gym_EventScript_154F5E:: @ 8154F5E
PetalburgCity_Gym_EventScript_154F82:: @ 8154F82
setvar 0x8005, 0
call PetalburgCity_Gym_EventScript_155060
- special 142
+ special DrawWholeMapView
release
end
@@ -1010,12 +1010,12 @@ PetalburgCity_Gym_EventScript_15516F:: @ 815516F
return
PetalburgCity_Gym_EventScript_155182:: @ 8155182
- special 145
+ special PetalburgGymSpecial1
waitstate
return
PetalburgCity_Gym_EventScript_155187:: @ 8155187
- special 146
+ special PetalburgGymSpecial2
return
PetalburgCity_Gym_EventScript_15518B:: @ 815518B
diff --git a/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc b/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc
index 09d414dcb..5ef99eee1 100644
--- a/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc
@@ -27,7 +27,7 @@ PetalburgCity_PokemonCenter_1F_EventScript_155233:: @ 8155233
lock
faceplayer
msgbox PetalburgCity_PokemonCenter_1F_Text_17BDC5, 4
- specialval RESULT, 302
+ specialval RESULT, IsStarterInParty
compare RESULT, 1
jumpeq PetalburgCity_PokemonCenter_1F_EventScript_15524F
release
diff --git a/data/scripts/maps/PetalburgWoods.inc b/data/scripts/maps/PetalburgWoods.inc
index 8d6946bcd..c24f7c195 100644
--- a/data/scripts/maps/PetalburgWoods.inc
+++ b/data/scripts/maps/PetalburgWoods.inc
@@ -271,7 +271,7 @@ PetalburgWoods_EventScript_15CF27:: @ 815CF27
PetalburgWoods_EventScript_15CF3E:: @ 815CF3E
trainerbattle 0, OPPONENT_JAMES_1, 0, PetalburgWoods_Text_19526A, PetalburgWoods_Text_1952AE
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq PetalburgWoods_EventScript_15CF65
msgbox PetalburgWoods_Text_1952CC, 6
diff --git a/data/scripts/maps/Route101.inc b/data/scripts/maps/Route101.inc
index 944473e96..8462603a6 100644
--- a/data/scripts/maps/Route101.inc
+++ b/data/scripts/maps/Route101.inc
@@ -224,12 +224,12 @@ Route101_EventScript_14EA7F:: @ 814EA7F
movesprite 255, 6, 13
move 255, Route101_Movement_1A083F
waitmove 0
- special 156
+ special ChooseStarter
waitstate
move 2, Route101_Movement_14EAD7
waitmove 0
msgbox Route101_Text_16D191, 4
- special 0
+ special HealPlayerParty
setflag 720
clearflag 721
setflag 700
diff --git a/data/scripts/maps/Route102.inc b/data/scripts/maps/Route102.inc
index 70d25eace..b0a714763 100644
--- a/data/scripts/maps/Route102.inc
+++ b/data/scripts/maps/Route102.inc
@@ -19,7 +19,7 @@ Route102_EventScript_14EAF5:: @ 814EAF5
Route102_EventScript_14EAFE:: @ 814EAFE
trainerbattle 0, OPPONENT_CALVIN_1, 0, Route102_Text_1B79C3, Route102_Text_1B7A2C
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route102_EventScript_14EB25
msgbox Route102_Text_1B7A60, 6
diff --git a/data/scripts/maps/Route103.inc b/data/scripts/maps/Route103.inc
index f47f5a824..4c7da3d0d 100644
--- a/data/scripts/maps/Route103.inc
+++ b/data/scripts/maps/Route103.inc
@@ -173,7 +173,7 @@ Route103_EventScript_14ED94:: @ 814ED94
Route103_EventScript_14EDAB:: @ 814EDAB
trainerbattle 4, OPPONENT_AMY_AND_LIV_1, 0, Route103_Text_1B7DF7, Route103_Text_1B7E3B, Route103_Text_1B7EAC
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route103_EventScript_14EDD6
msgbox Route103_Text_1B7E50, 6
@@ -186,7 +186,7 @@ Route103_EventScript_14EDD6:: @ 814EDD6
Route103_EventScript_14EDF1:: @ 814EDF1
trainerbattle 4, OPPONENT_AMY_AND_LIV_1, 0, Route103_Text_1B7EFB, Route103_Text_1B7F20, Route103_Text_1B7F8E
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route103_EventScript_14EE1C
msgbox Route103_Text_1B7F40, 6
@@ -204,7 +204,7 @@ Route103_EventScript_14EE37:: @ 814EE37
Route103_EventScript_14EE4E:: @ 814EE4E
trainerbattle 0, OPPONENT_MIGUEL_1, 0, Route103_Text_1B82A9, Route103_Text_1B82EC
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route103_EventScript_14EE75
msgbox Route103_Text_1B830D, 6
diff --git a/data/scripts/maps/Route104.inc b/data/scripts/maps/Route104.inc
index bb98b023d..b617767bf 100644
--- a/data/scripts/maps/Route104.inc
+++ b/data/scripts/maps/Route104.inc
@@ -409,7 +409,7 @@ Route104_EventScript_14F189:: @ 814F189
Route104_EventScript_14F1A0:: @ 814F1A0
trainerbattle 0, OPPONENT_HALEY_1, 0, Route104_Text_1B8770, Route104_Text_1B87A7
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route104_EventScript_14F1C7
msgbox Route104_Text_1B87C3, 6
@@ -422,7 +422,7 @@ Route104_EventScript_14F1C7:: @ 814F1C7
Route104_EventScript_14F1DE:: @ 814F1DE
trainerbattle 0, OPPONENT_WINSTON_1, 0, Route104_Text_1B88D4, Route104_Text_1B8911
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route104_EventScript_14F205
msgbox Route104_Text_1B8925, 6
@@ -435,7 +435,7 @@ Route104_EventScript_14F205:: @ 814F205
Route104_EventScript_14F21C:: @ 814F21C
trainerbattle 0, OPPONENT_CINDY_1, 0, Route104_Text_1B8A24, Route104_Text_1B8A61
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route104_EventScript_14F243
msgbox Route104_Text_1B8A69, 6
@@ -448,14 +448,14 @@ Route104_EventScript_14F243:: @ 814F243
Route104_EventScript_14F25A:: @ 814F25A
trainerbattle 4, OPPONENT_GINA_AND_MIA_1, 0, Route104_Text_1B83E9, Route104_Text_1B8414, Route104_Text_1B845C
- special 148
+ special GetPlayerBigGuyGirlString
msgbox Route104_Text_1B842C, 4
release
end
Route104_EventScript_14F279:: @ 814F279
trainerbattle 4, OPPONENT_GINA_AND_MIA_1, 0, Route104_Text_1B84DB, Route104_Text_1B850D, Route104_Text_1B8577
- special 148
+ special GetPlayerBigGuyGirlString
msgbox Route104_Text_1B853B, 4
release
end
diff --git a/data/scripts/maps/Route104_Prototype.inc b/data/scripts/maps/Route104_Prototype.inc
index 184127187..ff1c9d258 100644
--- a/data/scripts/maps/Route104_Prototype.inc
+++ b/data/scripts/maps/Route104_Prototype.inc
@@ -60,7 +60,7 @@ Route104_Prototype_EventScript_160CFB:: @ 8160CFB
pause 60
fadescreen 1
pause 60
- special 271
+ special DoSoftReset
waitstate
release
end
diff --git a/data/scripts/maps/Route106.inc b/data/scripts/maps/Route106.inc
index 1889eb4d7..0c25594c6 100644
--- a/data/scripts/maps/Route106.inc
+++ b/data/scripts/maps/Route106.inc
@@ -17,7 +17,7 @@ Route106_EventScript_14F34F:: @ 814F34F
Route106_EventScript_14F366:: @ 814F366
trainerbattle 0, OPPONENT_ELLIOT_1, 0, Route106_Text_1B8EF0, Route106_Text_1B8F25
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route106_EventScript_14F38D
msgbox Route106_Text_1B8F55, 6
diff --git a/data/scripts/maps/Route107.inc b/data/scripts/maps/Route107.inc
index ef3407265..a14bb7298 100644
--- a/data/scripts/maps/Route107.inc
+++ b/data/scripts/maps/Route107.inc
@@ -8,7 +8,7 @@ Route107_EventScript_14F3BC:: @ 814F3BC
Route107_EventScript_14F3D3:: @ 814F3D3
trainerbattle 0, OPPONENT_TONY_1, 0, Route107_Text_1B933A, Route107_Text_1B9365
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route107_EventScript_14F3FA
msgbox Route107_Text_1B938E, 6
diff --git a/data/scripts/maps/Route109.inc b/data/scripts/maps/Route109.inc
index 343a8cab9..58c38173e 100644
--- a/data/scripts/maps/Route109.inc
+++ b/data/scripts/maps/Route109.inc
@@ -327,7 +327,7 @@ Route109_EventScript_14F70E:: @ 814F70E
Route109_EventScript_14F725:: @ 814F725
lock
faceplayer
- special 148
+ special GetPlayerBigGuyGirlString
checkflag 280
jumpeq Route109_EventScript_14F762
msgbox Route109_Text_16E433, 4
@@ -396,7 +396,7 @@ Route109_EventScript_14F7F2:: @ 814F7F2
Route109_EventScript_14F809:: @ 814F809
trainerbattle 0, OPPONENT_RICKY_1, 0, Route109_Text_1B9C23, Route109_Text_1B9C65
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route109_EventScript_14F830
msgbox Route109_Text_1B9C6E, 6
@@ -409,7 +409,7 @@ Route109_EventScript_14F830:: @ 814F830
Route109_EventScript_14F847:: @ 814F847
trainerbattle 0, OPPONENT_LOLA_1, 0, Route109_Text_1B9D54, Route109_Text_1B9D87
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route109_EventScript_14F86E
msgbox Route109_Text_1B9D8E, 6
diff --git a/data/scripts/maps/Route110.inc b/data/scripts/maps/Route110.inc
index 55c8f67df..d8c19d92c 100644
--- a/data/scripts/maps/Route110.inc
+++ b/data/scripts/maps/Route110.inc
@@ -5,7 +5,7 @@ Route110_MapScripts:: @ 814F900
.byte 0
Route110_MapScript1_14F910:: @ 814F910
- special 229
+ special UpdateCyclingRoadState
end
Route110_MapScript1_14F914:: @ 814F914
@@ -25,7 +25,7 @@ Route110_MapScript2_14F933:: @ 814F933
.2byte 0
Route110_EventScript_14F93D:: @ 814F93D
- special 226
+ special BeginCyclingRoadChallenge
setvar 0x40a9, 2
return
@@ -131,7 +131,7 @@ Route110_EventScript_14FA25:: @ 814FA25
Route110_EventScript_14FA2E:: @ 814FA2E
lockall
- specialval RESULT, 225
+ specialval RESULT, GetRecordedCyclingRoadResults
compare RESULT, 0
jumpeq Route110_EventScript_14FA49
msgbox Route110_Text_16F53A, 4
@@ -146,7 +146,7 @@ Route110_EventScript_14FA49:: @ 814FA49
Route110_EventScript_14FA53:: @ 814FA53
lock
faceplayer
- specialval RESULT, 227
+ specialval RESULT, GetPlayerAvatarBike
compare RESULT, 1
jumpeq Route110_EventScript_14FA84
compare 0x40a9, 0
@@ -177,7 +177,7 @@ Route110_EventScript_14FAA5:: @ 814FAA5
Route110_EventScript_14FABC:: @ 814FABC
trainerbattle 0, OPPONENT_EDWIN_1, 0, Route110_Text_1BA7D2, Route110_Text_1BA803
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route110_EventScript_14FAE3
msgbox Route110_Text_1BA829, 6
@@ -205,7 +205,7 @@ Route110_EventScript_14FB28:: @ 814FB28
Route110_EventScript_14FB3F:: @ 814FB3F
trainerbattle 0, OPPONENT_BENJAMIN_1, 0, Route110_Text_1BA352, Route110_Text_1BA379
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route110_EventScript_14FB66
msgbox Route110_Text_1BA3A5, 6
@@ -223,7 +223,7 @@ Route110_EventScript_14FB7D:: @ 814FB7D
Route110_EventScript_14FB94:: @ 814FB94
trainerbattle 0, OPPONENT_ABIGAIL_1, 0, Route110_Text_1BA4A0, Route110_Text_1BA50F
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route110_EventScript_14FBBB
msgbox Route110_Text_1BA52E, 6
@@ -236,7 +236,7 @@ Route110_EventScript_14FBBB:: @ 814FBBB
Route110_EventScript_14FBD2:: @ 814FBD2
trainerbattle 0, OPPONENT_ISABEL_1, 0, Route110_Text_1BA990, Route110_Text_1BA9D0
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route110_EventScript_14FBF9
msgbox Route110_Text_1BA9E9, 6
@@ -261,7 +261,7 @@ Route110_EventScript_14FC27:: @ 814FC27
end
Route110_EventScript_14FC39:: @ 814FC39
- special 228
+ special FinishCyclingRoadChallenge
msgbox Route110_Text_16EF65, 4
switch RESULT
case 10, Route110_EventScript_14FCC3
diff --git a/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc b/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc
index 0dbd5dfc4..96e492b39 100644
--- a/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc
+++ b/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc
@@ -23,7 +23,7 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634EB:: @ 81634EB
Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634F7:: @ 81634F7
@ Coord event directly in front of the gatesman heading left to right
lockall
- specialval RESULT, 227 @ player state?
+ specialval RESULT, GetPlayerAvatarBike @ player state?
compare RESULT, 2
callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D
compare RESULT, 0
diff --git a/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc b/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc
index 96fb13f2b..08d6fb5f1 100644
--- a/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc
+++ b/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc
@@ -10,7 +10,7 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_16347F:: @ 816347F
Route110_SeasideCyclingRoadSouthEntrance_EventScript_16348B:: @ 816348B
lockall
- specialval RESULT, 227
+ specialval RESULT, GetPlayerAvatarBike
compare RESULT, 0
jumpeq Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6
setflag 2091
diff --git a/data/scripts/maps/Route110_TrickHouseEnd.inc b/data/scripts/maps/Route110_TrickHouseEnd.inc
index d2b2eaefb..10e1a6865 100644
--- a/data/scripts/maps/Route110_TrickHouseEnd.inc
+++ b/data/scripts/maps/Route110_TrickHouseEnd.inc
@@ -13,7 +13,7 @@ Route110_TrickHouseEnd_MapScript1_16194B:: @ 816194B
Route110_TrickHouseEnd_MapScript1_161957:: @ 8161957
setvar 0x4001, 0
setvar 0x4002, 0
- special 261
+ special SetTrickHouseEndRoomFlag
end
Route110_TrickHouseEnd_MapScript2_161965:: @ 8161965
@@ -33,7 +33,7 @@ Route110_TrickHouseEnd_MapScript2_16197C:: @ 816197C
Route110_TrickHouseEnd_EventScript_161986:: @ 8161986
setvar 0x4001, 1
call Route110_TrickHouseEnd_EventScript_161994
- special 142
+ special DrawWholeMapView
end
Route110_TrickHouseEnd_EventScript_161994:: @ 8161994
@@ -175,7 +175,7 @@ Route110_TrickHouseEnd_EventScript_161BAF:: @ 8161BAF
callif 1, Route110_TrickHouseEnd_EventScript_161C61
msgbox Route110_TrickHouseEnd_Text_19C85C, 4
call Route110_TrickHouseEnd_EventScript_161C2E
- special 260
+ special ResetTrickHouseEndRoomFlag
release
end
diff --git a/data/scripts/maps/Route110_TrickHouseEntrance.inc b/data/scripts/maps/Route110_TrickHouseEntrance.inc
index 434794b2f..2601942be 100644
--- a/data/scripts/maps/Route110_TrickHouseEntrance.inc
+++ b/data/scripts/maps/Route110_TrickHouseEntrance.inc
@@ -502,7 +502,7 @@ Route110_TrickHouseEntrance_EventScript_1615C7:: @ 81615C7
Route110_TrickHouseEntrance_EventScript_1615DD:: @ 81615DD
setmaptile 5, 1, 537, 0
- special 142
+ special DrawWholeMapView
pause 20
move 255, Route110_TrickHouseEntrance_Movement_1A0856
waitmove 0
@@ -608,7 +608,7 @@ Route110_TrickHouseEntrance_EventScript_161740:: @ 8161740
playsfx SE_PIN
setvar 0x40AB, 2
setmaptile 13, 1, 523, 0
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -619,7 +619,7 @@ Route110_TrickHouseEntrance_EventScript_161769:: @ 8161769
playsfx SE_PIN
setvar 0x40AC, 2
setmaptile 13, 1, 523, 0
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -630,7 +630,7 @@ Route110_TrickHouseEntrance_EventScript_161792:: @ 8161792
playsfx SE_PIN
setvar 0x40AD, 2
setmaptile 13, 1, 523, 0
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -641,7 +641,7 @@ Route110_TrickHouseEntrance_EventScript_1617BB:: @ 81617BB
playsfx SE_PIN
setvar 0x40AE, 2
setmaptile 13, 1, 523, 0
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -652,7 +652,7 @@ Route110_TrickHouseEntrance_EventScript_1617E4:: @ 81617E4
playsfx SE_PIN
setvar 0x40AF, 2
setmaptile 13, 1, 523, 0
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -663,7 +663,7 @@ Route110_TrickHouseEntrance_EventScript_16180D:: @ 816180D
playsfx SE_PIN
setvar 0x40B0, 2
setmaptile 13, 1, 523, 0
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -674,7 +674,7 @@ Route110_TrickHouseEntrance_EventScript_161836:: @ 8161836
playsfx SE_PIN
setvar 0x40B1, 2
setmaptile 13, 1, 523, 0
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -685,7 +685,7 @@ Route110_TrickHouseEntrance_EventScript_16185F:: @ 816185F
playsfx SE_PIN
setvar 0x40B2, 2
setmaptile 13, 1, 523, 0
- special 142
+ special DrawWholeMapView
releaseall
end
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle2.inc b/data/scripts/maps/Route110_TrickHousePuzzle2.inc
index 183431bfc..27ffad50d 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle2.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle2.inc
@@ -38,7 +38,7 @@ Route110_TrickHousePuzzle2_EventScript_161DE0:: @ 8161DE0
setvar 0x4001, 1
playsfx 21
call Route110_TrickHousePuzzle2_EventScript_161E2C
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -47,7 +47,7 @@ Route110_TrickHousePuzzle2_EventScript_161DF3:: @ 8161DF3
setvar 0x4002, 1
playsfx 21
call Route110_TrickHousePuzzle2_EventScript_161E3F
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -56,7 +56,7 @@ Route110_TrickHousePuzzle2_EventScript_161E06:: @ 8161E06
setvar 0x4003, 1
playsfx 21
call Route110_TrickHousePuzzle2_EventScript_161E52
- special 142
+ special DrawWholeMapView
releaseall
end
@@ -65,7 +65,7 @@ Route110_TrickHousePuzzle2_EventScript_161E19:: @ 8161E19
setvar 0x4004, 1
playsfx 21
call Route110_TrickHousePuzzle2_EventScript_161E65
- special 142
+ special DrawWholeMapView
releaseall
end
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle3.inc b/data/scripts/maps/Route110_TrickHousePuzzle3.inc
index b533dbbe5..efd96ec44 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle3.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle3.inc
@@ -351,7 +351,7 @@ Route110_TrickHousePuzzle3_EventScript_1626AD:: @ 81626AD
callif 1, Route110_TrickHousePuzzle3_EventScript_161FE5
compare 0x4009, 0
callif 1, Route110_TrickHousePuzzle3_EventScript_1622C8
- special 142
+ special DrawWholeMapView
compare 0x4009, 1
jumpeq Route110_TrickHousePuzzle3_EventScript_1626DD
compare 0x4009, 0
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle6.inc b/data/scripts/maps/Route110_TrickHousePuzzle6.inc
index 56d350871..1e47bbd83 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle6.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle6.inc
@@ -4,7 +4,7 @@ Route110_TrickHousePuzzle6_MapScripts:: @ 81630CD
.byte 0
Route110_TrickHousePuzzle6_MapScript1_1630D8:: @ 81630D8
- special 201
+ special RotatingGate_InitPuzzle
end
Route110_TrickHousePuzzle6_MapScript2_1630DC:: @ 81630DC
@@ -12,7 +12,7 @@ Route110_TrickHousePuzzle6_MapScript2_1630DC:: @ 81630DC
.2byte 0
Route110_TrickHousePuzzle6_EventScript_1630E6:: @ 81630E6
- special 202
+ special RotatingGate_InitPuzzleAndGraphics
end
Route110_TrickHousePuzzle6_EventScript_1630EA:: @ 81630EA
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle7.inc b/data/scripts/maps/Route110_TrickHousePuzzle7.inc
index 1276562d0..7f965b467 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle7.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle7.inc
@@ -125,7 +125,7 @@ Route110_TrickHousePuzzle7_EventScript_1632B9:: @ 81632B9
callif 0, Route110_TrickHousePuzzle7_EventScript_163195
checkflag 194
callif 1, Route110_TrickHousePuzzle7_EventScript_1631F4
- special 142
+ special DrawWholeMapView
playsfx 36
checkflag 194
jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633A4
@@ -140,7 +140,7 @@ Route110_TrickHousePuzzle7_EventScript_1632E8:: @ 81632E8
callif 0, Route110_TrickHousePuzzle7_EventScript_1631A8
checkflag 195
callif 1, Route110_TrickHousePuzzle7_EventScript_163207
- special 142
+ special DrawWholeMapView
playsfx 36
checkflag 195
jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633AE
@@ -155,7 +155,7 @@ Route110_TrickHousePuzzle7_EventScript_163317:: @ 8163317
callif 0, Route110_TrickHousePuzzle7_EventScript_1631BB
checkflag 196
callif 1, Route110_TrickHousePuzzle7_EventScript_16321A
- special 142
+ special DrawWholeMapView
playsfx 36
checkflag 196
jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633B8
@@ -170,7 +170,7 @@ Route110_TrickHousePuzzle7_EventScript_163346:: @ 8163346
callif 0, Route110_TrickHousePuzzle7_EventScript_1631CE
checkflag 197
callif 1, Route110_TrickHousePuzzle7_EventScript_16322D
- special 142
+ special DrawWholeMapView
playsfx 36
checkflag 197
jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633C2
@@ -185,7 +185,7 @@ Route110_TrickHousePuzzle7_EventScript_163375:: @ 8163375
callif 0, Route110_TrickHousePuzzle7_EventScript_1631E1
checkflag 198
callif 1, Route110_TrickHousePuzzle7_EventScript_163240
- special 142
+ special DrawWholeMapView
playsfx 36
checkflag 198
jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633CC
diff --git a/data/scripts/maps/Route111.inc b/data/scripts/maps/Route111.inc
index 10b34cf5f..1358a44be 100644
--- a/data/scripts/maps/Route111.inc
+++ b/data/scripts/maps/Route111.inc
@@ -128,7 +128,7 @@ Route111_EventScript_1500C5:: @ 81500C5
compare RESULT, 0
jumpeq Route111_EventScript_1A029B
setflag 2252
- special 148
+ special GetPlayerBigGuyGirlString
msgbox Route111_Text_1C5781, 4
release
end
@@ -392,7 +392,7 @@ Route111_EventScript_1503EC:: @ 81503EC
Route111_EventScript_150403:: @ 8150403
trainerbattle 0, OPPONENT_DUSTY_1, 0, Route111_Text_1BAEC9, Route111_Text_1BAF14
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route111_EventScript_15042A
msgbox Route111_Text_1BAF5B, 6
@@ -420,7 +420,7 @@ Route111_EventScript_15046F:: @ 815046F
Route111_EventScript_150486:: @ 8150486
trainerbattle 0, OPPONENT_WILTON_1, 0, Route111_Text_1BB2E3, Route111_Text_1BB313
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route111_EventScript_1504AD
msgbox Route111_Text_1BB33E, 6
@@ -433,7 +433,7 @@ Route111_EventScript_1504AD:: @ 81504AD
Route111_EventScript_1504C4:: @ 81504C4
trainerbattle 0, OPPONENT_BROOKE_1, 0, Route111_Text_1BB44F, Route111_Text_1BB49F
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route111_EventScript_1504EB
msgbox Route111_Text_1BB4CE, 6
diff --git a/data/scripts/maps/Route112.inc b/data/scripts/maps/Route112.inc
index c2ad14a02..1c1e36838 100644
--- a/data/scripts/maps/Route112.inc
+++ b/data/scripts/maps/Route112.inc
@@ -38,7 +38,7 @@ Route112_EventScript_150549:: @ 8150549
Route112_EventScript_150560:: @ 8150560
trainerbattle 0, OPPONENT_TRENT_1, 0, Route112_Text_1BB6A0, Route112_Text_1BB707
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route112_EventScript_150587
msgbox Route112_Text_1BB721, 6
diff --git a/data/scripts/maps/Route112_CableCarStation.inc b/data/scripts/maps/Route112_CableCarStation.inc
index 3e5f75929..016b868a8 100644
--- a/data/scripts/maps/Route112_CableCarStation.inc
+++ b/data/scripts/maps/Route112_CableCarStation.inc
@@ -48,8 +48,8 @@ Route112_CableCarStation_EventScript_15C0AD:: @ 815C0AD
setvar 0x8004, 0
setvar 0x40a3, 1
inccounter GAME_STAT_RODE_CABLE_CAR
- special 151
- special 152
+ special CableCarWarp
+ special sub_8123218
waitstate
release
end
diff --git a/data/scripts/maps/Route113.inc b/data/scripts/maps/Route113.inc
index c07f537d1..1fc5a9345 100644
--- a/data/scripts/maps/Route113.inc
+++ b/data/scripts/maps/Route113.inc
@@ -60,7 +60,7 @@ Route113_EventScript_150652:: @ 8150652
Route113_EventScript_150669:: @ 8150669
trainerbattle 0, OPPONENT_MADELINE_1, 0, Route113_Text_1BBB27, Route113_Text_1BBB7A
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route113_EventScript_150690
msgbox Route113_Text_1BBB9A, 6
@@ -73,7 +73,7 @@ Route113_EventScript_150690:: @ 8150690
Route113_EventScript_1506A7:: @ 81506A7
trainerbattle 0, OPPONENT_LAO_1, 0, Route113_Text_1BBC59, Route113_Text_1BBC90
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route113_EventScript_1506CE
msgbox Route113_Text_1BBCAB, 6
diff --git a/data/scripts/maps/Route113_GlassWorkshop.inc b/data/scripts/maps/Route113_GlassWorkshop.inc
index d59942472..83983f9bb 100644
--- a/data/scripts/maps/Route113_GlassWorkshop.inc
+++ b/data/scripts/maps/Route113_GlassWorkshop.inc
@@ -52,7 +52,7 @@ Route113_GlassWorkshop_EventScript_1635E4:: @ 81635E4
Route113_GlassWorkshop_EventScript_1635EE:: @ 81635EE
setvar 0x8009, 0
- special 274
+ special ShowGlassWorkshopMenu
waitstate
switch RESULT
case 0, Route113_GlassWorkshop_EventScript_163660
diff --git a/data/scripts/maps/Route114.inc b/data/scripts/maps/Route114.inc
index 33e89be70..cfe1dfe7d 100644
--- a/data/scripts/maps/Route114.inc
+++ b/data/scripts/maps/Route114.inc
@@ -87,7 +87,7 @@ Route114_EventScript_150836:: @ 8150836
Route114_EventScript_15084D:: @ 815084D
trainerbattle 0, OPPONENT_STEVE_1, 0, Route114_Text_1BC2F5, Route114_Text_1BC327
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route114_EventScript_150874
msgbox Route114_Text_1BC337, 6
@@ -100,7 +100,7 @@ Route114_EventScript_150874:: @ 8150874
Route114_EventScript_15088B:: @ 815088B
trainerbattle 0, OPPONENT_BERNIE_1, 0, Route114_Text_1BC45A, Route114_Text_1BC499
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route114_EventScript_1508B2
msgbox Route114_Text_1BC4B5, 6
diff --git a/data/scripts/maps/Route115.inc b/data/scripts/maps/Route115.inc
index e2c00f6fc..2b0d744ca 100644
--- a/data/scripts/maps/Route115.inc
+++ b/data/scripts/maps/Route115.inc
@@ -15,7 +15,7 @@ Route115_EventScript_150940:: @ 8150940
Route115_EventScript_150949:: @ 8150949
trainerbattle 0, OPPONENT_TIMOTHY_1, 0, Route115_Text_1BC9AC, Route115_Text_1BC9E6
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route115_EventScript_150970
msgbox Route115_Text_1BCA0E, 6
@@ -33,7 +33,7 @@ Route115_EventScript_150987:: @ 8150987
Route115_EventScript_15099E:: @ 815099E
trainerbattle 0, OPPONENT_NOB_1, 0, Route115_Text_1BCB8A, Route115_Text_1BCBC1
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route115_EventScript_1509C5
msgbox Route115_Text_1BCBDE, 6
@@ -46,7 +46,7 @@ Route115_EventScript_1509C5:: @ 81509C5
Route115_EventScript_1509DC:: @ 81509DC
trainerbattle 0, OPPONENT_CYNDY_1, 0, Route115_Text_1BCCF4, Route115_Text_1BCD32
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route115_EventScript_150A03
msgbox Route115_Text_1BCD4C, 6
diff --git a/data/scripts/maps/Route116.inc b/data/scripts/maps/Route116.inc
index c563dce46..f5ef82f8b 100644
--- a/data/scripts/maps/Route116.inc
+++ b/data/scripts/maps/Route116.inc
@@ -150,7 +150,7 @@ Route116_EventScript_150B8F:: @ 8150B8F
checkitem ITEM_BLACK_GLASSES, 1
compare RESULT, 1
jumpeq Route116_EventScript_150BCA
- specialval RESULT, 316
+ specialval RESULT, sub_810F828
compare RESULT, 1
jumpeq Route116_EventScript_150BBB
msgbox Route116_Text_1708EE, 4
@@ -166,7 +166,7 @@ Route116_EventScript_150BBB:: @ 8150BBB
Route116_EventScript_150BCA:: @ 8150BCA
msgbox Route116_Text_1708EE, 4
msgbox Route116_Text_170921, 4
- specialval RESULT, 316
+ specialval RESULT, sub_810F828
compare RESULT, 1
jumpeq Route116_EventScript_150BF4
msgbox Route116_Text_170A03, 4
@@ -240,7 +240,7 @@ Route116_EventScript_150C79:: @ 8150C79
Route116_EventScript_150C90:: @ 8150C90
trainerbattle 0, OPPONENT_JERRY_1, 0, Route116_Text_1BD1C0, Route116_Text_1BD21A
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route116_EventScript_150CB7
msgbox Route116_Text_1BD248, 6
@@ -263,7 +263,7 @@ Route116_EventScript_150CE5:: @ 8150CE5
Route116_EventScript_150CFC:: @ 8150CFC
trainerbattle 0, OPPONENT_KAREN_1, 0, Route116_Text_1BD377, Route116_Text_1BD3AC
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route116_EventScript_150D23
msgbox Route116_Text_1BD3C3, 6
diff --git a/data/scripts/maps/Route117.inc b/data/scripts/maps/Route117.inc
index 8c738ffff..61dbf6a30 100644
--- a/data/scripts/maps/Route117.inc
+++ b/data/scripts/maps/Route117.inc
@@ -40,7 +40,7 @@ Route117_EventScript_150D84:: @ 8150D84
Route117_EventScript_150D8D:: @ 8150D8D
trainerbattle 0, OPPONENT_ISAAC_1, 0, Route117_Text_1BD49E, Route117_Text_1BD4D9
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route117_EventScript_150DB4
msgbox Route117_Text_1BD4F9, 6
@@ -53,7 +53,7 @@ Route117_EventScript_150DB4:: @ 8150DB4
Route117_EventScript_150DCB:: @ 8150DCB
trainerbattle 0, OPPONENT_LYDIA_1, 0, Route117_Text_1BD634, Route117_Text_1BD67B
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route117_EventScript_150DF2
msgbox Route117_Text_1BD69B, 6
@@ -66,7 +66,7 @@ Route117_EventScript_150DF2:: @ 8150DF2
Route117_EventScript_150E09:: @ 8150E09
trainerbattle 0, OPPONENT_DYLAN_1, 0, Route117_Text_1BD79A, Route117_Text_1BD7E0
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route117_EventScript_150E30
msgbox Route117_Text_1BD7F5, 6
@@ -79,7 +79,7 @@ Route117_EventScript_150E30:: @ 8150E30
Route117_EventScript_150E47:: @ 8150E47
trainerbattle 0, OPPONENT_MARIA_1, 0, Route117_Text_1BD914, Route117_Text_1BD965
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route117_EventScript_150E6E
msgbox Route117_Text_1BD98F, 6
@@ -97,7 +97,7 @@ Route117_EventScript_150E85:: @ 8150E85
Route117_EventScript_150E9C:: @ 8150E9C
trainerbattle 4, OPPONENT_ANNA_AND_MEG_1, 0, Route117_Text_1BDBC3, Route117_Text_1BDC07, Route117_Text_1BDC96
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route117_EventScript_150EC7
msgbox Route117_Text_1BDC44, 6
@@ -110,7 +110,7 @@ Route117_EventScript_150EC7:: @ 8150EC7
Route117_EventScript_150EE2:: @ 8150EE2
trainerbattle 4, OPPONENT_ANNA_AND_MEG_1, 0, Route117_Text_1BDCD2, Route117_Text_1BDD1E, Route117_Text_1BDD8B
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route117_EventScript_150F0D
msgbox Route117_Text_1BDD4E, 6
diff --git a/data/scripts/maps/Route118.inc b/data/scripts/maps/Route118.inc
index 4d739ce68..0b5b4748e 100644
--- a/data/scripts/maps/Route118.inc
+++ b/data/scripts/maps/Route118.inc
@@ -161,7 +161,7 @@ Route118_Movement_151086:: @ 8151086
Route118_EventScript_15108F:: @ 815108F
trainerbattle 0, OPPONENT_ROSE_1, 0, Route118_Text_1BDFF4, Route118_Text_1BE03C
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route118_EventScript_1510B6
msgbox Route118_Text_1BE05E, 6
@@ -184,7 +184,7 @@ Route118_EventScript_1510E4:: @ 81510E4
Route118_EventScript_1510FB:: @ 81510FB
trainerbattle 0, OPPONENT_DALTON_1, 0, Route118_Text_1BE3E8, Route118_Text_1BE406
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route118_EventScript_151122
msgbox Route118_Text_1BE413, 6
diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc
index 1ccc972bb..55a3fb1dc 100644
--- a/data/scripts/maps/Route119.inc
+++ b/data/scripts/maps/Route119.inc
@@ -29,7 +29,7 @@ Route119_MapScript1_15119B:: @ 815119B
call Route119_EventScript_1A0196
compare 0x40b3, 1
callif 1, Route119_EventScript_1511B9
- special 324
+ special SetRoute119Weather
end
Route119_EventScript_1511B9:: @ 81511B9
@@ -296,7 +296,7 @@ Route119_EventScript_1514A8:: @ 81514A8
Route119_EventScript_1514BF:: @ 81514BF
trainerbattle 0, OPPONENT_JACKSON_1, 0, Route119_Text_1BE8BB, Route119_Text_1BE90E
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route119_EventScript_1514E6
msgbox Route119_Text_1BE937, 6
@@ -309,7 +309,7 @@ Route119_EventScript_1514E6:: @ 81514E6
Route119_EventScript_1514FD:: @ 81514FD
trainerbattle 0, OPPONENT_CATHERINE_1, 0, Route119_Text_1BEA3A, Route119_Text_1BEA88
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route119_EventScript_151524
msgbox Route119_Text_1BEAB3, 6
diff --git a/data/scripts/maps/Route119_WeatherInstitute_1F.inc b/data/scripts/maps/Route119_WeatherInstitute_1F.inc
index 36314a59f..95ec39d61 100644
--- a/data/scripts/maps/Route119_WeatherInstitute_1F.inc
+++ b/data/scripts/maps/Route119_WeatherInstitute_1F.inc
@@ -16,7 +16,7 @@ Route119_WeatherInstitute_1F_EventScript_163C41:: @ 8163C41
Route119_WeatherInstitute_1F_EventScript_163C4D:: @ 8163C4D
lock
faceplayer
- special 148
+ special GetPlayerBigGuyGirlString
compare 0x40b3, 0
jumpeq Route119_WeatherInstitute_1F_EventScript_163C67
msgbox Route119_WeatherInstitute_1F_Text_19ED22, 4
diff --git a/data/scripts/maps/Route120.inc b/data/scripts/maps/Route120.inc
index ada773ffd..75385fe8f 100644
--- a/data/scripts/maps/Route120.inc
+++ b/data/scripts/maps/Route120.inc
@@ -120,7 +120,7 @@ Route120_EventScript_151739:: @ 8151739
callif 1, Route120_EventScript_151841
compare RESULT, 0
callif 1, Route120_EventScript_15184A
- specialval RESULT, 147
+ specialval RESULT, GetPlayerTrainerIdOnesDigit
switch RESULT
case 0, Route120_EventScript_1517DC
case 5, Route120_EventScript_1517DC
@@ -254,7 +254,7 @@ Route120_EventScript_151908:: @ 8151908
setmaptile 12, 16, 671, 0
setmaptile 12, 17, 161, 0
setmaptile 13, 17, 161, 0
- special 142
+ special DrawWholeMapView
release
end
@@ -292,7 +292,7 @@ Route120_EventScript_1519B3:: @ 81519B3
Route120_EventScript_1519CA:: @ 81519CA
trainerbattle 0, OPPONENT_ROBERT_1, 0, Route120_Text_1BF07E, Route120_Text_1BF0A5
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route120_EventScript_1519F1
msgbox Route120_Text_1BF0C3, 6
@@ -315,7 +315,7 @@ Route120_EventScript_151A1F:: @ 8151A1F
Route120_EventScript_151A36:: @ 8151A36
trainerbattle 0, OPPONENT_BRANDON_1, 0, Route120_Text_1BF32B, Route120_Text_1BF36B
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route120_EventScript_151A5D
msgbox Route120_Text_1BF38D, 6
diff --git a/data/scripts/maps/Route121.inc b/data/scripts/maps/Route121.inc
index 54912b0bc..e1aaec716 100644
--- a/data/scripts/maps/Route121.inc
+++ b/data/scripts/maps/Route121.inc
@@ -73,7 +73,7 @@ Route121_EventScript_151B72:: @ 8151B72
Route121_EventScript_151B89:: @ 8151B89
trainerbattle 0, OPPONENT_WALTER_1, 0, Route121_Text_1BFA1B, Route121_Text_1BFA8C
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route121_EventScript_151BB0
msgbox Route121_Text_1BFA9D, 6
@@ -101,7 +101,7 @@ Route121_EventScript_151BF9:: @ 8151BF9
Route121_EventScript_151C14:: @ 8151C14
trainerbattle 0, OPPONENT_JESSICA_1, 0, Route121_Text_1BFE51, Route121_Text_1BFE80
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route121_EventScript_151C3B
msgbox Route121_Text_1BFEAE, 6
diff --git a/data/scripts/maps/Route121_SafariZoneEntrance.inc b/data/scripts/maps/Route121_SafariZoneEntrance.inc
index 2056bc328..251b09c73 100644
--- a/data/scripts/maps/Route121_SafariZoneEntrance.inc
+++ b/data/scripts/maps/Route121_SafariZoneEntrance.inc
@@ -10,7 +10,7 @@ Route121_SafariZoneEntrance_EventScript_15C333:: @ 815C333
lockall
move 255, Route121_SafariZoneEntrance_Movement_15C348
waitmove 0
- special 206
+ special ExitSafariMode
setvar 0x40a4, 0
releaseall
end
@@ -80,7 +80,7 @@ Route121_SafariZoneEntrance_EventScript_15C3B3:: @ 815C3B3
hidemoney 0, 0
move 255, Route121_SafariZoneEntrance_Movement_15C47E
waitmove 0
- special 205
+ special EnterSafariMode
setvar 0x40a4, 2
warp SafariZone_Southeast, 255, 32, 33
waitstate
@@ -90,7 +90,7 @@ Route121_SafariZoneEntrance_EventScript_15C425:: @ 815C425
countpokemon
compare RESULT, 6
jumpif 5, Route121_SafariZoneEntrance_EventScript_15C44F
- specialval RESULT, 304
+ specialval RESULT, CheckFreePokemonStorageSpace
compare RESULT, 1
jumpeq Route121_SafariZoneEntrance_EventScript_15C44F
msgbox Route121_SafariZoneEntrance_Text_1C39A3, 4
diff --git a/data/scripts/maps/Route123.inc b/data/scripts/maps/Route123.inc
index e9248c230..891a395f0 100644
--- a/data/scripts/maps/Route123.inc
+++ b/data/scripts/maps/Route123.inc
@@ -3,7 +3,7 @@ Route123_MapScripts:: @ 8151C53
.byte 0
Route123_MapScript1_151C59:: @ 8151C59
- special 325
+ special SetRoute123Weather
end
Route123_EventScript_151C5D:: @ 8151C5D
@@ -12,7 +12,7 @@ Route123_EventScript_151C5D:: @ 8151C5D
checkflag 232
jumpeq Route123_EventScript_151CAC
msgbox Route123_Text_171D83, 4
- special 299
+ special IsGrassTypeInParty
compare RESULT, 0
jumpeq Route123_EventScript_151CAA
msgbox Route123_Text_171DC2, 4
@@ -62,7 +62,7 @@ Route123_EventScript_151CFF:: @ 8151CFF
Route123_EventScript_151D16:: @ 8151D16
trainerbattle 0, OPPONENT_CAMERON_1, 0, Route123_Text_1C013F, Route123_Text_1C01A3
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route123_EventScript_151D3D
msgbox Route123_Text_1C01B1, 6
@@ -75,7 +75,7 @@ Route123_EventScript_151D3D:: @ 8151D3D
Route123_EventScript_151D54:: @ 8151D54
trainerbattle 0, OPPONENT_JACKI_1, 0, Route123_Text_1C028C, Route123_Text_1C0303
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route123_EventScript_151D7B
msgbox Route123_Text_1C030F, 6
diff --git a/data/scripts/maps/Route124.inc b/data/scripts/maps/Route124.inc
index ea288daa0..68f17b12a 100644
--- a/data/scripts/maps/Route124.inc
+++ b/data/scripts/maps/Route124.inc
@@ -23,7 +23,7 @@ Route124_EventScript_151E0F:: @ 8151E0F
Route124_EventScript_151E26:: @ 8151E26
trainerbattle 0, OPPONENT_JENNY_1, 0, Route124_Text_1C07B4, Route124_Text_1C07F9
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route124_EventScript_151E4D
msgbox Route124_Text_1C080E, 6
@@ -46,7 +46,7 @@ Route124_EventScript_151E7B:: @ 8151E7B
Route124_EventScript_151E92:: @ 8151E92
trainerbattle 4, OPPONENT_RITA_AND_SAM_1, 0, Route124_Text_1C0ABD, Route124_Text_1C0B36, Route124_Text_1C0BC8
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route124_EventScript_151EBD
msgbox Route124_Text_1C0B72, 6
@@ -59,7 +59,7 @@ Route124_EventScript_151EBD:: @ 8151EBD
Route124_EventScript_151ED8:: @ 8151ED8
trainerbattle 4, OPPONENT_RITA_AND_SAM_1, 0, Route124_Text_1C0C0E, Route124_Text_1C0C4F, Route124_Text_1C0CE0
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route124_EventScript_151F03
msgbox Route124_Text_1C0C7F, 6
diff --git a/data/scripts/maps/Route125.inc b/data/scripts/maps/Route125.inc
index 0059fe6aa..a5d2457d5 100644
--- a/data/scripts/maps/Route125.inc
+++ b/data/scripts/maps/Route125.inc
@@ -29,7 +29,7 @@ Route125_EventScript_151F73:: @ 8151F73
Route125_EventScript_151F8A:: @ 8151F8A
trainerbattle 0, OPPONENT_ERNEST_1, 0, Route125_Text_1C11AF, Route125_Text_1C11ED
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route125_EventScript_151FB1
msgbox Route125_Text_1C1208, 6
diff --git a/data/scripts/maps/Route128.inc b/data/scripts/maps/Route128.inc
index 28317c4e3..011591400 100644
--- a/data/scripts/maps/Route128.inc
+++ b/data/scripts/maps/Route128.inc
@@ -17,7 +17,7 @@ Route128_EventScript_15213F:: @ 815213F
lockall
pause 20
.ifndef SAPPHIRE
- special 317
+ special sub_807E25C
waitstate
.endif
move 4, Route128_Movement_152271
@@ -182,7 +182,7 @@ Route128_Movement_1522A1:: @ 81522A1
Route128_EventScript_1522A4:: @ 81522A4
trainerbattle 0, OPPONENT_ISAIAH_1, 0, Route128_Text_1C1C67, Route128_Text_1C1C95
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route128_EventScript_1522CB
msgbox Route128_Text_1C1CC3, 6
@@ -195,7 +195,7 @@ Route128_EventScript_1522CB:: @ 81522CB
Route128_EventScript_1522E2:: @ 81522E2
trainerbattle 0, OPPONENT_KATELYN_1, 0, Route128_Text_1C1DB0, Route128_Text_1C1E25
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq Route128_EventScript_152309
msgbox Route128_Text_1C1E4A, 6
diff --git a/data/scripts/maps/Route130.inc b/data/scripts/maps/Route130.inc
index 38818dba3..bac6728a7 100644
--- a/data/scripts/maps/Route130.inc
+++ b/data/scripts/maps/Route130.inc
@@ -3,7 +3,7 @@ Route130_MapScripts:: @ 81523C2
.byte 0
Route130_MapScript1_1523C8:: @ 81523C8
- specialval RESULT, 209
+ specialval RESULT, IsMirageIslandPresent
compare RESULT, 1
jumpeq Route130_EventScript_15240C
setflag 17
diff --git a/data/scripts/maps/RustboroCity_House1.inc b/data/scripts/maps/RustboroCity_House1.inc
index a10d7b69e..402fff1d3 100644
--- a/data/scripts/maps/RustboroCity_House1.inc
+++ b/data/scripts/maps/RustboroCity_House1.inc
@@ -8,25 +8,25 @@ RustboroCity_House1_EventScript_157C7D:: @ 8157C7D
jumpeq RustboroCity_House1_EventScript_157D13
setvar 0x8008, 0
copyvar 0x8004, 0x8008
- specialval RESULT, 252
+ specialval RESULT, sub_804D89C
copyvar 0x8009, RESULT
msgbox RustboroCity_House1_Text_184EBA, 5
compare RESULT, 0
jumpeq RustboroCity_House1_EventScript_157CFB
- special 159
+ special sub_80F9A0C
waitstate
copyvar 0x800a, 0x8004
compare 0x8004, 255
jumpeq RustboroCity_House1_EventScript_157CFB
copyvar 0x8005, 0x800a
- specialval RESULT, 255
+ specialval RESULT, sub_804DB2C
copyvar 0x800b, RESULT
comparevars RESULT, 0x8009
jumpif 5, RustboroCity_House1_EventScript_157D05
copyvar 0x8004, 0x8008
copyvar 0x8005, 0x800a
- special 253
- special 254
+ special sub_804DB68
+ special sub_804E174
waitstate
msgbox RustboroCity_House1_Text_184F6B, 4
setflag 153
diff --git a/data/scripts/maps/SSTidalCorridor.inc b/data/scripts/maps/SSTidalCorridor.inc
index ff4857852..58cfbec47 100644
--- a/data/scripts/maps/SSTidalCorridor.inc
+++ b/data/scripts/maps/SSTidalCorridor.inc
@@ -10,7 +10,7 @@ SSTidalCorridor_MapScript2_15FC9A:: @ 815FC9A
.2byte 0
SSTidalCorridor_EventScript_15FCBC:: @ 815FCBC
- special 203
+ special SetSSTidalFlag
setvar 0x40b4, 2
lockall
playsfx 73
@@ -27,14 +27,14 @@ SSTidalCorridor_EventScript_15FCD2:: @ 815FCD2
end
SSTidalRooms_EventScript_15FCE5:: @ 815FCE5
- special 203
+ special SetSSTidalFlag
setvar 0x40b4, 7
playsfx 73
msgbox SSTidalRooms_Text_199007, 4
return
SSTidalRooms_EventScript_15FCF9:: @ 815FCF9
- special 204
+ special ResetSSTidalFlag
setvar 0x40b4, 4
playsfx 73
msgbox SSTidalRooms_Text_1990F8, 4
@@ -48,7 +48,7 @@ gUnknown_0815FD0D:: @ 815FD0D
end
SSTidalCorridor_EventScript_15FD24:: @ 815FD24
- special 204
+ special ResetSSTidalFlag
setvar 0x40b4, 3
lockall
playsfx 73
@@ -57,7 +57,7 @@ SSTidalCorridor_EventScript_15FD24:: @ 815FD24
end
SSTidalCorridor_EventScript_15FD3A:: @ 815FD3A
- special 204
+ special ResetSSTidalFlag
setvar 0x40b4, 8
lockall
playsfx 73
@@ -66,7 +66,7 @@ SSTidalCorridor_EventScript_15FD3A:: @ 815FD3A
end
SSTidalRooms_EventScript_15FD50:: @ 815FD50
- special 204
+ special ResetSSTidalFlag
setvar 0x40b4, 8
playsfx 73
msgbox SSTidalRooms_Text_1990B4, 4
@@ -156,7 +156,7 @@ SSTidalCorridor_EventScript_15FE3A:: @ 815FE3A
end
SSTidalCorridor_EventScript_15FE5B:: @ 815FE5B
- special 270
+ special sub_80C7958
waitstate
end
diff --git a/data/scripts/maps/SafariZone_Southeast.inc b/data/scripts/maps/SafariZone_Southeast.inc
index 196efbb35..22fd5ec56 100644
--- a/data/scripts/maps/SafariZone_Southeast.inc
+++ b/data/scripts/maps/SafariZone_Southeast.inc
@@ -93,7 +93,7 @@ SafariZone_Southeast_EventScript_16011F:: @ 816011F
SafariZone_Southeast_EventScript_160139:: @ 8160139
setvar 0x40a4, 1
- special 206
+ special ExitSafariMode
warpwalk Route121_SafariZoneEntrance, 255, 2, 5
waitstate
end
diff --git a/data/scripts/maps/SeafloorCavern_Room9.inc b/data/scripts/maps/SeafloorCavern_Room9.inc
index ff8592f7d..71184346f 100644
--- a/data/scripts/maps/SeafloorCavern_Room9.inc
+++ b/data/scripts/maps/SeafloorCavern_Room9.inc
@@ -64,14 +64,14 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA
.endif
setweather 0
doweather
- special 332
+ special sub_8081924
waitstate
.ifdef SAPPHIRE
msgbox UnknownString_81B43C4, 4
.else
msgbox SeafloorCavern_Room9_Text_1B4A5A, 4
.endif
- special 284
+ special WaitWeather
waitstate
.ifdef SAPPHIRE
setvar RESULT, 1
@@ -91,7 +91,7 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA
.endif
fanfare 388
playsfx 107
- special 281
+ special sub_80818A4
move 0x8004, SeafloorCavern_Room9_Movement_1A0841
move 255, SeafloorCavern_Room9_Movement_1A0841
waitmove 0
@@ -102,11 +102,11 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA
pause 60
move 1, SeafloorCavern_Room9_Movement_15DD4C
waitmove 0
- special 282
+ special sub_80818FC
waitstate
setvar 0x8004, 1
setvar 0x8005, 1
- special 310
+ special sub_810F758
waitstate
move 1, SeafloorCavern_Room9_Movement_15DD57
waitmove 0
@@ -114,7 +114,7 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA
pause 4
setvar 0x8004, 2
setvar 0x8005, 2
- special 310
+ special sub_810F758
waitstate
pause 30
setvar 0x8004, 2
diff --git a/data/scripts/maps/SealedChamber_InnerRoom.inc b/data/scripts/maps/SealedChamber_InnerRoom.inc
index 16d4c7003..76a930dc0 100644
--- a/data/scripts/maps/SealedChamber_InnerRoom.inc
+++ b/data/scripts/maps/SealedChamber_InnerRoom.inc
@@ -8,23 +8,23 @@ SealedChamber_InnerRoom_EventScript_15F1E8:: @ 815F1E8
hidebox 0, 0, 29, 19
checkflag 228
jumpeq SealedChamber_InnerRoom_EventScript_15F247
- specialval RESULT, 279
+ specialval RESULT, CheckRelicanthWailord
compare RESULT, 0
jumpeq SealedChamber_InnerRoom_EventScript_15F247
fadeout 0
playsfx 49
- special 305
+ special DoSealedChamberShakingEffect1
waitstate
pause 40
- special 315
+ special DoSealedChamberShakingEffect2
waitstate
playsfx 8
pause 40
- special 315
+ special DoSealedChamberShakingEffect2
waitstate
playsfx 8
pause 40
- special 315
+ special DoSealedChamberShakingEffect2
waitstate
playsfx 8
pause 40
diff --git a/data/scripts/maps/SecretBase_YellowCave4.inc b/data/scripts/maps/SecretBase_YellowCave4.inc
index 4ccbc2f0e..302bc3930 100644
--- a/data/scripts/maps/SecretBase_YellowCave4.inc
+++ b/data/scripts/maps/SecretBase_YellowCave4.inc
@@ -11,7 +11,7 @@ SecretBase_RedCave1_MapScript1_15F34C:: @ 815F34C
SecretBase_RedCave1_MapScript1_15F34F:: @ 815F34F
call SecretBase_RedCave1_EventScript_1A2F3D
- special 22
+ special sub_80BBFA4
end
SecretBase_RedCave1_MapScript2_15F358:: @ 815F358
diff --git a/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc b/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc
index 9b822a473..38a1c9a74 100644
--- a/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc
+++ b/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc
@@ -3,7 +3,7 @@ ShoalCave_LowTideEntranceRoom_MapScripts:: @ 815E057
.byte 0
ShoalCave_LowTideEntranceRoom_MapScript1_15E05D:: @ 815E05D
- special 210
+ special UpdateShoalTideFlag
checkflag 2106
jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E06E
jump ShoalCave_LowTideEntranceRoom_EventScript_15E072
diff --git a/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc b/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc
index eab522a1f..3078b4625 100644
--- a/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc
+++ b/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc
@@ -76,7 +76,7 @@ ShoalCave_LowTideInnerRoom_EventScript_15E257:: @ 815E257
compare RESULT, 0
jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 41, 20, 859, 0
- special 142
+ special DrawWholeMapView
setflag 956
releaseall
end
@@ -94,7 +94,7 @@ ShoalCave_LowTideInnerRoom_EventScript_15E293:: @ 815E293
compare RESULT, 0
jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 41, 10, 859, 0
- special 142
+ special DrawWholeMapView
setflag 957
releaseall
end
@@ -107,7 +107,7 @@ ShoalCave_LowTideInnerRoom_EventScript_15E2C5:: @ 815E2C5
compare RESULT, 0
jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 6, 9, 859, 0
- special 142
+ special DrawWholeMapView
setflag 958
releaseall
end
@@ -120,7 +120,7 @@ ShoalCave_LowTideInnerRoom_EventScript_15E2F7:: @ 815E2F7
compare RESULT, 0
jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 16, 13, 859, 0
- special 142
+ special DrawWholeMapView
setflag 959
releaseall
end
@@ -133,7 +133,7 @@ ShoalCave_LowTideInnerRoom_EventScript_15E329:: @ 815E329
compare RESULT, 0
jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 31, 8, 858, 0
- special 142
+ special DrawWholeMapView
setflag 952
releaseall
end
@@ -151,7 +151,7 @@ ShoalCave_LowTideInnerRoom_EventScript_15E365:: @ 815E365
compare RESULT, 0
jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 14, 26, 858, 0
- special 142
+ special DrawWholeMapView
setflag 953
releaseall
end
diff --git a/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc b/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc
index dfcd5b83f..67de2676f 100644
--- a/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc
+++ b/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc
@@ -23,7 +23,7 @@ ShoalCave_LowTideLowerRoom_EventScript_15E413:: @ 815E413
compare RESULT, 0
jumpeq ShoalCave_LowTideLowerRoom_EventScript_1A029B
setmaptile 18, 2, 858, 0
- special 142
+ special DrawWholeMapView
setflag 955
releaseall
end
diff --git a/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc b/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc
index 584a57818..c46a2cb2d 100644
--- a/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc
+++ b/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc
@@ -23,7 +23,7 @@ ShoalCave_LowTideStairsRoom_EventScript_15E3B7:: @ 815E3B7
compare RESULT, 0
jumpeq ShoalCave_LowTideStairsRoom_EventScript_1A029B
setmaptile 11, 11, 858, 0
- special 142
+ special DrawWholeMapView
setflag 954
releaseall
end
diff --git a/data/scripts/maps/SkyPillar_Top.inc b/data/scripts/maps/SkyPillar_Top.inc
index b28d89d93..23db6a8ea 100644
--- a/data/scripts/maps/SkyPillar_Top.inc
+++ b/data/scripts/maps/SkyPillar_Top.inc
@@ -21,7 +21,7 @@ SkyPillar_Top_EventScript_15F316:: @ 815F316
waitpokecry
setflag 773
setflag 2145
- special 312
+ special StartBattle_Rayquaza
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/SlateportCity.inc b/data/scripts/maps/SlateportCity.inc
index 6125c4871..48eb5c1df 100644
--- a/data/scripts/maps/SlateportCity.inc
+++ b/data/scripts/maps/SlateportCity.inc
@@ -66,10 +66,10 @@ SlateportCity_EventScript_14BAE0:: @ 814BAE0
faceplayer
bufferfirstpoke 0
msgbox SlateportCity_Text_164682, 4
- specialval RESULT, 292
+ specialval RESULT, LeadMonHasEffortRibbon
compare RESULT, 1
callif 1, SlateportCity_EventScript_14BB35
- specialval RESULT, 294
+ specialval RESULT, GetLeadMonEVCount
compare RESULT, 0
callif 1, SlateportCity_EventScript_14BB2B
msgbox SlateportCity_Text_164691, 4
@@ -78,7 +78,7 @@ SlateportCity_EventScript_14BAE0:: @ 814BAE0
waitfanfare
waittext
msgbox SlateportCity_Text_1646FC, 4
- special 293
+ special GivLeadMonEffortRibbon
release
end
diff --git a/data/scripts/maps/SlateportCity_ContestLobby.inc b/data/scripts/maps/SlateportCity_ContestLobby.inc
index b2cce5312..b1ce50815 100644
--- a/data/scripts/maps/SlateportCity_ContestLobby.inc
+++ b/data/scripts/maps/SlateportCity_ContestLobby.inc
@@ -11,7 +11,7 @@ SlateportCity_ContestLobby_EventScript_15541D:: @ 815541D
setvar CONTEST_RANK, 2
call SlateportCity_ContestLobby_EventScript_1A4E92
call SlateportCity_ContestLobby_EventScript_155448
- special 83
+ special sub_80C4BF0
call SlateportCity_ContestLobby_EventScript_15FBDB
setvar 0x4088, 3
warp LinkContestRoom1, 255, 7, 5
@@ -25,13 +25,13 @@ SlateportCity_ContestLobby_EventScript_155448:: @ 8155448
playsfx 71
setmaptile 4, 2, 545, 1
setmaptile 4, 3, 609, 1
- special 142
+ special DrawWholeMapView
move 1, SlateportCity_ContestLobby_Movement_1554CF
waitmove 0
playsfx 71
setmaptile 4, 2, 721, 1
setmaptile 4, 3, 729, 1
- special 142
+ special DrawWholeMapView
pause 20
move 1, SlateportCity_ContestLobby_Movement_1554DC
waitmove 0
@@ -128,7 +128,7 @@ SlateportCity_ContestLobby_EventScript_155536:: @ 8155536
@ 815553F
lockall
- special 259
+ special ShowBerryBlenderRecordWindow
waitbutton
hidebox 0, 0, 29, 19
releaseall
diff --git a/data/scripts/maps/SlateportCity_House1.inc b/data/scripts/maps/SlateportCity_House1.inc
index 702e52d84..4161889e1 100644
--- a/data/scripts/maps/SlateportCity_House1.inc
+++ b/data/scripts/maps/SlateportCity_House1.inc
@@ -13,7 +13,7 @@ SlateportCity_House1_EventScript_15567B:: @ 815567B
SlateportCity_House1_EventScript_15569C:: @ 815569C
msgbox SlateportCity_House1_Text_17D4DB, 4
- special 159
+ special sub_80F9A0C
waitstate
compare 0x8004, 255
jumpif 5, SlateportCity_House1_EventScript_1556C9
@@ -27,15 +27,15 @@ SlateportCity_House1_EventScript_1556BF:: @ 81556BF
end
SlateportCity_House1_EventScript_1556C9:: @ 81556C9
- specialval RESULT, 327
+ specialval RESULT, ScriptGetPartyMonSpecies
compare RESULT, SPECIES_EGG
jumpeq SlateportCity_House1_EventScript_15571C
- special 124
- special 125
+ special sub_80BFAE0
+ special sub_80BFB10
compare RESULT, 1
jumpeq SlateportCity_House1_EventScript_155726
- specialval RESULT, 336
- special 124
+ specialval RESULT, sub_810F96C
+ special sub_80BFAE0
compare RESULT, 1
jumpeq SlateportCity_House1_EventScript_155726
msgbox SlateportCity_House1_Text_17D505, 5
@@ -58,8 +58,8 @@ SlateportCity_House1_EventScript_155726:: @ 8155726
SlateportCity_House1_EventScript_155730:: @ 8155730
msgbox SlateportCity_House1_Text_17D580, 4
call SlateportCity_House1_EventScript_1A0678
- specialval RESULT, 123
- special 124
+ specialval RESULT, sub_80BF9B4
+ special sub_80BFAE0
compare RESULT, 1
jumpeq SlateportCity_House1_EventScript_15575A
msgbox SlateportCity_House1_Text_17D63A, 4
diff --git a/data/scripts/maps/SlateportCity_PokemonFanClub.inc b/data/scripts/maps/SlateportCity_PokemonFanClub.inc
index 8f0323f77..0a7466a3b 100644
--- a/data/scripts/maps/SlateportCity_PokemonFanClub.inc
+++ b/data/scripts/maps/SlateportCity_PokemonFanClub.inc
@@ -144,7 +144,7 @@ SlateportCity_PokemonFanClub_EventScript_155998:: @ 8155998
end
SlateportCity_PokemonFanClub_EventScript_1559A2:: @ 81559A2
- specialval RESULT, 265
+ specialval RESULT, CheckLeadMonCool
compare RESULT, 1
callif 1, SlateportCity_PokemonFanClub_EventScript_1559B3
return
@@ -154,7 +154,7 @@ SlateportCity_PokemonFanClub_EventScript_1559B3:: @ 81559B3
return
SlateportCity_PokemonFanClub_EventScript_1559B9:: @ 81559B9
- specialval RESULT, 266
+ specialval RESULT, CheckLeadMonBeauty
compare RESULT, 1
callif 1, SlateportCity_PokemonFanClub_EventScript_1559CA
return
@@ -164,7 +164,7 @@ SlateportCity_PokemonFanClub_EventScript_1559CA:: @ 81559CA
return
SlateportCity_PokemonFanClub_EventScript_1559D0:: @ 81559D0
- specialval RESULT, 267
+ specialval RESULT, CheckLeadMonCute
compare RESULT, 1
callif 1, SlateportCity_PokemonFanClub_EventScript_1559E1
return
@@ -174,7 +174,7 @@ SlateportCity_PokemonFanClub_EventScript_1559E1:: @ 81559E1
return
SlateportCity_PokemonFanClub_EventScript_1559E7:: @ 81559E7
- specialval RESULT, 268
+ specialval RESULT, CheckLeadMonSmart
compare RESULT, 1
callif 1, SlateportCity_PokemonFanClub_EventScript_1559F8
return
@@ -184,7 +184,7 @@ SlateportCity_PokemonFanClub_EventScript_1559F8:: @ 81559F8
return
SlateportCity_PokemonFanClub_EventScript_1559FE:: @ 81559FE
- specialval RESULT, 269
+ specialval RESULT, CheckLeadMonTough
compare RESULT, 1
callif 1, SlateportCity_PokemonFanClub_EventScript_155A0F
return
@@ -199,7 +199,7 @@ SlateportCity_PokemonFanClub_EventScript_155A15:: @ 8155A15
checkflag 278
jumpeq SlateportCity_PokemonFanClub_EventScript_155A75
msgbox SlateportCity_PokemonFanClub_Text_17DE6B, 4
- specialval RESULT, 230
+ specialval RESULT, GetLeadMonFriendshipScore
compare RESULT, 4
jumpif 4, SlateportCity_PokemonFanClub_EventScript_155A3A
release
diff --git a/data/scripts/maps/SootopolisCity.inc b/data/scripts/maps/SootopolisCity.inc
index 3d9c2dc93..0c22fbc37 100644
--- a/data/scripts/maps/SootopolisCity.inc
+++ b/data/scripts/maps/SootopolisCity.inc
@@ -91,7 +91,7 @@ SootopolisCity_EventScript_14D19F:: @ 814D19F
lock
faceplayer
checkdailyflags
- special 148
+ special GetPlayerBigGuyGirlString
checkflag 2258
jumpeq SootopolisCity_EventScript_14D241
msgbox SootopolisCity_Text_1C63F2, 4
diff --git a/data/scripts/maps/SootopolisCity_Gym_1F.inc b/data/scripts/maps/SootopolisCity_Gym_1F.inc
index e28ab4547..32bf4d619 100644
--- a/data/scripts/maps/SootopolisCity_Gym_1F.inc
+++ b/data/scripts/maps/SootopolisCity_Gym_1F.inc
@@ -15,7 +15,7 @@ SootopolisCity_Gym_1F_MapScript1_15AF22:: @ 815AF22
SootopolisCity_Gym_1F_MapScript1_15AF25:: @ 815AF25
call SootopolisCity_Gym_1F_EventScript_15AF2E
- special 309
+ special sub_8069D78
end
SootopolisCity_Gym_1F_EventScript_15AF2E:: @ 815AF2E
@@ -51,7 +51,7 @@ SootopolisCity_Gym_1F_EventScript_15AFA8:: @ 815AFA8
pause 40
playsfx 40
call SootopolisCity_Gym_1F_EventScript_15AF2E
- special 142
+ special DrawWholeMapView
end
SootopolisCity_Gym_1F_EventScript_15AFBC:: @ 815AFBC
@@ -59,7 +59,7 @@ SootopolisCity_Gym_1F_EventScript_15AFBC:: @ 815AFBC
pause 40
playsfx 40
call SootopolisCity_Gym_1F_EventScript_15AF2E
- special 142
+ special DrawWholeMapView
end
SootopolisCity_Gym_1F_EventScript_15AFD0:: @ 815AFD0
@@ -67,7 +67,7 @@ SootopolisCity_Gym_1F_EventScript_15AFD0:: @ 815AFD0
pause 40
playsfx 40
call SootopolisCity_Gym_1F_EventScript_15AF2E
- special 142
+ special DrawWholeMapView
end
SootopolisCity_Gym_1F_EventScript_15AFE4:: @ 815AFE4
diff --git a/data/scripts/maps/SootopolisCity_House8.inc b/data/scripts/maps/SootopolisCity_House8.inc
index c52965124..9d7618316 100644
--- a/data/scripts/maps/SootopolisCity_House8.inc
+++ b/data/scripts/maps/SootopolisCity_House8.inc
@@ -2,16 +2,16 @@ SootopolisCity_House8_MapScripts:: @ 815B400
.byte 0
SootopolisCity_House8_EventScript_15B401:: @ 815B401
- special 119
+ special GetShroomishSizeRecordInfo
lock
faceplayer
msgbox SootopolisCity_House8_Text_1900F7, 4
- special 159
+ special sub_80F9A0C
waitstate
copyvar RESULT, 0x8004
compare RESULT, 255
jumpeq SootopolisCity_House8_EventScript_15B448
- special 120
+ special CompareShroomishSize
compare RESULT, 1
jumpeq SootopolisCity_House8_EventScript_15B452
compare RESULT, 2
@@ -51,16 +51,16 @@ SootopolisCity_House8_EventScript_15B488:: @ 815B488
end
SootopolisCity_House8_EventScript_15B492:: @ 815B492
- special 121
+ special GetBarboachSizeRecordInfo
lock
faceplayer
msgbox SootopolisCity_House8_Text_190431, 4
- special 159
+ special sub_80F9A0C
waitstate
copyvar RESULT, 0x8004
compare RESULT, 255
jumpeq SootopolisCity_House8_EventScript_15B4D9
- special 122
+ special CompareBarboachSize
compare RESULT, 1
jumpeq SootopolisCity_House8_EventScript_15B4E3
compare RESULT, 2
@@ -100,14 +100,14 @@ SootopolisCity_House8_EventScript_15B519:: @ 815B519
end
SootopolisCity_House8_EventScript_15B523:: @ 815B523
- special 119
+ special GetShroomishSizeRecordInfo
lockall
msgbox SootopolisCity_House8_Text_1903C9, 4
releaseall
end
SootopolisCity_House8_EventScript_15B531:: @ 815B531
- special 121
+ special GetBarboachSizeRecordInfo
lockall
msgbox SootopolisCity_House8_Text_1906BE, 4
releaseall
diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc
index d3b944f29..3adf3545f 100644
--- a/data/scripts/maps/SouthernIsland_Interior.inc
+++ b/data/scripts/maps/SouthernIsland_Interior.inc
@@ -49,7 +49,7 @@ SouthernIsland_Interior_EventScript_160BA7:: @ 8160BA7
checkflag 2131
jumpif 0, SouthernIsland_Interior_EventScript_160C08
setflag 206
- special 275
+ special SpawnCameraDummy
move 127, SouthernIsland_Interior_Movement_160C12
waitmove 0
pause 50
@@ -63,11 +63,11 @@ SouthernIsland_Interior_EventScript_160BA7:: @ 8160BA7
move 2, SouthernIsland_Interior_Movement_160C22
waitmove 0
pause 50
- special 276
+ special RemoveCameraDummy
setwildbattle SPECIES_LATIAS_OR_LATIOS, 50, ITEM_SOUL_DEW
setflag 911
setflag 2145
- special 323
+ special StartBattle_SouthernIsland
waitstate
clearflag 2145
releaseall
diff --git a/data/scripts/maps/UnknownMap_25_34.inc b/data/scripts/maps/UnknownMap_25_34.inc
index f4f1fe61c..cbd782f35 100644
--- a/data/scripts/maps/UnknownMap_25_34.inc
+++ b/data/scripts/maps/UnknownMap_25_34.inc
@@ -12,7 +12,7 @@ LinkContestRoom1_MapScript1_15F595:: @ 815F595
end
LinkContestRoom1_EventScript_15F5A5:: @ 815F5A5
- special 326
+ special ScriptGetMultiplayerId
compare RESULT, 0
callif 1, LinkContestRoom1_EventScript_15F5E0
compare RESULT, 1
@@ -127,7 +127,7 @@ LinkContestRoom1_EventScript_15F6DB:: @ 815F6DB
LinkContestRoom1_EventScript_15F6E6:: @ 815F6E6
setvar RESULT, 32
- special 340
+ special ScriptRandom
addvar RESULT, 1
switch RESULT
case 1, LinkContestRoom1_EventScript_15F859
diff --git a/data/scripts/maps/VerdanturfTown_ContestLobby.inc b/data/scripts/maps/VerdanturfTown_ContestLobby.inc
index 066ecbdce..8fd4016d1 100644
--- a/data/scripts/maps/VerdanturfTown_ContestLobby.inc
+++ b/data/scripts/maps/VerdanturfTown_ContestLobby.inc
@@ -11,7 +11,7 @@ VerdanturfTown_ContestLobby_EventScript_153D76:: @ 8153D76
setvar CONTEST_RANK, 0
call VerdanturfTown_ContestLobby_EventScript_1A4E92
call VerdanturfTown_ContestLobby_EventScript_153DA1
- special 83
+ special sub_80C4BF0
call VerdanturfTown_ContestLobby_EventScript_15FBDB
setvar 0x4088, 1
warp LinkContestRoom1, 255, 7, 5
@@ -25,13 +25,13 @@ VerdanturfTown_ContestLobby_EventScript_153DA1:: @ 8153DA1
playsfx 71
setmaptile 4, 2, 545, 1
setmaptile 4, 3, 609, 1
- special 142
+ special DrawWholeMapView
move 1, VerdanturfTown_ContestLobby_Movement_153E28
waitmove 0
playsfx 71
setmaptile 4, 2, 721, 1
setmaptile 4, 3, 729, 1
- special 142
+ special DrawWholeMapView
pause 20
move 1, VerdanturfTown_ContestLobby_Movement_153E35
waitmove 0
@@ -122,7 +122,7 @@ VerdanturfTown_ContestLobby_EventScript_153E80:: @ 8153E80
VerdanturfTown_ContestLobby_EventScript_153E89:: @ 8153E89
lockall
- special 259
+ special ShowBerryBlenderRecordWindow
waitbutton
hidebox 0, 0, 29, 19
releaseall
diff --git a/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc b/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc
index 2dc2e1355..5453fb42c 100644
--- a/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc
+++ b/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc
@@ -5,7 +5,7 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_154030:: @ 8154030
lock
faceplayer
msgbox VerdanturfTown_FriendshipRatersHouse_Text_178A9C, 4
- specialval RESULT, 230
+ specialval RESULT, GetLeadMonFriendshipScore
switch RESULT
case 0, VerdanturfTown_FriendshipRatersHouse_EventScript_154093
case 1, VerdanturfTown_FriendshipRatersHouse_EventScript_15409D
diff --git a/data/scripts/maps/VictoryRoad_1F.inc b/data/scripts/maps/VictoryRoad_1F.inc
index b1f6e732b..f64ca20ab 100644
--- a/data/scripts/maps/VictoryRoad_1F.inc
+++ b/data/scripts/maps/VictoryRoad_1F.inc
@@ -93,7 +93,7 @@ VictoryRoad_1F_EventScript_15DF28:: @ 815DF28
VictoryRoad_1F_EventScript_15DF31:: @ 815DF31
trainerbattle 0, OPPONENT_WALLY_3, 0, VictoryRoad_1F_Text_1979BA, VictoryRoad_1F_Text_197A23
- specialval RESULT, 57
+ specialval RESULT, sub_8082C68
compare RESULT, 1
jumpeq VictoryRoad_1F_EventScript_15DF58
msgbox VictoryRoad_1F_Text_197A47, 6
diff --git a/data/scripts/mystery_event_club.inc b/data/scripts/mystery_event_club.inc
index 15d4b2a40..5fd68beca 100644
--- a/data/scripts/mystery_event_club.inc
+++ b/data/scripts/mystery_event_club.inc
@@ -44,7 +44,7 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1:: @ 81B1BB1
PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB:: @ 81B1BBB
setvar 0x8004, 0
- special 96
+ special sub_80EB7C4
waittext
pause 80
msgbox PetalburgCity_PokemonCenter_1F_Text_1B2137, 4
diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc
index 9db432c2c..ca4b2bdb9 100644
--- a/data/scripts/players_house.inc
+++ b/data/scripts/players_house.inc
@@ -107,14 +107,14 @@ LittlerootTown_BrendansHouse_2F_EventScript_1B6A61:: @ 81B6A61
LittlerootTown_BrendansHouse_2F_EventScript_1B6A91:: @ 81B6A91
inccounter GAME_STAT_CHECKED_CLOCK
fadescreen 1
- special 155
+ special sub_810D6B8
waitstate
releaseall
end
LittlerootTown_BrendansHouse_2F_EventScript_1B6A9B:: @ 81B6A9B
fadescreen 1
- special 154
+ special StartWallClock
waitstate
return
@@ -221,7 +221,7 @@ LittlerootTown_MaysHouse_1F_EventScript_1B6BBE:: @ 81B6BBE
waitmove 0
msgbox LittlerootTown_BrendansHouse_1F_Text_172841, 4
fadedefault
- special 62
+ special TurnOffTVScreen
setflag 2096
pause 35
return
diff --git a/data/scripts/pokeblocks.inc b/data/scripts/pokeblocks.inc
index 2cb283173..e1add8734 100644
--- a/data/scripts/pokeblocks.inc
+++ b/data/scripts/pokeblocks.inc
@@ -49,11 +49,11 @@ FallarborTown_ContestLobby_EventScript_1B76A1:: @ 81B76A1
checkitem ITEM_POKEBLOCK_CASE, 1
compare RESULT, 0
jumpeq FallarborTown_ContestLobby_EventScript_1B7780
- specialval RESULT, 49
+ specialval RESULT, PlayerHasBerries
compare RESULT, 0
jumpeq FallarborTown_ContestLobby_EventScript_1B770E
msgbox FallarborTown_ContestLobby_Text_1B6E9D, 4
- specialval RESULT, 160
+ specialval RESULT, sub_810CA00
compare RESULT, 65535
jumpif 5, FallarborTown_ContestLobby_EventScript_1B76EF
compare RESULT, 65535
@@ -94,7 +94,7 @@ FallarborTown_ContestLobby_EventScript_1B7734:: @ 81B7734
FallarborTown_ContestLobby_EventScript_1B7742:: @ 81B7742
copyvar 0x8004, 0x8009
fadescreen 1
- special 161
+ special sub_804E538
waitstate
releaseall
end
@@ -148,7 +148,7 @@ VerdanturfTown_ContestLobby_EventScript_1B77B6:: @ 81B77B6
lock
faceplayer
msgbox FallarborTown_ContestLobby_Text_1B742F, 4
- specialval RESULT, 49
+ specialval RESULT, PlayerHasBerries
compare RESULT, 1
jumpeq FallarborTown_ContestLobby_EventScript_1B77DC
compare RESULT, 0
@@ -208,13 +208,13 @@ LilycoveCity_ContestLobby_EventScript_1B783B:: @ 81B783B
SlateportCity_ContestLobby_EventScript_1B783B:: @ 81B783B
VerdanturfTown_ContestLobby_EventScript_1B783B:: @ 81B783B
lockall
- specialval RESULT, 49
+ specialval RESULT, PlayerHasBerries
compare RESULT, 0
jumpeq FallarborTown_ContestLobby_EventScript_1B7897
checkitem ITEM_POKEBLOCK_CASE, 1
compare RESULT, 0
jumpeq FallarborTown_ContestLobby_EventScript_1B7942
- specialval RESULT, 160
+ specialval RESULT, sub_810CA00
compare RESULT, 65535
jumpif 5, FallarborTown_ContestLobby_EventScript_1B7878
compare RESULT, 65535
@@ -240,7 +240,7 @@ FallarborTown_ContestLobby_EventScript_1B78A1:: @ 81B78A1
jumpeq FallarborTown_ContestLobby_EventScript_1B7936
message FallarborTown_ContestLobby_Text_1B7304
waittext
- special 36
+ special sub_8083614
waitstate
compare RESULT, 1
jumpeq FallarborTown_ContestLobby_EventScript_1B7980
@@ -276,7 +276,7 @@ FallarborTown_ContestLobby_EventScript_1B791D:: @ 81B791D
disappear 239
disappear 238
disappear 237
- special 161
+ special sub_804E538
waitstate
releaseall
end
@@ -296,35 +296,35 @@ FallarborTown_ContestLobby_EventScript_1B7942:: @ 81B7942
end
FallarborTown_ContestLobby_EventScript_1B794C:: @ 81B794C
- special 31
+ special CloseLink
msgbox FallarborTown_ContestLobby_Text_1A4A30, 4
releaseall
end
FallarborTown_ContestLobby_EventScript_1B7959:: @ 81B7959
- special 31
+ special CloseLink
msgbox FallarborTown_ContestLobby_Text_1A4B1D, 4
releaseall
end
FallarborTown_ContestLobby_EventScript_1B7966:: @ 81B7966
- special 31
+ special CloseLink
msgbox FallarborTown_ContestLobby_Text_1A10EB, 4
releaseall
end
FallarborTown_ContestLobby_EventScript_1B7973:: @ 81B7973
- special 31
+ special CloseLink
msgbox FallarborTown_ContestLobby_Text_1A4A85, 4
releaseall
end
FallarborTown_ContestLobby_EventScript_1B7980:: @ 81B7980
fadescreen 1
- specialval RESULT, 37
+ specialval RESULT, GetLinkPartnerNames
copyvar 0x8008, RESULT
copyvar 0x8004, 0x8008
- special 38
+ special SpawnBerryBlenderLinkPlayerSprites
jump FallarborTown_ContestLobby_EventScript_1B799A
end
diff --git a/data/scripts/safari_zone.inc b/data/scripts/safari_zone.inc
index c8d519038..03293115b 100644
--- a/data/scripts/safari_zone.inc
+++ b/data/scripts/safari_zone.inc
@@ -1,12 +1,12 @@
gUnknown_081C340A:: @ 81C340A
setvar 0x40a4, 1
- special 206
+ special ExitSafariMode
warp3 Route121_SafariZoneEntrance, 255, 2, 5
end
EventScript_1C341B: @ 81C341B
setvar 0x40a4, 1
- special 206
+ special ExitSafariMode
warp Route121_SafariZoneEntrance, 255, 2, 5
waitstate
end
@@ -42,7 +42,7 @@ gUnknown_081C3459:: @ 81C3459
gUnknown_081C346A:: @ 81C346A
lockall
- special 207
+ special SafariZoneGetPokeblockNameInFeeder
compare RESULT, -1
jumpif 5, EventScript_1C34A9
msgbox UnknownString_81C354E, 5
@@ -53,7 +53,7 @@ gUnknown_081C346A:: @ 81C346A
EventScript_1C348E:
fadescreen 1
- special 208
+ special sub_810BAF4
waitstate
compare RESULT, -1
jumpif 5, EventScript_1C34A0
diff --git a/data/scripts/storyteller.inc b/data/scripts/storyteller.inc
index c44480e2f..eba94e698 100644
--- a/data/scripts/storyteller.inc
+++ b/data/scripts/storyteller.inc
@@ -8,22 +8,22 @@ MauvilleCity_PokemonCenter_1F_EventScript_1B0816:: @ 81B0816
msgbox MauvilleCity_PokemonCenter_1F_Text_1AECC6, 5
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914
- specialval RESULT, 107
+ specialval RESULT, sub_80F889C
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B08D3
MauvilleCity_PokemonCenter_1F_EventScript_1B084F:: @ 81B084F
message MauvilleCity_PokemonCenter_1F_Text_1AED35
waittext
- special 109
+ special sub_80F8874
waitstate
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0883
setvar 0x8008, 1
- special 108
+ special sub_80F8888
waittext
waitbutton
- specialval RESULT, 110
+ specialval RESULT, sub_80F88AC
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0893
jump MauvilleCity_PokemonCenter_1F_EventScript_1B0909
@@ -40,10 +40,10 @@ MauvilleCity_PokemonCenter_1F_EventScript_1B0893:: @ 81B0893
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B084F
MauvilleCity_PokemonCenter_1F_EventScript_1B08AE:: @ 81B08AE
- specialval RESULT, 112
+ specialval RESULT, sub_80F88E0
compare RESULT, 1
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F
- specialval RESULT, 107
+ specialval RESULT, sub_80F889C
compare RESULT, 4
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F
jump MauvilleCity_PokemonCenter_1F_EventScript_1B08DB
@@ -55,7 +55,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_1B08DB:: @ 81B08DB
msgbox MauvilleCity_PokemonCenter_1F_Text_1AEEB4, 5
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914
- specialval RESULT, 111
+ specialval RESULT, sub_80F88FC
compare RESULT, 1
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0909
msgbox MauvilleCity_PokemonCenter_1F_Text_1AEF49, 4
diff --git a/data/scripts/trader.inc b/data/scripts/trader.inc
index b3a302516..b52c8a2dc 100644
--- a/data/scripts/trader.inc
+++ b/data/scripts/trader.inc
@@ -4,7 +4,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_1AEBAB:: @ 81AEBAB
msgbox MauvilleCity_PokemonCenter_1F_Text_1AE88F, 5
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBDA
- special 114
+ special sub_8109C44
compare RESULT, 1
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3
message MauvilleCity_PokemonCenter_1F_Text_1AE910
@@ -21,7 +21,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3:: @ 81AEBE3
end
MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC:: @ 81AEBEC
- special 113
+ special sub_8109E34
waitstate
compare 0x8004, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC2D
@@ -30,7 +30,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC:: @ 81AEBEC
msgbox MauvilleCity_PokemonCenter_1F_Text_1AE97C, 5
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC42
- special 115
+ special sub_8109C58
compare RESULT, 1
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E
jump MauvilleCity_PokemonCenter_1F_EventScript_1AEC57
@@ -58,19 +58,19 @@ MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E:: @ 81AEC4E
MauvilleCity_PokemonCenter_1F_EventScript_1AEC57:: @ 81AEC57
msgbox MauvilleCity_PokemonCenter_1F_Text_1AE9F8, 4
- special 117
+ special sub_8109CF0
waitstate
compare 0x8006, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECA6
compare 0x8006, 65535
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECAF
- special 116
+ special sub_8109C90
compare RESULT, 1
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECBD
msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA9B, 5
compare RESULT, 0
jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC57
- special 118
+ special sub_8109DE0
msgbox MauvilleCity_PokemonCenter_1F_Text_1AEAFB, 2
end
diff --git a/data/scripts/tv.inc b/data/scripts/tv.inc
index 2b317e725..1f8956811 100644
--- a/data/scripts/tv.inc
+++ b/data/scripts/tv.inc
@@ -1,8 +1,8 @@
Event_TV:: @ 81A6E72
lockall
inccounter GAME_STAT_WATCHED_TV
- special 75
- specialval RESULT, 73
+ special sub_80C2014
+ specialval RESULT, CheckForBigMovieOrEmergencyNewsOnTV
compare RESULT, 2
jumpeq EventScript_1A6F01
compare RESULT, 1
@@ -11,29 +11,29 @@ Event_TV:: @ 81A6E72
jumpif 0, EventScript_1A6EF1
checkflag 2097
jumpeq EventScript_1A6EF1
- specialval RESULT, 176
+ specialval RESULT, IsTVShowInSearchOfTrainersAiring
compare RESULT, 1
jumpeq EventScript_1A6F66
jump EventScript_1A6F50
end
EventScript_1A6EBB:
- specialval 0x8004, 65
+ specialval 0x8004, special_0x44
compare 0x8004, 255
jumpeq EventScript_1A6F3F
- specialval RESULT, 71
+ specialval RESULT, special_0x4a
compare RESULT, 255
jumpeq EventScript_1A6F3F
copyvar 0x8004, RESULT
- specialval RESULT, 66
+ specialval RESULT, sub_80BDA0C
compare RESULT, 0
jumpif 5, EventScript_1A6F21
end
EventScript_1A6EF1:
- special 74
+ special GetMomOrDadStringForTVMessage
msgbox UnknownString_81A0E68, 4
- special 62
+ special TurnOffTVScreen
releaseall
end
@@ -48,15 +48,15 @@ EventScript_1A6F0B:
.else
msgbox UnknownString_8172C50, 4
.endif
- special 297
+ special InitRoamer
clearflag 2141
setflag 255
- special 62
+ special TurnOffTVScreen
releaseall
end
EventScript_1A6F21:
- special 63
+ special DoTVShow
waittext
waitbutton
compare RESULT, 1
@@ -65,19 +65,19 @@ EventScript_1A6F21:
end
EventScript_1A6F37:
- special 62
+ special TurnOffTVScreen
setflag 2097
releaseall
end
EventScript_1A6F3F:
- special 74
+ special GetMomOrDadStringForTVMessage
msgbox UnknownString_81A0E68, 4
jump EventScript_1A6F37
end
EventScript_1A6F50:
- special 64
+ special sub_80BECE8
compare RESULT, 0
jumpeq EventScript_1A6EBB
waittext
@@ -86,7 +86,7 @@ EventScript_1A6F50:
end
EventScript_1A6F66:
- special 175
+ special DoTVShowInSearchOfTrainers
waittext
waitbutton
compare RESULT, 0
diff --git a/data/specials.inc b/data/specials.inc
index f7aa3456a..0eb6b742d 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -1,347 +1,354 @@
+.macro def_special ptr
+.set SPECIAL_\ptr, __special__
+.set __special__, __special__ + 1
+ .4byte \ptr
+ .endm
+
+.set __special__, 0
.align 2
gSpecials::
- .4byte HealPlayerParty
- .4byte sub_8068FEC
- .4byte sub_808102C
- .4byte sub_80810DC
- .4byte sub_80839A4
- .4byte sub_80839D0
- .4byte sub_80BB8CC
- .4byte sub_80BB63C
- .4byte sub_80BBAF0
- .4byte sub_80BC440
- .4byte SecretBasePC_PackUp
- .4byte sub_80BC114
- .4byte sub_80BC56C
- .4byte sub_80BC5BC
- .4byte SecretBasePC_Decoration
- .4byte SecretBasePC_Registry
- .4byte sub_80BCE1C
- .4byte sub_80BCE90
- .4byte sub_80BBDD0
- .4byte sub_80FF474
- .4byte sub_8100B20
- .4byte sub_80BB70C
- .4byte sub_80BBFA4
- .4byte sub_8100A7C
- .4byte sub_80BBC78
- .4byte sub_80BCE4C
- .4byte sub_80C683C
- .4byte sub_80B929C
- .4byte sub_808347C
- .4byte sub_80834E4
- .4byte sub_808350C
- .4byte CloseLink
- .4byte sub_8083B90
- .4byte sub_8083B5C
- .4byte sub_8083B80
- .4byte sub_8083820
- .4byte sub_8083614
- .4byte GetLinkPartnerNames
- .4byte SpawnBerryBlenderLinkPlayerSprites
- .4byte SavePlayerParty
- .4byte LoadPlayerParty
- .4byte sub_80C5568
- .4byte sub_8083BDC
- .4byte FieldObjectInteractionGetBerryTreeData
- .4byte sub_80B4EE4
- .4byte FieldObjectInteractionPlantBerryTree
- .4byte FieldObjectInteractionPickBerryTree
- .4byte FieldObjectInteractionRemoveBerryTree
- .4byte FieldObjectInteractionWaterBerryTree
- .4byte PlayerHasBerries
- .4byte IsEnigmaBerryValid
- .4byte sub_8082558
- .4byte sub_80826D8
- .4byte sub_8082718
- .4byte sub_8082564
- .4byte sub_80847C8
- .4byte PlayTrainerEncounterMusic
- .4byte sub_8082C68
- .4byte sub_8082C9C
- .4byte sub_80826B0
- .4byte ShowPokemonStorageSystem
- .4byte CheckForAlivePartyMons
- .4byte TurnOffTVScreen
- .4byte DoTVShow
- .4byte sub_80BECE8
- .4byte special_0x44
- .4byte sub_80BDA0C
- .4byte sub_80BF2C4
- .4byte sub_80BDE48
- .4byte sub_80BF544
- .4byte SetContestCategoryStringVarForInterview
- .4byte special_0x4a
- .4byte sub_80BF974
- .4byte CheckForBigMovieOrEmergencyNewsOnTV
- .4byte GetMomOrDadStringForTVMessage
- .4byte sub_80C2014
- .4byte sub_80C47C0
- .4byte sub_80C496C
- .4byte sub_80C4C28
- .4byte sub_80C47F0
- .4byte sub_80C4858
- .4byte sub_80C4C64
- .4byte sub_80C4758
- .4byte sub_80C4BF0
- .4byte sub_80C43F4
- .4byte sub_80C4D80
- .4byte sub_80C4F70
- .4byte sub_80C47A0
- .4byte sub_80C4440
- .4byte sub_80C44C0
- .4byte sub_80C5044
- .4byte GiveMonArtistRibbon
- .4byte sub_808363C
- .4byte InitSaveDialog
- .4byte DoWateringBerryTreeAnim
- .4byte sub_80E60D8
- .4byte sub_80EB7C4
- .4byte sub_80F7B14
- .4byte sub_80F7B2C
- .4byte sub_80F7B40
- .4byte sub_80F7C70
- .4byte sub_80F7C84
- .4byte sub_80F7C90
- .4byte sub_80F7C54
- .4byte sub_80F83D0
- .4byte sub_80F7CF4
- .4byte sub_80F7CC8
- .4byte sub_80F889C
- .4byte sub_80F8888
- .4byte sub_80F8874
- .4byte sub_80F88AC
- .4byte sub_80F88FC
- .4byte sub_80F88E0
- .4byte sub_8109E34
- .4byte sub_8109C44
- .4byte sub_8109C58
- .4byte sub_8109C90
- .4byte sub_8109CF0
- .4byte sub_8109DE0
- .4byte GetShroomishSizeRecordInfo
- .4byte CompareShroomishSize
- .4byte GetBarboachSizeRecordInfo
- .4byte CompareBarboachSize
- .4byte sub_80BF9B4
- .4byte sub_80BFAE0
- .4byte sub_80BFB10
- .4byte sub_80FA5BC
- .4byte sub_80FA5E4
- .4byte sub_80EB83C
- .4byte sub_80FA648
- .4byte SwapRegisteredBike
- .4byte CalculatePlayerPartyCount
- .4byte sub_8095B6C
- .4byte sub_8095C10
- .4byte sub_80C4CF8
- .4byte sub_80C4CEC
- .4byte sub_80C4C78
- .4byte sub_80C4D50
- .4byte ShowContestWinner
- .4byte MauvilleGymSpecial2
- .4byte MauvilleGymSpecial1
- .4byte ShowFieldMessageStringVar4
- .4byte DrawWholeMapView
- .4byte StorePlayerCoordsInVars
- .4byte MauvilleGymSpecial3
- .4byte PetalburgGymSpecial1
- .4byte PetalburgGymSpecial2
- .4byte GetPlayerTrainerIdOnesDigit
- .4byte GetPlayerBigGuyGirlString
- .4byte GetRivalSonDaughterString
- .4byte SetFlagInVar
- .4byte CableCarWarp
- .4byte sub_8123218
- .4byte sub_8053E90
- .4byte StartWallClock
- .4byte sub_810D6B8
- .4byte ChooseStarter
- .4byte StartBattle_WallyTutorial
- .4byte sub_80BF9F8
- .4byte sub_80F9A0C
- .4byte sub_810CA00
- .4byte sub_804E538
- .4byte PlayRoulette
- .4byte sub_810FD60
- .4byte sub_810FCB0
- .4byte sub_810FDAC
- .4byte sub_810FA74
- .4byte sub_810FCE8
- .4byte sub_810FF48
- .4byte sub_810FAA0
- .4byte sub_810FF60
- .4byte RockSmashWildEncounter
- .4byte GabbyAndTyGetBattleNum
- .4byte sub_80BDC14
- .4byte GabbyAndTyBeforeInterview
- .4byte DoTVShowInSearchOfTrainers
- .4byte IsTVShowInSearchOfTrainersAiring
- .4byte GabbyAndTyGetLastQuote
- .4byte sub_80BDD18
- .4byte GabbyAndTySetScriptVarsToFieldObjectLocalIds
- .4byte sub_810E300
- .4byte sp0B5_daycare
- .4byte sp0B6_daycare
- .4byte sub_8041E7C
- .4byte sp0B8_daycare
- .4byte sp0B9_daycare_relationship_comment
- .4byte sub_8042328
- .4byte Daycare_SendPokemon_Special
- .4byte ChooseSendDaycareMon
- .4byte ShowDaycareLevelMenu
- .4byte sub_80417B8
- .4byte sub_8041770
- .4byte sub_8041648
- .4byte ScriptHatchMon
- .4byte EggHatch
- .4byte sub_8042B4C
- .4byte ShowLinkBattleRecords
- .4byte sub_80B7CE8
- .4byte sub_80B7D0C
- .4byte ExecuteWhiteOut
- .4byte sp0C8_whiteout_maybe
- .4byte RotatingGate_InitPuzzle
- .4byte RotatingGate_InitPuzzleAndGraphics
- .4byte SetSSTidalFlag
- .4byte ResetSSTidalFlag
- .4byte EnterSafariMode
- .4byte ExitSafariMode
- .4byte SafariZoneGetPokeblockNameInFeeder
- .4byte sub_810BAF4
- .4byte IsMirageIslandPresent
- .4byte UpdateShoalTideFlag
- .4byte InitBirchState
- .4byte ScriptGetPokedexInfo
- .4byte ShowPokedexRatingMessage
- .4byte DoPCTurnOnEffect
- .4byte DoPCTurnOffEffect
- .4byte SetDepartmentStoreFloorVar
- .4byte DoLotteryCornerComputerEffect
- .4byte EndLotteryCornerComputerEffect
- .4byte sub_80F9A4C
- .4byte sub_80F9EEC
- .4byte sub_80FA0DC
- .4byte sub_80F9F84
- .4byte sub_80F9F3C
- .4byte sub_8132670
- .4byte GetRecordedCyclingRoadResults
- .4byte BeginCyclingRoadChallenge
- .4byte GetPlayerAvatarBike
- .4byte FinishCyclingRoadChallenge
- .4byte UpdateCyclingRoadState
- .4byte GetLeadMonFriendshipScore
- .4byte sub_8134548
- .4byte sub_81347F8
- .4byte CheckPartyBattleTowerBanlist
- .4byte sub_8135474
- .4byte sub_81360C0
- .4byte sub_813556C
- .4byte sub_8135668
- .4byte sub_81358A4
- .4byte sub_8135A14
- .4byte sub_8135BA0
- .4byte sub_8135C38
- .4byte sub_8135D84
- .4byte sub_8135DEC
- .4byte sub_8135E50
- .4byte ChooseBattleTowerPlayerParty
- .4byte sub_813601C
- .4byte sub_810F404
- .4byte ReducePlayerPartyToThree
- .4byte BedroomPC
- .4byte PlayerPC
- .4byte FieldShowRegionMap
- .4byte sub_804D89C
- .4byte sub_804DB68
- .4byte sub_804E174
- .4byte sub_804DB2C
- .4byte GetWeekCount
- .4byte RetrieveLotteryNumber
- .4byte PickLotteryCornerTicket
- .4byte ShowBerryBlenderRecordWindow
- .4byte ResetTrickHouseEndRoomFlag
- .4byte SetTrickHouseEndRoomFlag
- .4byte TryCreatePCMenu
- .4byte AccessHallOfFamePC
- .4byte sub_810D6A4
- .4byte CheckLeadMonCool
- .4byte CheckLeadMonBeauty
- .4byte CheckLeadMonCute
- .4byte CheckLeadMonSmart
- .4byte CheckLeadMonTough
- .4byte sub_80C7958
- .4byte DoSoftReset
- .4byte GameClear
- .4byte sub_810EBEC
- .4byte ShowGlassWorkshopMenu
- .4byte SpawnCameraDummy
- .4byte RemoveCameraDummy
- .4byte GetPokeblockNameByMonNature
- .4byte GetSecretBaseNearbyMapName
- .4byte CheckRelicanthWailord
- .4byte DoBrailleWait
- .4byte sub_80818A4
- .4byte sub_80818FC
- .4byte ShowBattleTowerRecords
- .4byte WaitWeather
- .4byte sub_810F414
- .4byte sub_810F424
- .4byte player_get_direction_lower_nybble
- .4byte sub_810F488
- .4byte sub_810F4B0
- .4byte sub_810F4D4
- .4byte sub_810F4FC
- .4byte LeadMonHasEffortRibbon
- .4byte GivLeadMonEffortRibbon
- .4byte GetLeadMonEVCount
- .4byte sub_8064EAC
- .4byte sub_8064ED4
- .4byte InitRoamer
- .4byte sub_810F5BC
- .4byte IsGrassTypeInParty
- .4byte sub_8081334
- .4byte PutZigzagoonInPlayerParty
- .4byte IsStarterInParty
- .4byte sub_80BC224
- .4byte CheckFreePokemonStorageSpace
- .4byte DoSealedChamberShakingEffect1
- .4byte sub_810E944
- .4byte GetShieldToyTVDecorationInfo
- .4byte IsPokerusInParty
- .4byte sub_8069D78
- .4byte sub_810F758
- .4byte StartBattle_GroudonKyogre
- .4byte StartBattle_Rayquaza
- .4byte StartBattle_Regi
- .4byte sub_8082524
- .4byte DoSealedChamberShakingEffect2
- .4byte sub_810F828
- .4byte sub_807E25C
- .4byte sp13E_warp_to_last_warp
- .4byte sp13F_fall_to_last_warp
- .4byte ShowContestEntryMonPic
- .4byte sub_80C5164
- .4byte sub_8134AB4
- .4byte StartBattle_SouthernIsland
- .4byte SetRoute119Weather
- .4byte SetRoute123Weather
- .4byte ScriptGetMultiplayerId
- .4byte ScriptGetPartyMonSpecies
- .4byte sub_80FA148
- .4byte sub_810F8FC
- .4byte sub_80BC50C
- .4byte LoadPlayerBag
- .4byte sub_8081924
- .4byte sub_810F950
- .4byte sub_810F908
- .4byte sub_8090FC0
- .4byte sub_810F96C
- .4byte sub_810F9AC
- .4byte sub_813610C
- .4byte GetNameOfEnigmaBerryInPlayerParty
- .4byte ScriptRandom
- .4byte sub_80835D8
+ def_special HealPlayerParty
+ def_special SetCableClubWarp
+ def_special DoCableClubWarp
+ def_special sub_80810DC
+ def_special sub_80839A4
+ def_special sub_80839D0
+ def_special sub_80BB8CC
+ def_special sub_80BB63C
+ def_special sub_80BBAF0
+ def_special sub_80BC440
+ def_special SecretBasePC_PackUp
+ def_special sub_80BC114
+ def_special sub_80BC56C
+ def_special sub_80BC5BC
+ def_special SecretBasePC_Decoration
+ def_special SecretBasePC_Registry
+ def_special sub_80BCE1C
+ def_special sub_80BCE90
+ def_special sub_80BBDD0
+ def_special sub_80FF474
+ def_special sub_8100B20
+ def_special sub_80BB70C
+ def_special sub_80BBFA4
+ def_special sub_8100A7C
+ def_special sub_80BBC78
+ def_special sub_80BCE4C
+ def_special sub_80C683C
+ def_special sub_80B929C
+ def_special sub_808347C
+ def_special sub_80834E4
+ def_special sub_808350C
+ def_special CloseLink
+ def_special sub_8083B90
+ def_special sub_8083B5C
+ def_special sub_8083B80
+ def_special sub_8083820
+ def_special sub_8083614
+ def_special GetLinkPartnerNames
+ def_special SpawnBerryBlenderLinkPlayerSprites
+ def_special SavePlayerParty
+ def_special LoadPlayerParty
+ def_special sub_80C5568
+ def_special sub_8083BDC
+ def_special FieldObjectInteractionGetBerryTreeData
+ def_special sub_80B4EE4
+ def_special FieldObjectInteractionPlantBerryTree
+ def_special FieldObjectInteractionPickBerryTree
+ def_special FieldObjectInteractionRemoveBerryTree
+ def_special FieldObjectInteractionWaterBerryTree
+ def_special PlayerHasBerries
+ def_special IsEnigmaBerryValid
+ def_special sub_8082558
+ def_special sub_80826D8
+ def_special sub_8082718
+ def_special sub_8082564
+ def_special sub_80847C8
+ def_special PlayTrainerEncounterMusic
+ def_special sub_8082C68
+ def_special sub_8082C9C
+ def_special sub_80826B0
+ def_special ShowPokemonStorageSystem
+ def_special CheckForAlivePartyMons
+ def_special TurnOffTVScreen
+ def_special DoTVShow
+ def_special sub_80BECE8
+ def_special special_0x44
+ def_special sub_80BDA0C
+ def_special sub_80BF2C4
+ def_special sub_80BDE48
+ def_special sub_80BF544
+ def_special SetContestCategoryStringVarForInterview
+ def_special special_0x4a
+ def_special sub_80BF974
+ def_special CheckForBigMovieOrEmergencyNewsOnTV
+ def_special GetMomOrDadStringForTVMessage
+ def_special sub_80C2014
+ def_special sub_80C47C0
+ def_special sub_80C496C
+ def_special sub_80C4C28
+ def_special sub_80C47F0
+ def_special sub_80C4858
+ def_special sub_80C4C64
+ def_special sub_80C4758
+ def_special sub_80C4BF0
+ def_special sub_80C43F4
+ def_special sub_80C4D80
+ def_special sub_80C4F70
+ def_special sub_80C47A0
+ def_special sub_80C4440
+ def_special sub_80C44C0
+ def_special sub_80C5044
+ def_special GiveMonArtistRibbon
+ def_special sub_808363C
+ def_special InitSaveDialog
+ def_special DoWateringBerryTreeAnim
+ def_special sub_80E60D8
+ def_special sub_80EB7C4
+ def_special sub_80F7B14
+ def_special sub_80F7B2C
+ def_special sub_80F7B40
+ def_special sub_80F7C70
+ def_special sub_80F7C84
+ def_special sub_80F7C90
+ def_special sub_80F7C54
+ def_special sub_80F83D0
+ def_special sub_80F7CF4
+ def_special sub_80F7CC8
+ def_special sub_80F889C
+ def_special sub_80F8888
+ def_special sub_80F8874
+ def_special sub_80F88AC
+ def_special sub_80F88FC
+ def_special sub_80F88E0
+ def_special sub_8109E34
+ def_special sub_8109C44
+ def_special sub_8109C58
+ def_special sub_8109C90
+ def_special sub_8109CF0
+ def_special sub_8109DE0
+ def_special GetShroomishSizeRecordInfo
+ def_special CompareShroomishSize
+ def_special GetBarboachSizeRecordInfo
+ def_special CompareBarboachSize
+ def_special sub_80BF9B4
+ def_special sub_80BFAE0
+ def_special sub_80BFB10
+ def_special sub_80FA5BC
+ def_special sub_80FA5E4
+ def_special sub_80EB83C
+ def_special sub_80FA648
+ def_special SwapRegisteredBike
+ def_special CalculatePlayerPartyCount
+ def_special sub_8095B6C
+ def_special sub_8095C10
+ def_special sub_80C4CF8
+ def_special sub_80C4CEC
+ def_special sub_80C4C78
+ def_special sub_80C4D50
+ def_special ShowContestWinner
+ def_special MauvilleGymSpecial2
+ def_special MauvilleGymSpecial1
+ def_special ShowFieldMessageStringVar4
+ def_special DrawWholeMapView
+ def_special StorePlayerCoordsInVars
+ def_special MauvilleGymSpecial3
+ def_special PetalburgGymSpecial1
+ def_special PetalburgGymSpecial2
+ def_special GetPlayerTrainerIdOnesDigit
+ def_special GetPlayerBigGuyGirlString
+ def_special GetRivalSonDaughterString
+ def_special SetFlagInVar
+ def_special CableCarWarp
+ def_special sub_8123218
+ def_special sub_8053E90
+ def_special StartWallClock
+ def_special sub_810D6B8
+ def_special ChooseStarter
+ def_special StartBattle_WallyTutorial
+ def_special sub_80BF9F8
+ def_special sub_80F9A0C
+ def_special sub_810CA00
+ def_special sub_804E538
+ def_special PlayRoulette
+ def_special sub_810FD60
+ def_special sub_810FCB0
+ def_special sub_810FDAC
+ def_special sub_810FA74
+ def_special sub_810FCE8
+ def_special sub_810FF48
+ def_special sub_810FAA0
+ def_special sub_810FF60
+ def_special RockSmashWildEncounter
+ def_special GabbyAndTyGetBattleNum
+ def_special sub_80BDC14
+ def_special GabbyAndTyBeforeInterview
+ def_special DoTVShowInSearchOfTrainers
+ def_special IsTVShowInSearchOfTrainersAiring
+ def_special GabbyAndTyGetLastQuote
+ def_special sub_80BDD18
+ def_special GabbyAndTySetScriptVarsToFieldObjectLocalIds
+ def_special sub_810E300
+ def_special sp0B5_daycare
+ def_special sp0B6_daycare
+ def_special sub_8041E7C
+ def_special sp0B8_daycare
+ def_special sp0B9_daycare_relationship_comment
+ def_special sub_8042328
+ def_special Daycare_SendPokemon_Special
+ def_special ChooseSendDaycareMon
+ def_special ShowDaycareLevelMenu
+ def_special sub_80417B8
+ def_special sub_8041770
+ def_special sub_8041648
+ def_special ScriptHatchMon
+ def_special EggHatch
+ def_special sub_8042B4C
+ def_special ShowLinkBattleRecords
+ def_special sub_80B7CE8
+ def_special sub_80B7D0C
+ def_special ExecuteWhiteOut
+ def_special sp0C8_whiteout_maybe
+ def_special RotatingGate_InitPuzzle
+ def_special RotatingGate_InitPuzzleAndGraphics
+ def_special SetSSTidalFlag
+ def_special ResetSSTidalFlag
+ def_special EnterSafariMode
+ def_special ExitSafariMode
+ def_special SafariZoneGetPokeblockNameInFeeder
+ def_special sub_810BAF4
+ def_special IsMirageIslandPresent
+ def_special UpdateShoalTideFlag
+ def_special InitBirchState
+ def_special ScriptGetPokedexInfo
+ def_special ShowPokedexRatingMessage
+ def_special DoPCTurnOnEffect
+ def_special DoPCTurnOffEffect
+ def_special SetDepartmentStoreFloorVar
+ def_special DoLotteryCornerComputerEffect
+ def_special EndLotteryCornerComputerEffect
+ def_special sub_80F9A4C
+ def_special sub_80F9EEC
+ def_special sub_80FA0DC
+ def_special sub_80F9F84
+ def_special sub_80F9F3C
+ def_special sub_8132670
+ def_special GetRecordedCyclingRoadResults
+ def_special BeginCyclingRoadChallenge
+ def_special GetPlayerAvatarBike
+ def_special FinishCyclingRoadChallenge
+ def_special UpdateCyclingRoadState
+ def_special GetLeadMonFriendshipScore
+ def_special sub_8134548
+ def_special sub_81347F8
+ def_special CheckPartyBattleTowerBanlist
+ def_special sub_8135474
+ def_special sub_81360C0
+ def_special sub_813556C
+ def_special sub_8135668
+ def_special sub_81358A4
+ def_special sub_8135A14
+ def_special sub_8135BA0
+ def_special sub_8135C38
+ def_special sub_8135D84
+ def_special sub_8135DEC
+ def_special sub_8135E50
+ def_special ChooseBattleTowerPlayerParty
+ def_special sub_813601C
+ def_special sub_810F404
+ def_special ReducePlayerPartyToThree
+ def_special BedroomPC
+ def_special PlayerPC
+ def_special FieldShowRegionMap
+ def_special sub_804D89C
+ def_special sub_804DB68
+ def_special sub_804E174
+ def_special sub_804DB2C
+ def_special GetWeekCount
+ def_special RetrieveLotteryNumber
+ def_special PickLotteryCornerTicket
+ def_special ShowBerryBlenderRecordWindow
+ def_special ResetTrickHouseEndRoomFlag
+ def_special SetTrickHouseEndRoomFlag
+ def_special TryCreatePCMenu
+ def_special AccessHallOfFamePC
+ def_special sub_810D6A4
+ def_special CheckLeadMonCool
+ def_special CheckLeadMonBeauty
+ def_special CheckLeadMonCute
+ def_special CheckLeadMonSmart
+ def_special CheckLeadMonTough
+ def_special sub_80C7958
+ def_special DoSoftReset
+ def_special GameClear
+ def_special sub_810EBEC
+ def_special ShowGlassWorkshopMenu
+ def_special SpawnCameraDummy
+ def_special RemoveCameraDummy
+ def_special GetPokeblockNameByMonNature
+ def_special GetSecretBaseNearbyMapName
+ def_special CheckRelicanthWailord
+ def_special DoBrailleWait
+ def_special sub_80818A4
+ def_special sub_80818FC
+ def_special ShowBattleTowerRecords
+ def_special WaitWeather
+ def_special sub_810F414
+ def_special sub_810F424
+ def_special player_get_direction_lower_nybble
+ def_special sub_810F488
+ def_special sub_810F4B0
+ def_special sub_810F4D4
+ def_special sub_810F4FC
+ def_special LeadMonHasEffortRibbon
+ def_special GivLeadMonEffortRibbon
+ def_special GetLeadMonEVCount
+ def_special sub_8064EAC
+ def_special sub_8064ED4
+ def_special InitRoamer
+ def_special sub_810F5BC
+ def_special IsGrassTypeInParty
+ def_special sub_8081334
+ def_special PutZigzagoonInPlayerParty
+ def_special IsStarterInParty
+ def_special sub_80BC224
+ def_special CheckFreePokemonStorageSpace
+ def_special DoSealedChamberShakingEffect1
+ def_special sub_810E944
+ def_special GetShieldToyTVDecorationInfo
+ def_special IsPokerusInParty
+ def_special sub_8069D78
+ def_special sub_810F758
+ def_special StartBattle_GroudonKyogre
+ def_special StartBattle_Rayquaza
+ def_special StartBattle_Regi
+ def_special sub_8082524
+ def_special DoSealedChamberShakingEffect2
+ def_special sub_810F828
+ def_special sub_807E25C
+ def_special sp13E_warp_to_last_warp
+ def_special sp13F_fall_to_last_warp
+ def_special ShowContestEntryMonPic
+ def_special sub_80C5164
+ def_special sub_8134AB4
+ def_special StartBattle_SouthernIsland
+ def_special SetRoute119Weather
+ def_special SetRoute123Weather
+ def_special ScriptGetMultiplayerId
+ def_special ScriptGetPartyMonSpecies
+ def_special sub_80FA148
+ def_special sub_810F8FC
+ def_special sub_80BC50C
+ def_special LoadPlayerBag
+ def_special sub_8081924
+ def_special sub_810F950
+ def_special sub_810F908
+ def_special sub_8090FC0
+ def_special sub_810F96C
+ def_special sub_810F9AC
+ def_special sub_813610C
+ def_special GetNameOfEnigmaBerryInPlayerParty
+ def_special ScriptRandom
+ def_special sub_80835D8
.ifdef GERMAN
- .4byte nullsub_814B200
+ def_special nullsub_814B200
.endif
diff --git a/data/task.s b/data/task.s
deleted file mode 100644
index e87c5b1fc..000000000
--- a/data/task.s
+++ /dev/null
@@ -1,7 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .string "TASK OVER\n"
- .string "タスクがオーバーしました$"
diff --git a/data/text/item_descriptions.inc b/data/text/item_descriptions.inc
deleted file mode 100644
index 6fda439b0..000000000
--- a/data/text/item_descriptions.inc
+++ /dev/null
@@ -1,1393 +0,0 @@
-gItemDescription_MasterBall: @ 83C2028
- .string "The best BALL that\n"
- .string "catches a POKéMON\n"
- .string "without fail.$"
-
-gItemDescription_UltraBall: @ 83C205B
- .string "A better BALL with\n"
- .string "a higher catch rate\n"
- .string "than a GREAT BALL.$"
-
-gItemDescription_GreatBall: @ 83C2095
- .string "A good BALL with a\n"
- .string "higher catch rate\n"
- .string "than a POKé BALL.$"
-
-gItemDescription_PokeBall: @ 83C20CC
- .string "A tool used for\n"
- .string "catching wild\n"
- .string "POKéMON.$"
-
-gItemDescription_SafariBall: @ 83C20F3
- .string "A special BALL that\n"
- .string "is used only in the\n"
- .string "SAFARI ZONE.$"
-
-gItemDescription_NetBall: @ 83C2128
- .string "A BALL that works\n"
- .string "well on WATER- and\n"
- .string "BUG-type POKéMON.$"
-
-gItemDescription_DiveBall: @ 83C215F
- .string "A BALL that works\n"
- .string "better on POKéMON\n"
- .string "on the ocean floor.$"
-
-gItemDescription_NestBall: @ 83C2197
- .string "A BALL that works\n"
- .string "better on weaker\n"
- .string "POKéMON.$"
-
-gItemDescription_RepeatBall: @ 83C21C3
- .string "A BALL that works\n"
- .string "better on POKéMON\n"
- .string "caught before.$"
-
-gItemDescription_TimerBall: @ 83C21F6
- .string "More effective as\n"
- .string "more turns are\n"
- .string "taken in battle.$"
-
-gItemDescription_LuxuryBall: @ 83C2228
- .string "A cozy BALL that\n"
- .string "makes POKéMON\n"
- .string "more friendly.$"
-
-gItemDescription_PremierBall: @ 83C2256
- .string "A rare BALL made\n"
- .string "in commemoration\n"
- .string "of some event.$"
-
-gItemDescription_Potion: @ 83C2287
- .string "Restores the HP of\n"
- .string "a POKéMON by\n"
- .string "20 points.$"
-
-gItemDescription_Antidote: @ 83C22B2
- .string "Heals a poisoned\n"
- .string "POKéMON.$"
-
-gItemDescription_BurnHeal: @ 83C22CC
- .string "Heals POKéMON\n"
- .string "of a burn.$"
-
-gItemDescription_IceHeal: @ 83C22E5
- .string "Defrosts a frozen\n"
- .string "POKéMON.$"
-
-gItemDescription_Awakening: @ 83C2300
- .string "Awakens a sleeping\n"
- .string "POKéMON.$"
-
-gItemDescription_ParalyzeHeal: @ 83C231C
- .string "Heals a paralyzed\n"
- .string "POKéMON.$"
-
-gItemDescription_FullRestore: @ 83C2337
- .string "Fully restores the\n"
- .string "HP and status of a\n"
- .string "POKéMON.$"
-
-gItemDescription_MaxPotion: @ 83C2366
- .string "Fully restores the\n"
- .string "HP of a POKéMON.$"
-
-gItemDescription_HyperPotion: @ 83C238A
- .string "Restores the HP of\n"
- .string "a POKéMON by\n"
- .string "200 points.$"
-
-gItemDescription_SuperPotion: @ 83C23B6
- .string "Restores the HP of\n"
- .string "a POKéMON by\n"
- .string "50 points.$"
-
-gItemDescription_FullHeal: @ 83C23E1
- .string "Heals all the status\n"
- .string "problems of one\n"
- .string "POKéMON.$"
-
-gItemDescription_Revive: @ 83C240F
- .string "Revives a fainted\n"
- .string "POKéMON with half\n"
- .string "its HP.$"
-
-gItemDescription_MaxRevive: @ 83C243B
- .string "Revives a fainted\n"
- .string "POKéMON with all\n"
- .string "its HP.$"
-
-gItemDescription_FreshWater: @ 83C2466
- .string "A mineral water\n"
- .string "that restores HP\n"
- .string "by 50 points.$"
-
-gItemDescription_SodaPop: @ 83C2495
- .string "A fizzy soda drink\n"
- .string "that restores HP\n"
- .string "by 60 points.$"
-
-gItemDescription_Lemonade: @ 83C24C7
- .string "A very sweet drink\n"
- .string "that restores HP\n"
- .string "by 80 points.$"
-
-gItemDescription_MoomooMilk: @ 83C24F9
- .string "A nutritious milk\n"
- .string "that restores HP\n"
- .string "by 100 points.$"
-
-gItemDescription_EnergyPowder: @ 83C252B
- .string "A bitter powder\n"
- .string "that restores HP\n"
- .string "by 50 points.$"
-
-gItemDescription_EnergyRoot: @ 83C255A
- .string "A bitter root\n"
- .string "that restores HP\n"
- .string "by 200 points.$"
-
-gItemDescription_HealPowder: @ 83C2588
- .string "A bitter powder\n"
- .string "that heals all\n"
- .string "status problems.$"
-
-gItemDescription_RevivalHerb: @ 83C25B8
- .string "A very bitter herb\n"
- .string "that revives a\n"
- .string "fainted POKéMON.$"
-
-gItemDescription_Ether: @ 83C25EB
- .string "Restores the PP\n"
- .string "of a selected move\n"
- .string "by 10.$"
-
-gItemDescription_MaxEther: @ 83C2615
- .string "Fully restores the\n"
- .string "PP of a selected\n"
- .string "move.$"
-
-gItemDescription_Elixir: @ 83C263F
- .string "Restores the PP\n"
- .string "of all moves by 10.$"
-
-gItemDescription_MaxElixir: @ 83C2663
- .string "Fully restores the\n"
- .string "PP of a POKéMON’s\n"
- .string "moves.$"
-
-gItemDescription_LavaCookie: @ 83C268F
- .string "A local specialty\n"
- .string "that heals all\n"
- .string "status problems.$"
-
-gItemDescription_BlueFlute: @ 83C26C1
- .string "A glass flute that\n"
- .string "awakens sleeping\n"
- .string "POKéMON.$"
-
-gItemDescription_YellowFlute: @ 83C26EE
- .string "A glass flute that\n"
- .string "snaps POKéMON\n"
- .string "out of confusion.$"
-
-gItemDescription_RedFlute: @ 83C2721
- .string "A glass flute that\n"
- .string "snaps POKéMON\n"
- .string "out of attraction.$"
-
-gItemDescription_BlackFlute: @ 83C2755
- .string "A glass flute that\n"
- .string "keeps away wild\n"
- .string "POKéMON.$"
-
-gItemDescription_WhiteFlute: @ 83C2781
- .string "A glass flute that\n"
- .string "lures wild POKéMON.$"
-
-gItemDescription_BerryJuice: @ 83C27A8
- .string "A 100% pure juice\n"
- .string "that restores HP\n"
- .string "by 20 points.$"
-
-gItemDescription_SacredAsh: @ 83C27D9
- .string "Fully revives and\n"
- .string "restores all\n"
- .string "fainted POKéMON.$"
-
-gItemDescription_ShoalSalt: @ 83C2809
- .string "Salt obtained from\n"
- .string "deep inside the\n"
- .string "SHOAL CAVE.$"
-
-gItemDescription_ShoalShell: @ 83C2838
- .string "A seashell found\n"
- .string "deep inside the\n"
- .string "SHOAL CAVE.$"
-
-gItemDescription_RedShard: @ 83C2865
- .string "A shard from an\n"
- .string "ancient item.\n"
- .string "Can be sold cheaply.$"
-
-gItemDescription_BlueShard: @ 83C2898
- .string "A shard from an\n"
- .string "ancient item.\n"
- .string "Can be sold cheaply.$"
-
-gItemDescription_YellowShard: @ 83C28CB
- .string "A shard from an\n"
- .string "ancient item.\n"
- .string "Can be sold cheaply.$"
-
-gItemDescription_GreenShard: @ 83C28FE
- .string "A shard from an\n"
- .string "ancient item.\n"
- .string "Can be sold cheaply.$"
-
-gItemDescription_HPUp: @ 83C2931
- .string "Raises the HP of\n"
- .string "one POKéMON.$"
-
-gItemDescription_Protein: @ 83C294F
- .string "Raises the stat\n"
- .string "ATTACK of one\n"
- .string "POKéMON.$"
-
-gItemDescription_Iron: @ 83C2976
- .string "Raises the stat\n"
- .string "DEFENSE of one\n"
- .string "POKéMON.$"
-
-gItemDescription_Carbos: @ 83C299E
- .string "Raises the stat\n"
- .string "SPEED of one\n"
- .string "POKéMON.$"
-
-gItemDescription_Calcium: @ 83C29C4
- .string "Raises the stat\n"
- .string "SP. ATK of one\n"
- .string "POKéMON.$"
-
-gItemDescription_RareCandy: @ 83C29EC
- .string "Raises the level\n"
- .string "of a POKéMON by\n"
- .string "one.$"
-
-gItemDescription_PPUp: @ 83C2A12
- .string "Raises the maximum\n"
- .string "PP of a selected\n"
- .string "move.$"
-
-gItemDescription_Zinc: @ 83C2A3C
- .string "Raises the stat\n"
- .string "SP. DEF of one\n"
- .string "POKéMON.$"
-
-gItemDescription_PPMax: @ 83C2A64
- .string "Raises the PP of a\n"
- .string "move to its maximum\n"
- .string "points.$"
-
-gItemDescription_GuardSpec: @ 83C2A93
- .string "Prevents stat\n"
- .string "reduction when\n"
- .string "used in battle.$"
-
-gItemDescription_DireHit: @ 83C2AC0
- .string "Raises the\n"
- .string "critical-hit ratio\n"
- .string "during one battle.$"
-
-gItemDescription_XAttack: @ 83C2AF1
- .string "Raises the stat\n"
- .string "ATTACK during one\n"
- .string "battle.$"
-
-gItemDescription_XDefend: @ 83C2B1B
- .string "Raises the stat\n"
- .string "DEFENSE during one\n"
- .string "battle.$"
-
-gItemDescription_XSpeed: @ 83C2B46
- .string "Raises the stat\n"
- .string "SPEED during one\n"
- .string "battle.$"
-
-gItemDescription_XAccuracy: @ 83C2B6F
- .string "Raises accuracy\n"
- .string "of attack moves\n"
- .string "during one battle.$"
-
-gItemDescription_XSpecial: @ 83C2BA2
- .string "Raises the stat\n"
- .string "SP. ATK during one\n"
- .string "battle.$"
-
-gItemDescription_PokeDoll: @ 83C2BCD
- .string "Use to flee from\n"
- .string "any battle with\n"
- .string "a wild POKéMON.$"
-
-gItemDescription_FluffyTail: @ 83C2BFE
- .string "Use to flee from\n"
- .string "any battle with\n"
- .string "a wild POKéMON.$"
-
-gItemDescription_SuperRepel: @ 83C2C2F
- .string "Repels weak wild\n"
- .string "POKéMON for 200\n"
- .string "steps.$"
-
-gItemDescription_MaxRepel: @ 83C2C57
- .string "Repels weak wild\n"
- .string "POKéMON for 250\n"
- .string "steps.$"
-
-gItemDescription_EscapeRope: @ 83C2C7F
- .string "Use to escape\n"
- .string "instantly from a\n"
- .string "cave or a dungeon.$"
-
-gItemDescription_Repel: @ 83C2CB1
- .string "Repels weak wild\n"
- .string "POKéMON for 100\n"
- .string "steps.$"
-
-gItemDescription_SunStone: @ 83C2CD9
- .string "Makes certain\n"
- .string "species of POKéMON\n"
- .string "evolve.$"
-
-gItemDescription_MoonStone: @ 83C2D02
- .string "Makes certain\n"
- .string "species of POKéMON\n"
- .string "evolve.$"
-
-gItemDescription_FireStone: @ 83C2D2B
- .string "Makes certain\n"
- .string "species of POKéMON\n"
- .string "evolve.$"
-
-gItemDescription_ThunderStone: @ 83C2D54
- .string "Makes certain\n"
- .string "species of POKéMON\n"
- .string "evolve.$"
-
-gItemDescription_WaterStone: @ 83C2D7D
- .string "Makes certain\n"
- .string "species of POKéMON\n"
- .string "evolve.$"
-
-gItemDescription_LeafStone: @ 83C2DA6
- .string "Makes certain\n"
- .string "species of POKéMON\n"
- .string "evolve.$"
-
-gItemDescription_TinyMushroom: @ 83C2DCF
- .string "A plain, ordinary\n"
- .string "mushroom.\n"
- .string "Can be sold cheaply.$"
-
-gItemDescription_BigMushroom: @ 83C2E00
- .string "A rare mushroom\n"
- .string "that would sell at a\n"
- .string "high price.$"
-
-gItemDescription_Pearl: @ 83C2E31
- .string "A pretty pearl.\n"
- .string "Can be sold cheaply.$"
-
-gItemDescription_BigPearl: @ 83C2E56
- .string "A lovely large pearl\n"
- .string "that would sell at a\n"
- .string "high price.$"
-
-gItemDescription_Stardust: @ 83C2E8C
- .string "Beautiful red sand.\n"
- .string "Can be sold at a\n"
- .string "high price.$"
-
-gItemDescription_StarPiece: @ 83C2EBD
- .string "A red gem shard.\n"
- .string "It would sell for a\n"
- .string "very high price.$"
-
-gItemDescription_Nugget: @ 83C2EF3
- .string "A nugget of pure\n"
- .string "gold. Can be sold at\n"
- .string "a high price.$"
-
-gItemDescription_HeartScale: @ 83C2F27
- .string "A lovely scale.\n"
- .string "It is coveted by\n"
- .string "collectors.$"
-
-gItemDescription_OrangeMail: @ 83C2F54
- .string "A ZIGZAGOON-print\n"
- .string "MAIL to be held by\n"
- .string "a POKéMON.$"
-
-gItemDescription_HarborMail: @ 83C2F84
- .string "A WINGULL-print\n"
- .string "MAIL to be held by\n"
- .string "a POKéMON.$"
-
-gItemDescription_GlitterMail: @ 83C2FB2
- .string "A PIKACHU-print\n"
- .string "MAIL to be held by\n"
- .string "a POKéMON.$"
-
-gItemDescription_MechMail: @ 83C2FE0
- .string "A MAGNEMITE-print\n"
- .string "MAIL to be held by\n"
- .string "a POKéMON.$"
-
-gItemDescription_WoodMail: @ 83C3010
- .string "A SLAKOTH-print\n"
- .string "MAIL to be held by\n"
- .string "a POKéMON.$"
-
-gItemDescription_WaveMail: @ 83C303E
- .string "A WAILMER-print\n"
- .string "MAIL to be held by\n"
- .string "a POKéMON.$"
-
-gItemDescription_BeadMail: @ 83C306C
- .string "MAIL featuring a\n"
- .string "sketch of the\n"
- .string "holding POKéMON.$"
-
-gItemDescription_ShadowMail: @ 83C309C
- .string "A DUSKULL-print\n"
- .string "MAIL to be held by\n"
- .string "a POKéMON.$"
-
-gItemDescription_TropicMail: @ 83C30CA
- .string "A BELLOSSOM-print\n"
- .string "MAIL to be held by\n"
- .string "a POKéMON.$"
-
-gItemDescription_DreamMail: @ 83C30FA
- .string "MAIL featuring a\n"
- .string "sketch of the\n"
- .string "holding POKéMON.$"
-
-gItemDescription_FabMail: @ 83C312A
- .string "A gorgeous-print\n"
- .string "MAIL to be held\n"
- .string "by a POKéMON.$"
-
-gItemDescription_RetroMail: @ 83C3159
- .string "MAIL featuring the\n"
- .string "drawings of three\n"
- .string "POKéMON.$"
-
-gItemDescription_CheriBerry: @ 83C3187
- .string "A hold item that\n"
- .string "heals paralysis\n"
- .string "in battle.$"
-
-gItemDescription_ChestoBerry: @ 83C31B3
- .string "A hold item that\n"
- .string "awakens POKéMON\n"
- .string "in battle.$"
-
-gItemDescription_PechaBerry: @ 83C31DF
- .string "A hold item that\n"
- .string "heals poisoning\n"
- .string "in battle.$"
-
-gItemDescription_RawstBerry: @ 83C320B
- .string "A hold item that\n"
- .string "heals a burn in\n"
- .string "battle.$"
-
-gItemDescription_AspearBerry: @ 83C3234
- .string "A hold item that\n"
- .string "defrosts POKéMON\n"
- .string "in battle.$"
-
-gItemDescription_LeppaBerry: @ 83C3261
- .string "A hold item that\n"
- .string "restores 10 PP in\n"
- .string "battle.$"
-
-gItemDescription_OranBerry: @ 83C328C
- .string "A hold item that\n"
- .string "restores 10 HP in\n"
- .string "battle.$"
-
-gItemDescription_PersimBerry: @ 83C32B7
- .string "A hold item that\n"
- .string "heals confusion\n"
- .string "in battle.$"
-
-gItemDescription_LumBerry: @ 83C32E3
- .string "A hold item that\n"
- .string "heals status in\n"
- .string "battle.$"
-
-gItemDescription_SitrusBerry: @ 83C330C
- .string "A hold item that\n"
- .string "restores 30 HP in\n"
- .string "battle.$"
-
-gItemDescription_FigyBerry: @ 83C3337
- .string "A hold item that\n"
- .string "restores HP but\n"
- .string "may confuse.$"
-
-gItemDescription_WikiBerry: @ 83C3365
- .string "A hold item that\n"
- .string "restores HP but\n"
- .string "may confuse.$"
-
-gItemDescription_MagoBerry: @ 83C3393
- .string "A hold item that\n"
- .string "restores HP but\n"
- .string "may confuse.$"
-
-gItemDescription_AguavBerry: @ 83C33C1
- .string "A hold item that\n"
- .string "restores HP but\n"
- .string "may confuse.$"
-
-gItemDescription_IapapaBerry: @ 83C33EF
- .string "A hold item that\n"
- .string "restores HP but\n"
- .string "may confuse.$"
-
-gItemDescription_RazzBerry: @ 83C341D
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow RAZZ.$"
-
-gItemDescription_BlukBerry: @ 83C3451
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow BLUK.$"
-
-gItemDescription_NanabBerry: @ 83C3485
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow NANAB.$"
-
-gItemDescription_WepearBerry: @ 83C34BA
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow WEPEAR.$"
-
-gItemDescription_PinapBerry: @ 83C34F0
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow PINAP.$"
-
-gItemDescription_PomegBerry: @ 83C3525
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow POMEG.$"
-
-gItemDescription_KelpsyBerry: @ 83C355A
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow KELPSY.$"
-
-gItemDescription_QualotBerry: @ 83C3590
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow QUALOT.$"
-
-gItemDescription_HondewBerry: @ 83C35C6
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow HONDEW.$"
-
-gItemDescription_GrepaBerry: @ 83C35FC
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow GREPA.$"
-
-gItemDescription_TamatoBerry: @ 83C3631
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow TAMATO.$"
-
-gItemDescription_CornnBerry: @ 83C3667
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow CORNN.$"
-
-gItemDescription_MagostBerry: @ 83C369C
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow MAGOST.$"
-
-gItemDescription_RabutaBerry: @ 83C36D2
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow RABUTA.$"
-
-gItemDescription_NomelBerry: @ 83C3708
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow NOMEL.$"
-
-gItemDescription_SpelonBerry: @ 83C373D
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow SPELON.$"
-
-gItemDescription_PamtreBerry: @ 83C3773
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow PAMTRE.$"
-
-gItemDescription_WatmelBerry: @ 83C37A9
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow WATMEL.$"
-
-gItemDescription_DurinBerry: @ 83C37DF
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow DURIN.$"
-
-gItemDescription_BelueBerry: @ 83C3814
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow BELUE.$"
-
-gItemDescription_LiechiBerry: @ 83C3849
- .string "A hold item that\n"
- .string "raises ATTACK in\n"
- .string "a pinch.$"
-
-gItemDescription_GanlonBerry: @ 83C3874
- .string "A hold item that\n"
- .string "raises DEFENSE in\n"
- .string "a pinch.$"
-
-gItemDescription_SalacBerry: @ 83C38A0
- .string "A hold item that\n"
- .string "raises SPEED in\n"
- .string "a pinch.$"
-
-gItemDescription_PetayaBerry: @ 83C38CA
- .string "A hold item that\n"
- .string "raises SP. ATK in\n"
- .string "a pinch.$"
-
-gItemDescription_ApicotBerry: @ 83C38F6
- .string "A hold item that\n"
- .string "raises SP. DEF in\n"
- .string "a pinch.$"
-
-gItemDescription_LansatBerry: @ 83C3922
- .string "A hold item that\n"
- .string "ups the critical-\n"
- .string "hit rate in a pinch.$"
-
-gItemDescription_StarfBerry: @ 83C395A
- .string "A hold item that\n"
- .string "sharply boosts a\n"
- .string "stat in a pinch.$"
-
-gItemDescription_EnigmaBerry: @ 83C398D
- .string "{POKEBLOCK} ingredient.\n"
- .string "Plant in loamy soil\n"
- .string "to grow a mystery.$"
-
-gItemDescription_BrightPowder: @ 83C39C6
- .string "A hold item that\n"
- .string "casts a glare to\n"
- .string "reduce accuracy.$"
-
-gItemDescription_WhiteHerb: @ 83C39F9
- .string "A hold item that\n"
- .string "restores any\n"
- .string "lowered stat.$"
-
-gItemDescription_MachoBrace: @ 83C3A25
- .string "A hold item that\n"
- .string "promotes growth,\n"
- .string "but reduces SPEED.$"
-
-gItemDescription_ExpShare: @ 83C3A5A
- .string "A hold item that\n"
- .string "gets EXP. points\n"
- .string "from battles.$"
-
-gItemDescription_QuickClaw: @ 83C3A8A
- .string "A hold item that\n"
- .string "occasionally allows\n"
- .string "the first strike.$"
-
-gItemDescription_SootheBell: @ 83C3AC1
- .string "A hold item that\n"
- .string "calms spirits and\n"
- .string "fosters friendship.$"
-
-gItemDescription_MentalHerb: @ 83C3AF8
- .string "A hold item that\n"
- .string "snaps POKéMON out\n"
- .string "of infatuation.$"
-
-gItemDescription_ChoiceBand: @ 83C3B2B
- .string "Raises a move’s\n"
- .string "power, but permits\n"
- .string "only that move.$"
-
-gItemDescription_KingsRock: @ 83C3B5E
- .string "A hold item that\n"
- .string "may cause flinching\n"
- .string "when the foe is hit.$"
-
-gItemDescription_SilverPowder: @ 83C3B98
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "BUG-type moves.$"
-
-gItemDescription_AmuletCoin: @ 83C3BCD
- .string "Doubles money in\n"
- .string "battle if the holder\n"
- .string "takes part.$"
-
-gItemDescription_CleanseTag: @ 83C3BFF
- .string "A hold item that\n"
- .string "helps repel wild\n"
- .string "POKéMON.$"
-
-gItemDescription_SoulDew: @ 83C3C2A
- .string "Hold item: Raises\n"
- .string "SP. ATK & SP. DEF\n"
- .string "of LATIOS & LATIAS.$"
-
-gItemDescription_DeepSeaTooth: @ 83C3C62
- .string "A hold item that\n"
- .string "raises the SP. ATK\n"
- .string "of CLAMPERL.$"
-
-gItemDescription_DeepSeaScale: @ 83C3C93
- .string "A hold item that\n"
- .string "raises the SP. DEF\n"
- .string "of CLAMPERL.$"
-
-gItemDescription_SmokeBall: @ 83C3CC4
- .string "A hold item that\n"
- .string "can be used to flee\n"
- .string "from a wild POKéMON.$"
-
-gItemDescription_Everstone: @ 83C3CFE
- .string "A wondrous stone\n"
- .string "& a hold item that\n"
- .string "prevents evolution.$"
-
-gItemDescription_FocusBand: @ 83C3D36
- .string "A hold item that\n"
- .string "occasionally\n"
- .string "prevents fainting.$"
-
-gItemDescription_LuckyEgg: @ 83C3D67
- .string "A hold item that\n"
- .string "boosts EXP. points\n"
- .string "earned in battle.$"
-
-gItemDescription_ScopeLens: @ 83C3D9D
- .string "A hold item that\n"
- .string "raises the critical-\n"
- .string "hit rate.$"
-
-gItemDescription_MetalCoat: @ 83C3DCD
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "STEEL-type moves.$"
-
-gItemDescription_Leftovers: @ 83C3E04
- .string "A hold item that\n"
- .string "gradually restores\n"
- .string "HP in battle.$"
-
-gItemDescription_DragonScale: @ 83C3E36
- .string "A strange scale\n"
- .string "held by DRAGON-\n"
- .string "type POKéMON.$"
-
-gItemDescription_LightBall: @ 83C3E64
- .string "A hold item that\n"
- .string "raises the SP. ATK\n"
- .string "of PIKACHU.$"
-
-gItemDescription_SoftSand: @ 83C3E94
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "GROUND-type moves.$"
-
-gItemDescription_HardStone: @ 83C3ECC
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "ROCK-type moves.$"
-
-gItemDescription_MiracleSeed: @ 83C3F02
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "GRASS-type moves.$"
-
-gItemDescription_BlackGlasses: @ 83C3F39
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "DARK-type moves.$"
-
-gItemDescription_BlackBelt: @ 83C3F6F
- .string "A hold item that\n"
- .string "boosts FIGHTING-\n"
- .string "type moves.$"
-
-gItemDescription_Magnet: @ 83C3F9D
- .string "A hold item that\n"
- .string "boosts ELECTRIC-\n"
- .string "type moves.$"
-
-gItemDescription_MysticWater: @ 83C3FCB
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "WATER-type moves.$"
-
-gItemDescription_SharpBeak: @ 83C4002
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "FLYING-type moves.$"
-
-gItemDescription_PoisonBarb: @ 83C403A
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "POISON-type moves.$"
-
-gItemDescription_NeverMeltIce: @ 83C4072
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "ICE-type moves.$"
-
-gItemDescription_SpellTag: @ 83C40A7
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "GHOST-type moves.$"
-
-gItemDescription_TwistedSpoon: @ 83C40DE
- .string "A hold item that\n"
- .string "boosts PSYCHIC-\n"
- .string "type moves.$"
-
-gItemDescription_Charcoal: @ 83C410B
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "FIRE-type moves.$"
-
-gItemDescription_DragonFang: @ 83C4141
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "DRAGON-type moves.$"
-
-gItemDescription_SilkScarf: @ 83C4179
- .string "A hold item that\n"
- .string "raises the power of\n"
- .string "NORMAL-type moves.$"
-
-gItemDescription_UpGrade: @ 83C41B1
- .string "A peculiar box made\n"
- .string "by SILPH CO.$"
-
-gItemDescription_ShellBell: @ 83C41D2
- .string "A hold item that\n"
- .string "restores HP upon\n"
- .string "striking the foe.$"
-
-gItemDescription_SeaIncense: @ 83C4206
- .string "A hold item that\n"
- .string "slightly boosts\n"
- .string "WATER-type moves.$"
-
-gItemDescription_LaxIncense: @ 83C4239
- .string "A hold item that\n"
- .string "slightly lowers the\n"
- .string "foe’s accuracy.$"
-
-gItemDescription_LuckyPunch: @ 83C426E
- .string "A hold item that\n"
- .string "raises CHANSEY’s\n"
- .string "critical-hit rate.$"
-
-gItemDescription_MetalPowder: @ 83C42A3
- .string "A hold item that\n"
- .string "raises DEFENSE.$"
-
-gItemDescription_ThickClub: @ 83C42C4
- .string "A bone of some\n"
- .string "sort. It can be sold\n"
- .string "cheaply.$"
-
-gItemDescription_Stick: @ 83C42F1
- .string "A stick of leek.\n"
- .string "It can be sold\n"
- .string "cheaply.$"
-
-gItemDescription_RedScarf: @ 83C431A
- .string "A hold item that\n"
- .string "raises COOL in\n"
- .string "CONTESTS.$"
-
-gItemDescription_BlueScarf: @ 83C4344
- .string "A hold item that\n"
- .string "raises BEAUTY in\n"
- .string "CONTESTS.$"
-
-gItemDescription_PinkScarf: @ 83C4370
- .string "A hold item that\n"
- .string "raises CUTE in\n"
- .string "CONTESTS.$"
-
-gItemDescription_GreenScarf: @ 83C439A
- .string "A hold item that\n"
- .string "raises SMART in\n"
- .string "CONTESTS.$"
-
-gItemDescription_YellowScarf: @ 83C43C5
- .string "A hold item that\n"
- .string "raises TOUGH in\n"
- .string "CONTESTS.$"
-
-gItemDescription_MachBike: @ 83C43F0
- .string "A folding bicycle\n"
- .string "that more than\n"
- .string "doubles foot speed.$"
-
-gItemDescription_CoinCase: @ 83C4425
- .string "A case that holds\n"
- .string "up to 9,999 COINS.$"
-
-gItemDescription_Itemfinder: @ 83C444A
- .string "A device that\n"
- .string "signals an invisible\n"
- .string "item by sound.$"
-
-gItemDescription_OldRod: @ 83C447C
- .string "Use by any body of\n"
- .string "water to fish for\n"
- .string "wild POKéMON.$"
-
-gItemDescription_GoodRod: @ 83C44AF
- .string "A decent fishing\n"
- .string "rod for catching\n"
- .string "wild POKéMON.$"
-
-gItemDescription_SuperRod: @ 83C44DF
- .string "The best fishing\n"
- .string "rod for catching\n"
- .string "wild POKéMON.$"
-
-gItemDescription_SSTicket: @ 83C450F
- .string "The ticket required\n"
- .string "for sailing on a\n"
- .string "ferry.$"
-
-gItemDescription_ContestPass: @ 83C453B
- .string "The pass required\n"
- .string "for entering\n"
- .string "POKéMON CONTESTS.$"
-
-gItemDescription_WailmerPail: @ 83C456C
- .string "A tool used for\n"
- .string "watering BERRIES\n"
- .string "and plants.$"
-
-gItemDescription_DevonGoods: @ 83C4599
- .string "A package that\n"
- .string "contains DEVON’s\n"
- .string "machine parts.$"
-
-gItemDescription_SootSack: @ 83C45C8
- .string "A sack used to\n"
- .string "gather and hold\n"
- .string "volcanic ash.$"
-
-gItemDescription_BasementKey: @ 83C45F5
- .string "The key for NEW\n"
- .string "MAUVILLE beneath\n"
- .string "MAUVILLE CITY.$"
-
-gItemDescription_AcroBike: @ 83C4625
- .string "A folding bicycle\n"
- .string "capable of jumps\n"
- .string "and wheelies.$"
-
-gItemDescription_PokeblockCase: @ 83C4656
- .string "A case for holding\n"
- .string "{POKEBLOCK}S made with\n"
- .string "a BERRY BLENDER.$"
-
-gItemDescription_Letter: @ 83C468B
- .string "A letter to STEVEN\n"
- .string "from the PRESIDENT\n"
- .string "of the DEVON CORP.$"
-
-gItemDescription_EonTicket: @ 83C46C4
- .string "The ticket for a\n"
- .string "ferry to a distant\n"
- .string "southern island.$"
-
-gItemDescription_RedOrb: @ 83C46F9
- .string "A red, glowing orb\n"
- .string "said to contain an\n"
- .string "ancient power.$"
-
-gItemDescription_BlueOrb: @ 83C472E
- .string "A blue, glowing orb\n"
- .string "said to contain an\n"
- .string "ancient power.$"
-
-gItemDescription_Scanner: @ 83C4764
- .string "A device found\n"
- .string "inside the\n"
- .string "ABANDONED SHIP.$"
-
-gItemDescription_GoGoggles: @ 83C478E
- .string "Nifty goggles that\n"
- .string "protect eyes from\n"
- .string "desert sandstorms.$"
-
-gItemDescription_Meteorite: @ 83C47C6
- .string "A meteorite found\n"
- .string "at METEOR FALLS.$"
-
-gItemDescription_Room1Key: @ 83C47E9
- .string "A key that opens a\n"
- .string "door inside the\n"
- .string "ABANDONED SHIP.$"
-
-gItemDescription_Room2Key: @ 83C481C
- .string "A key that opens a\n"
- .string "door inside the\n"
- .string "ABANDONED SHIP.$"
-
-gItemDescription_Room4Key: @ 83C484F
- .string "A key that opens a\n"
- .string "door inside the\n"
- .string "ABANDONED SHIP.$"
-
-gItemDescription_Room6Key: @ 83C4882
- .string "A key that opens a\n"
- .string "door inside the\n"
- .string "ABANDONED SHIP.$"
-
-gItemDescription_StorageKey: @ 83C48B5
- .string "The key to the\n"
- .string "storage inside the\n"
- .string "ABANDONED SHIP.$"
-
-gItemDescription_RootFossil: @ 83C48E7
- .string "A fossil of an\n"
- .string "ancient, seafloor-\n"
- .string "dwelling POKéMON.$"
-
-gItemDescription_ClawFossil: @ 83C491B
- .string "A fossil of an\n"
- .string "ancient, seafloor-\n"
- .string "dwelling POKéMON.$"
-
-gItemDescription_DevonScope: @ 83C494F
- .string "A device by DEVON\n"
- .string "that signals any\n"
- .string "unseeable POKéMON.$"
-
-gItemDescription_TM01: @ 83C4985
- .string "Powerful, but makes\n"
- .string "the user flinch if\n"
- .string "hit by the foe.$"
-
-gItemDescription_TM02: @ 83C49BC
- .string "Hooks and slashes\n"
- .string "the foe with long,\n"
- .string "sharp claws.$"
-
-gItemDescription_TM03: @ 83C49EE
- .string "Generates an\n"
- .string "ultrasonic wave\n"
- .string "that may confuse.$"
-
-gItemDescription_TM04: @ 83C4A1D
- .string "Raises SP. ATK and\n"
- .string "SP. DEF by focusing\n"
- .string "the mind.$"
-
-gItemDescription_TM05: @ 83C4A4E
- .string "A savage roar that\n"
- .string "makes the foe flee \n"
- .string "to end the battle.$"
-
-gItemDescription_TM06: @ 83C4A88
- .string "Poisons the foe\n"
- .string "with a toxin that\n"
- .string "gradually worsens.$"
-
-gItemDescription_TM07: @ 83C4ABD
- .string "Summons a hailstorm\n"
- .string "that hurts all\n"
- .string "types except ICE.$"
-
-gItemDescription_TM08: @ 83C4AF2
- .string "Bulks up the body\n"
- .string "to boost both\n"
- .string "ATTACK & DEFENSE.$"
-
-gItemDescription_TM09: @ 83C4B24
- .string "Shoots 2 to 5 seeds\n"
- .string "in a row to strike\n"
- .string "the foe.$"
-
-gItemDescription_TM10: @ 83C4B54
- .string "The attack power\n"
- .string "varies among\n"
- .string "different POKéMON.$"
-
-gItemDescription_TM11: @ 83C4B85
- .string "Raises the power of\n"
- .string "FIRE-type moves\n"
- .string "for 5 turns.$"
-
-gItemDescription_TM12: @ 83C4BB6
- .string "Enrages the foe so\n"
- .string "it can only use\n"
- .string "attack moves.$"
-
-gItemDescription_TM13: @ 83C4BE7
- .string "Fires an icy cold\n"
- .string "beam that may\n"
- .string "freeze the foe.$"
-
-gItemDescription_TM14: @ 83C4C17
- .string "A vicious snow-and-\n"
- .string "wind attack that\n"
- .string "may freeze the foe.$"
-
-gItemDescription_TM15: @ 83C4C50
- .string "Powerful, but needs\n"
- .string "recharging the\n"
- .string "next turn.$"
-
-gItemDescription_TM16: @ 83C4C7E
- .string "Creates a wall of\n"
- .string "light that lowers\n"
- .string "SP. ATK damage.$"
-
-gItemDescription_TM17: @ 83C4CB2
- .string "Negates all damage,\n"
- .string "but may fail if used\n"
- .string "in succession.$"
-
-gItemDescription_TM18: @ 83C4CEA
- .string "Raises the power of\n"
- .string "WATER-type moves\n"
- .string "for 5 turns.$"
-
-gItemDescription_TM19: @ 83C4D1C
- .string "Recovers half the\n"
- .string "HP of the damage \n"
- .string "this move inflicts.$"
-
-gItemDescription_TM20: @ 83C4D54
- .string "Prevents status\n"
- .string "abnormality with a\n"
- .string "mystical power.$"
-
-gItemDescription_TM21: @ 83C4D87
- .string "The less the user\n"
- .string "likes you, the more\n"
- .string "powerful this move.$"
-
-gItemDescription_TM22: @ 83C4DC1
- .string "Absorbs sunlight in\n"
- .string "the 1st turn, then\n"
- .string "attacks next turn.$"
-
-gItemDescription_TM23: @ 83C4DFB
- .string "Slams the foe with\n"
- .string "a hard tail. It may\n"
- .string "lower DEFENSE.$"
-
-gItemDescription_TM24: @ 83C4E31
- .string "A powerful electric\n"
- .string "attack that may\n"
- .string "cause paralysis.$"
-
-gItemDescription_TM25: @ 83C4E66
- .string "Strikes the foe\n"
- .string "with a thunderbolt.\n"
- .string "It may paralyze.$"
-
-gItemDescription_TM26: @ 83C4E9B
- .string "Causes a quake\n"
- .string "that has no effect\n"
- .string "on flying foes.$"
-
-gItemDescription_TM27: @ 83C4ECD
- .string "The more the user\n"
- .string "likes you, the more\n"
- .string "powerful this move.$"
-
-gItemDescription_TM28: @ 83C4F07
- .string "Digs underground\n"
- .string "the 1st turn, then\n"
- .string "strikes next turn.$"
-
-gItemDescription_TM29: @ 83C4F3E
- .string "A powerful psychic\n"
- .string "attack that may\n"
- .string "lower SP. DEF.$"
-
-gItemDescription_TM30: @ 83C4F70
- .string "Hurls a dark lump\n"
- .string "at the foe. It may\n"
- .string "lower SP. DEF.$"
-
-gItemDescription_TM31: @ 83C4FA4
- .string "Destroys barriers\n"
- .string "like LIGHT SCREEN\n"
- .string "and causes damage.$"
-
-gItemDescription_TM32: @ 83C4FDB
- .string "Creates illusory\n"
- .string "copies to enhance\n"
- .string "elusiveness.$"
-
-gItemDescription_TM33: @ 83C500B
- .string "Creates a wall of\n"
- .string "light that weakens\n"
- .string "physical attacks.$"
-
-gItemDescription_TM34: @ 83C5042
- .string "Zaps the foe with a\n"
- .string "jolt of electricity\n"
- .string "that never misses.$"
-
-gItemDescription_TM35: @ 83C507D
- .string "Looses a stream of\n"
- .string "fire that may burn\n"
- .string "the foe.$"
-
-gItemDescription_TM36: @ 83C50AC
- .string "Hurls sludge at the\n"
- .string "foe. It may poison\n"
- .string "the foe.$"
-
-gItemDescription_TM37: @ 83C50DC
- .string "Causes a sandstorm\n"
- .string "that hits the foe\n"
- .string "over several turns.$"
-
-gItemDescription_TM38: @ 83C5115
- .string "A powerful fire\n"
- .string "attack that may\n"
- .string "burn the foe.$"
-
-gItemDescription_TM39: @ 83C5143
- .string "Stops the foe from\n"
- .string "moving with rocks.\n"
- .string "May lower SPEED.$"
-
-gItemDescription_TM40: @ 83C517A
- .string "An extremely fast\n"
- .string "attack that can’t\n"
- .string "be avoided.$"
-
-gItemDescription_TM41: @ 83C51AA
- .string "Prevents the foe\n"
- .string "from using the same\n"
- .string "move in a row.$"
-
-gItemDescription_TM42: @ 83C51DE
- .string "Raises ATTACK when\n"
- .string "poisoned, burned,\n"
- .string "or paralyzed.$"
-
-gItemDescription_TM43: @ 83C5211
- .string "Adds an effect to\n"
- .string "attack depending\n"
- .string "on the location.$"
-
-gItemDescription_TM44: @ 83C5245
- .string "The user sleeps for\n"
- .string "2 turns to restore\n"
- .string "health and status.$"
-
-gItemDescription_TM45: @ 83C527F
- .string "Makes it tough to\n"
- .string "attack a foe of the\n"
- .string "opposite gender.$"
-
-gItemDescription_TM46: @ 83C52B6
- .string "While attacking,\n"
- .string "it may steal the\n"
- .string "foe’s held item.$"
-
-gItemDescription_TM47: @ 83C52E9
- .string "Spreads hard-edged\n"
- .string "wings and slams\n"
- .string "into the foe.$"
-
-gItemDescription_TM48: @ 83C531A
- .string "Switches abilities\n"
- .string "with the foe on the\n"
- .string "turn this is used.$"
-
-gItemDescription_TM49: @ 83C5354
- .string "Steals the effects\n"
- .string "of the move the foe\n"
- .string "is trying to use.$"
-
-gItemDescription_TM50: @ 83C538D
- .string "Enables full-power\n"
- .string "attack, but sharply\n"
- .string "lowers SP. ATK.$"
-
-gItemDescription_HM01: @ 83C53C4
- .string "Attacks the foe\n"
- .string "with sharp blades\n"
- .string "or claws.$"
-
-gItemDescription_HM02: @ 83C53F0
- .string "Flies up on the\n"
- .string "first turn, then\n"
- .string "attacks next turn.$"
-
-gItemDescription_HM03: @ 83C5424
- .string "Creates a huge\n"
- .string "wave, then crashes\n"
- .string "it down on the foe.$"
-
-gItemDescription_HM04: @ 83C545A
- .string "Builds enormous\n"
- .string "power, then slams\n"
- .string "the foe.$"
-
-gItemDescription_HM05: @ 83C5485
- .string "Looses a powerful\n"
- .string "blast of light that\n"
- .string "reduces accuracy.$"
-
-gItemDescription_HM06: @ 83C54BD
- .string "A rock-crushingly\n"
- .string "tough attack that\n"
- .string "may lower DEFENSE.$"
-
-gItemDescription_HM07: @ 83C54F4
- .string "Attacks the foe\n"
- .string "with enough power\n"
- .string "to climb waterfalls.$"
-
-gItemDescription_HM08: @ 83C552B
- .string "Dives underwater\n"
- .string "the 1st turn, then\n"
- .string "attacks next turn.$"
-
-gItemDescription_Dummy: @ 83C5562
- .string "$"
diff --git a/data/trader.s b/data/trader.s
deleted file mode 100644
index 5029338d2..000000000
--- a/data/trader.s
+++ /dev/null
@@ -1,17 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_083F62D8:: @ 83F62D8
- .4byte SecretBaseText_Tristan
- .4byte SecretBaseText_Philip
- .4byte SecretBaseText_Dennis
- .4byte SecretBaseText_Roberto
-
-gTraderDecorations:: @ 83F62E8
- .byte DECOR_DUSKULL_DOLL
- .byte DECOR_BALL_CUSHION
- .byte DECOR_TIRE
- .byte DECOR_PRETTY_FLOWERS
diff --git a/data/trainer_card.s b/data/trainer_card.s
deleted file mode 100644
index 75e0041dd..000000000
--- a/data/trainer_card.s
+++ /dev/null
@@ -1,62 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gBadgesTiles:: @ 83B5AB8
- .incbin "graphics/trainer_card/badges.4bpp"
-
-@ XXX: what is this?
- .align 2
- .4byte 0x2000000
-
- .align 2
-gUnknown_083B5EBC:: @ 83B5EBC
- .4byte sub_8093864
- .4byte sub_80938A8
- .4byte sub_80938CC
- .4byte sub_8093918
- .4byte sub_8093938
- .4byte sub_8093954
- .4byte sub_8093980
-
- .align 2
-gUnknown_083B5ED8:: @ 83B5ED8
- .4byte sub_8093AA0
- .4byte sub_8093AF0
- .4byte sub_8093C0C
- .4byte sub_8093C38
- .4byte sub_8093D50
-
- .align 2
-gUnknown_083B5EEC:: @ 83B5EEC
- .4byte gUnknown_08E8CAC0
- .4byte gUnknown_08E8D4C0
-
-gUnknown_083B5EF4:: @ 83B5EF4
- .string " : $"
-
- .align 2
-gUnknown_083B5EF8:: @ 83B5EF8
- .4byte gMenuTrainerCard0Star_Pal
- .4byte gMenuTrainerCard1Star_Pal
- .4byte gMenuTrainerCard2Star_Pal
- .4byte gMenuTrainerCard3Star_Pal
- .4byte gMenuTrainerCard4Star_Pal
-
-gUnknown_083B5F0C:: @ 83B5F0C
- .incbin "graphics/trainer_card/83B5F0C.gbapal"
-
- .align 2
-gBadgesPalette:: @ 83B5F2C
- .incbin "graphics/trainer_card/badges.gbapal"
-
-gUnknown_083B5F4C:: @ 83B5F4C
- .incbin "graphics/trainer_card/83B5F4C.gbapal"
-
-gUnknown_083B5F6C:: @ 83B5F6C
- .incbin "graphics/trainer_card/83B5F6C.gbapal"
-
-gUnknown_083B5F8C:: @ 83B5F8C
- .incbin "graphics/trainer_card/83B5F8C_map.bin"
diff --git a/data/util.s b/data/util.s
deleted file mode 100644
index 03c92a988..000000000
--- a/data/util.s
+++ /dev/null
@@ -1,70 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gBitTable:: @ 820872C
- .4byte 0x00000001
- .4byte 0x00000002
- .4byte 0x00000004
- .4byte 0x00000008
- .4byte 0x00000010
- .4byte 0x00000020
- .4byte 0x00000040
- .4byte 0x00000080
- .4byte 0x00000100
- .4byte 0x00000200
- .4byte 0x00000400
- .4byte 0x00000800
- .4byte 0x00001000
- .4byte 0x00002000
- .4byte 0x00004000
- .4byte 0x00008000
- .4byte 0x00010000
- .4byte 0x00020000
- .4byte 0x00040000
- .4byte 0x00080000
- .4byte 0x00100000
- .4byte 0x00200000
- .4byte 0x00400000
- .4byte 0x00800000
- .4byte 0x01000000
- .4byte 0x02000000
- .4byte 0x04000000
- .4byte 0x08000000
- .4byte 0x10000000
- .4byte 0x20000000
- .4byte 0x40000000
- .4byte 0x80000000
-
- .align 2
-gInvisibleSpriteTemplate:: @ 82087AC
- spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteDimensions:: @ 82087C4
- @ square
- .byte 1, 1
- .byte 2, 2
- .byte 4, 4
- .byte 8, 8
-
- @ horizontal rectangle
- .byte 2, 1
- .byte 4, 1
- .byte 4, 2
- .byte 8, 4
-
- @ vertical rectangle
- .byte 1, 2
- .byte 1, 4
- .byte 2, 4
- .byte 4, 8
-
-@ 82087DC
- .include "data/crc16_table.inc"
-
- .align 2
-gMiscBlank_Gfx:: @ 82089DC
- .incbin "graphics/interface/blank.4bpp"
diff --git a/graphics-de/title_screen/logo_sapphire.pal b/graphics-de/title_screen/logo_sapphire.pal
new file mode 100644
index 000000000..7b74308af
--- /dev/null
+++ b/graphics-de/title_screen/logo_sapphire.pal
@@ -0,0 +1,227 @@
+JASC-PAL
+0100
+224
+0 0 0
+0 0 0
+246 222 24
+255 238 16
+255 246 24
+246 246 41
+246 246 246
+246 255 255
+255 246 246
+8 8 8
+16 8 8
+0 0 255
+246 222 32
+246 222 41
+255 238 41
+246 238 238
+255 255 16
+255 255 24
+255 255 246
+255 255 255
+246 238 32
+255 230 24
+246 230 41
+246 238 41
+255 238 49
+255 246 32
+255 246 41
+255 255 32
+255 255 41
+16 8 16
+24 16 16
+24 16 24
+24 24 16
+24 24 24
+32 24 24
+32 32 24
+24 24 32
+41 32 32
+41 41 32
+90 82 82
+222 180 16
+0 0 131
+8 8 131
+16 8 230
+16 8 238
+8 0 255
+24 0 246
+24 0 255
+24 8 246
+24 8 255
+8 16 246
+172 172 172
+189 180 189
+197 197 197
+213 213 213
+230 230 230
+246 230 24
+246 230 32
+255 238 24
+255 238 32
+246 230 49
+246 238 49
+16 16 16
+16 16 24
+32 24 32
+32 32 32
+24 24 41
+24 32 41
+32 24 41
+32 32 41
+24 32 57
+24 41 65
+32 32 57
+32 41 57
+24 41 74
+32 32 74
+0 0 115
+24 32 106
+41 32 41
+41 41 41
+49 41 49
+41 41 65
+41 32 82
+41 32 98
+41 41 82
+41 41 90
+41 32 106
+41 24 115
+41 41 115
+41 49 115
+57 49 49
+57 49 57
+57 57 49
+65 57 57
+65 57 65
+74 65 65
+74 65 74
+74 74 82
+90 82 90
+90 90 90
+106 98 98
+106 106 106
+123 98 115
+139 106 106
+180 139 57
+189 148 49
+172 131 65
+180 148 65
+205 164 32
+205 172 24
+197 164 41
+197 172 49
+123 123 123
+139 123 106
+164 123 82
+156 131 98
+172 139 82
+172 156 106
+189 172 98
+197 189 82
+213 172 24
+222 180 24
+213 189 32
+222 189 24
+230 205 24
+238 213 24
+213 180 41
+222 197 41
+213 189 49
+213 197 74
+230 213 41
+230 222 41
+213 213 65
+230 222 57
+8 8 197
+16 8 197
+32 8 205
+41 8 197
+16 8 213
+16 8 222
+24 8 213
+32 8 213
+41 8 213
+41 8 222
+49 8 213
+57 8 213
+24 0 238
+24 8 230
+32 0 230
+32 8 230
+41 0 230
+41 0 238
+41 8 230
+41 8 238
+49 0 230
+49 8 230
+57 0 238
+57 8 238
+8 8 246
+8 8 255
+16 0 246
+16 0 255
+16 8 246
+16 8 255
+32 0 246
+32 0 255
+32 8 246
+32 8 255
+41 0 246
+41 8 246
+49 0 246
+57 0 246
+8 16 131
+24 24 131
+16 24 148
+32 24 156
+41 24 131
+41 24 156
+41 41 131
+41 41 148
+16 16 180
+24 16 197
+24 24 180
+24 32 180
+41 16 172
+41 16 189
+41 24 180
+49 32 189
+8 16 222
+16 16 213
+8 24 222
+16 24 222
+24 16 238
+16 16 246
+41 16 213
+41 24 213
+57 24 213
+57 32 213
+32 16 230
+32 24 222
+57 24 222
+49 16 230
+90 65 164
+98 57 156
+98 74 156
+98 82 148
+115 82 131
+115 90 156
+123 106 148
+139 115 139
+82 49 180
+82 57 172
+98 65 172
+106 82 172
+74 32 189
+74 32 205
+82 49 189
+82 49 197
+123 131 131
+131 131 131
+139 131 131
+139 139 139
+156 131 131
+156 148 156
diff --git a/graphics-de/title_screen/pokemon_sapphire.png b/graphics-de/title_screen/pokemon_sapphire.png
new file mode 100644
index 000000000..2e451f746
--- /dev/null
+++ b/graphics-de/title_screen/pokemon_sapphire.png
Binary files differ
diff --git a/graphics-de/title_screen/sapphireversion.png b/graphics-de/title_screen/sapphireversion.png
new file mode 100644
index 000000000..3e3c31a09
--- /dev/null
+++ b/graphics-de/title_screen/sapphireversion.png
Binary files differ
diff --git a/graphics/pokenav/map_misc.pal b/graphics/pokenav/fly_target_icons.pal
index c0f2cc4e9..c0f2cc4e9 100644
--- a/graphics/pokenav/map_misc.pal
+++ b/graphics/pokenav/fly_target_icons.pal
diff --git a/graphics/pokenav/map_misc.png b/graphics/pokenav/fly_target_icons.png
index 7a997afc5..7a997afc5 100644
--- a/graphics/pokenav/map_misc.png
+++ b/graphics/pokenav/fly_target_icons.png
Binary files differ
diff --git a/graphics/pokenav/region_map.pal b/graphics/pokenav/region_map.pal
index 4fca67ade..78ffc009a 100644
--- a/graphics/pokenav/region_map.pal
+++ b/graphics/pokenav/region_map.pal
@@ -1,118 +1,6 @@
JASC-PAL
0100
-256
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
+32
0 0 0
156 213 255
164 180 255
@@ -145,115 +33,3 @@ JASC-PAL
0 0 0
0 0 0
0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
-0 0 0
diff --git a/include/battle.h b/include/battle.h
index d4cb53689..12faee537 100755..100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -21,101 +21,109 @@
#define AI_ACTION_DONE 0x0001
#define AI_ACTION_FLEE 0x0002
-#define AI_ACTION_WATCH 0x0004
-#define AI_ACTION_DO_NOT_ATTACK 0x0008
+#define AI_ACTION_WATCH 0x0004
+#define AI_ACTION_DO_NOT_ATTACK 0x0008
#define AI_ACTION_UNK5 0x0010
#define AI_ACTION_UNK6 0x0020
#define AI_ACTION_UNK7 0x0040
#define AI_ACTION_UNK8 0x0080
-#define STATUS_SLEEP 0x7
-#define STATUS_POISON 0x8
-#define STATUS_BURN 0x10
-#define STATUS_FREEZE 0x20
-#define STATUS_PARALYSIS 0x40
-#define STATUS_TOXIC_POISON 0x80
+#define STATUS_SLEEP 0x7
+#define STATUS_POISON 0x8
+#define STATUS_BURN 0x10
+#define STATUS_FREEZE 0x20
+#define STATUS_PARALYSIS 0x40
+#define STATUS_TOXIC_POISON 0x80
#define STATUS2_CONFUSION 0x00000007
#define STATUS2_UPROAR 0x00000070
+#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200
#define STATUS2_LOCK_CONFUSE 0x00000C00
#define STATUS2_MULTIPLETURNS 0x00001000
#define STATUS2_WRAPPED 0x0000E000
+#define STATUS2_INFATUATION 0x000F0000
#define STATUS2_FOCUS_ENERGY 0x00100000
#define STATUS2_TRANSFORMED 0x00200000
#define STATUS2_RECHARGE 0x00400000
#define STATUS2_RAGE 0x00800000
#define STATUS2_SUBSTITUTE 0x01000000
+#define STATUS2_DESTINY_BOND 0x02000000
#define STATUS2_ESCAPE_PREVENTION 0x04000000
#define STATUS2_NIGHTMARE 0x08000000
#define STATUS2_CURSED 0x10000000
#define STATUS2_FORESIGHT 0x20000000
+#define STATUS2_DEFENSE_CURL 0x40000000
+#define STATUS2_TORMENT 0x80000000
-#define STATUS3_LEECHSEED_RECEIVER 0x3 //two bits for the bank that gets hp
+#define STATUS3_LEECHSEED_BANK 0x3
#define STATUS3_LEECHSEED 0x4
#define STATUS3_ALWAYS_HITS 0x18 //two bits
#define STATUS3_PERISH_SONG 0x20
#define STATUS3_ON_AIR 0x40
#define STATUS3_UNDERGROUND 0x80
#define STATUS3_MINIMIZED 0x100
-#define STATUS3_CHARGED_UP 0x200
#define STATUS3_ROOTED 0x400
+#define STATUS3_CHARGED_UP 0x200
+#define STATUS3_YAWN 0x1800 //two bits
+#define STATUS3_IMPRISIONED 0x2000
#define STATUS3_GRUDGE 0x4000
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
#define STATUS3_MUDSPORT 0x10000
#define STATUS3_WATERSPORT 0x20000
#define STATUS3_UNDERWATER 0x40000
-#define HITMARKER_x20 0x0000020
-#define HITMARKER_DESTINYBOND 0x0000040
-#define HITMARKER_NO_ANIMATIONS 0x0000080
-#define HITMARKER_IGNORE_SUBSTITUTE 0x0000100
-#define HITMARKER_NO_ATTACKSTRING 0x0000200
-#define HITMARKER_ATTACKSTRING_PRINTED 0x0000400
-#define HITMARKER_NO_PPDEDUCT 0x0000800
-#define HITMARKER_IGNORE_SAFEGUARD 0x0002000
-#define HITMARKER_SYNCHRONISE_EFFECT 0x0004000
-#define HITMARKER_IGNORE_ON_AIR 0x0010000
-#define HITMARKER_IGNORE_UNDERGROUND 0x0020000
-#define HITMARKER_IGNORE_UNDERWATER 0x0040000
-#define HITMARKER_x80000 0x0080000
-#define HITMARKER_x100000 0x0100000
-#define HITMARKER_x400000 0x0400000
-#define HITMARKER_x800000 0x0800000
-#define HITMARKER_GRUDGE 0x1000000
-#define HITMARKER_OBEYS 0x2000000
+#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER))
+
+#define HITMARKER_x20 0x00000020
+#define HITMARKER_DESTINYBOND 0x00000040
+#define HITMARKER_NO_ANIMATIONS 0x00000080
+#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
+#define HITMARKER_NO_ATTACKSTRING 0x00000200
+#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
+#define HITMARKER_NO_PPDEDUCT 0x00000800
+#define HITMARKER_PURSUIT_TRAP 0x00001000
+#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
+#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
+#define HITMARKER_IGNORE_ON_AIR 0x00010000
+#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
+#define HITMARKER_IGNORE_UNDERWATER 0x00040000
+#define HITMARKER_x80000 0x00080000
+#define HITMARKER_x100000 0x00100000
+#define HITMARKER_x400000 0x00400000
+#define HITMARKER_x800000 0x00800000
+#define HITMARKER_GRUDGE 0x01000000
+#define HITMARKER_OBEYS 0x02000000
+#define HITMARKER_x8000000 0x08000000
#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
#define HITMARKER_UNK(bank) ((0x10000000 << bank))
+#define SIDE_STATUS_REFLECT (1 << 0)
+#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
+#define SIDE_STATUS_SPIKES (1 << 4)
+#define SIDE_STATUS_SAFEGUARD (1 << 5)
+#define SIDE_STATUS_FUTUREATTACK (1 << 6)
+#define SIDE_STATUS_MIST (1 << 8)
+#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
+
#define MAX_TRAINER_ITEMS 4
#define MAX_MON_MOVES 4
#define MAX_BANKS_BATTLE 4
-#define weather_rain 1
-#define weather_downpour 2
-#define weather_permament_rain 4
-#define WEATHER_RAINY ((weather_rain | weather_downpour | weather_permament_rain))
-
-#define weather_sandstorm 8
-#define weather_permament_sandstorm 0x10
-#define WEATHER_SANDSTORMY ((weather_sandstorm | weather_permament_sandstorm))
-
-#define weather_sun 0x20
-#define weather_permament_sun 0x40
-#define WEATHER_SUNNY ((weather_sun | weather_permament_sun))
-
-#define weather_hail 0x80
+#define WEATHER_RAIN_TEMPORARY (1 << 0)
+#define WEATHER_RAIN_DOWNPOUR (1 << 1)
+#define WEATHER_RAIN_PERMANENT (1 << 2)
+#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT))
+#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
+#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
+#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT))
+#define WEATHER_SUN_TEMPORARY (1 << 5)
+#define WEATHER_SUN_PERMANENT (1 << 6)
+#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))
+#define WEATHER_HAIL (1 << 7)
// needed to match the hack that is get_item, thanks cam, someone else clean this up later.
extern u8 unk_2000000[];
-enum
-{
- WEATHER_SUN,
- WEATHER_RAIN,
- WEATHER_SANDSTORM,
- WEATHER_HAIL,
-};
-
struct Trainer
{
/*0x00*/ u8 partyFlags;
@@ -165,31 +173,28 @@ struct BattleStruct /* 0x2000000 */
/*0x15DDE*/ u8 unk15DDE;
/*0x15DDF*/ u8 unk15DDF;
/*0x15DE0*/ u8 filler15DE0[0x222];
- /*0x16002*/ u8 AnimTurn;
- /*0x16003*/ u8 ScriptingActive;
- /*0x16004*/ u8 WrappedMove1[4];
- /*0x16008*/ u8 WrappedMove2[4];
+ /*0x16002*/ u8 animTurn;
+ /*0x16003*/ u8 scriptingActive;
+ /*0x16004*/ u8 wrappedMove1[4];
+ /*0x16008*/ u8 wrappedMove2[4];
/*0x1600C*/ u8 cmd49StateTracker;
/*0x1600D*/ u8 unk1600D;
/*0x1600E*/ u8 unk1600E;
- /*0x1600F*/ u8 atk23StateTracker;
- /*0x16010*/ u8 unk16010;
- /*0x16011*/ u8 unk16011;
- /*0x16012*/ u8 unk16012;
- /*0x16013*/ u8 unk16013;
+ /*0x1600F*/ u8 cmd23StateTracker;
+ /*0x16010*/ u8 moveTarget[4];
/*0x16014*/ u8 unk16014;
/*0x16015*/ u8 unk16015;
/*0x16016*/ u8 unk16016;
/*0x16017*/ u8 unk16017;
/*0x16018*/ u8 expGetterID;
/*0x16019*/ u8 unk16019;
- /*0x1601A*/ u8 unk1601A;
+ /*0x1601A*/ u8 atk5A_StateTracker; //also atk5B, statetracker
/*0x1601B*/ u8 wildVictorySong;
- /*0x1601C*/ u8 DynamicMoveType;
+ /*0x1601C*/ u8 dynamicMoveType;
/*0x1601D*/ u8 unk1601D;
/*0x1601E*/ u8 statChanger;
- /*0x1601F*/ u8 DmgMultiplier;
- /*0x16020*/ u8 WrappedBy[4];
+ /*0x1601F*/ u8 dmgMultiplier;
+ /*0x16020*/ u8 wrappedBy[4];
/*0x16024*/ u8 unk16024;
/*0x16025*/ u8 unk16025;
/*0x16026*/ u8 unk16026;
@@ -240,7 +245,7 @@ struct BattleStruct /* 0x2000000 */
/*0x16053*/ u8 unk16053;
/*0x16054*/ u8 unk16054;
/*0x16055*/ u8 unk16055;
- /*0x16056*/ u8 unk16056;
+ /*0x16056*/ u8 moneyMultiplier;
/*0x16057*/ u8 unk16057;
/*0x16058*/ u8 unk16058;
/*0x16059*/ u8 unk16059;
@@ -250,38 +255,11 @@ struct BattleStruct /* 0x2000000 */
/*0x1605E*/ u8 unk1605E;
/*0x1605F*/ u8 sentInPokes;
/*0x16060*/ u8 unk16060[4];
- /*0x16064*/ u8 unk16064;
- /*0x16065*/ u8 unk16065;
- /*0x16066*/ u8 unk16066;
- /*0x16067*/ u8 unk16067;
- /*0x16068*/ u8 unk16068;
- /*0x16069*/ u8 unk16069;
- /*0x1606A*/ u8 unk1606A;
- /*0x1606B*/ u8 unk1606B;
- /*0x1606C*/ u8 unk1606C;
- /*0x1606D*/ u8 unk1606D;
- /*0x1606E*/ u8 unk1606E;
- /*0x1606F*/ u8 unk1606F;
- /*0x16070*/ u8 unk16070;
- /*0x16071*/ u8 unk16071;
- /*0x16072*/ u8 unk16072;
- /*0x16073*/ u8 unk16073;
- /*0x16074*/ u8 unk16074;
- /*0x16075*/ u8 unk16075;
- /*0x16076*/ u8 unk16076;
- /*0x16077*/ u8 unk16077;
+ /*0x16064*/ u8 unk16064[4];
+ /*0x16068*/ u8 unk16068[4];
+ /*0x1606C*/ u8 unk1606C[4][3];
/*0x16078*/ u8 unk16078;
- /*0x16079*/ u8 unk16079;
- /*0x1607A*/ u8 unk1607A;
- /*0x1607B*/ u8 unk1607B;
- /*0x1607C*/ u8 unk1607C;
- /*0x1607D*/ u8 unk1607D;
- /*0x1607E*/ u8 unk1607E;
- /*0x1607F*/ u8 unk1607F;
- /*0x16080*/ u8 unk16080;
- /*0x16081*/ u8 unk16081;
- /*0x16082*/ u8 unk16082;
- /*0x16083*/ u8 unk16083;
+ /*0x16079*/ u8 caughtNick[11];
/*0x16084*/ u8 unk16084;
/*0x16085*/ u8 unk16085;
/*0x16086*/ u8 unk16086;
@@ -302,17 +280,17 @@ struct BattleStruct /* 0x2000000 */
/*0x16098*/ u8 unk16098;
/*0x16099*/ u8 unk16099;
/*0x1609A*/ u8 unk1609a;
- /*0x1609B*/ u8 unk1609b;
- /*0x1609C*/ u8 unk1609C;
+ /*0x1609B*/ u8 castformToChangeInto;
+ /*0x1609C*/ u8 atk6C_statetracker;
/*0x1609D*/ u8 unk1609D;
/*0x1609E*/ u8 unk1609E;
/*0x1609F*/ u8 unk1609F;
/*0x160A0*/ u8 unk160a0;
- /*0x160A1*/ u8 AnimTargetsHit;
+ /*0x160A1*/ u8 animTargetsHit;
/*0x160A2*/ u8 expGetterBank;
/*0x160A3*/ u8 unk160A3;
- /*0x160A4*/ u8 AnimArg1;
- /*0x160A5*/ u8 AnimArg2;
+ /*0x160A4*/ u8 animArg1;
+ /*0x160A5*/ u8 animArg2;
/*0x160A6*/ u8 unk160A6;
/*0x160A7*/ u8 unk160A7;
/*0x160A8*/ u8 unk160A8;
@@ -335,12 +313,9 @@ struct BattleStruct /* 0x2000000 */
/*0x160B9*/ u8 unk160B9;
/*0x160BA*/ u8 unk160Ba;
/*0x160BB*/ u8 unk160Bb;
- /*0x160BC*/ u8 unk160BC;
- /*0x160BD*/ u8 unk160BD;
- /*0x160BE*/ u8 unk160BE;
- /*0x160BF*/ u8 unk160BF;
+ /*0x160BC*/ u16 HP_OnSwitchout[2];
/*0x160C0*/ u8 unk160C0;
- /*0x160C1*/ u8 unk160C1;
+ /*0x160C1*/ u8 hpScale;
/*0x160C2*/ u8 unk160C2;
/*0x160C3*/ u8 unk160C3;
/*0x160C4*/ u8 unk160C4;
@@ -349,59 +324,70 @@ struct BattleStruct /* 0x2000000 */
/*0x160C7*/ u8 unk160C7;
/*0x160C8*/ u8 unk160C8;
/*0x160C9*/ u8 unk160C9;
- /*0x160CA*/ u8 SynchroniseEffect;
+ /*0x160CA*/ u8 synchroniseEffect;
/*0x160CB*/ u8 linkPlayerIndex;
- /*0x160CC*/ u16 UsedHeldItems[4];
+ /*0x160CC*/ u16 usedHeldItems[4];
u8 filler2[0x72E];
/* 0x16A00 */ struct UnkBattleStruct1 unk_2016A00_2;
};
struct DisableStruct
{
- /*0x00*/ u8 filler0[0x3];
- /*0x04*/ u16 DisabledMove;
- /*0x06*/ u16 EncoredMove;
- /*0x08*/ u8 ProtectUses;
- /*0x09*/ u8 StockpileCounter;
- /*0x0A*/ u8 SubstituteHP;
- u8 fillerB[4];
- u8 unkF_0:4;
- u8 unkF_4:4;
- u8 filler10[3];
- /*0x13*/ u8 taunt:4;
- /*0x13*/ u8 unkC:4;
- /*0x14*/ u8 BankPreventingEscape;
- /*0x15*/ u8 BankWithSureHit;
- /*0x16*/ u8 IsFirstTurn;
+ /*0x00*/ u32 unk0;
+ /*0x04*/ u16 disabledMove;
+ /*0x06*/ u16 encoredMove;
+ /*0x08*/ u8 protectUses;
+ /*0x09*/ u8 stockpileCounter;
+ /*0x0A*/ u8 substituteHP;
+ /*0x0B*/ u8 disableTimer1 : 4;
+ /*0x0B*/ u8 disableTimer2 : 4;
+ /*0x0C*/ u8 encoredMovePos;
+ /*0x0D*/ u8 unkD;
+ /*0x0E*/ u8 encoreTimer1 : 4;
+ /*0x0E*/ u8 encoreTimer2 : 4;
+ /*0x0F*/ u8 perishSong1 : 4;
+ /*0x0F*/ u8 perishSong2 : 4;
+ /*0x10*/ u8 furyCutterCounter;
+ /*0x11*/ u8 rolloutTimer1 : 4;
+ /*0x11*/ u8 rolloutTimer2 : 4;
+ /*0x12*/ u8 chargeTimer1 : 4;
+ /*0x12*/ u8 chargeTimer2 : 4;
+ /*0x13*/ u8 tauntTimer1:4;
+ /*0x13*/ u8 tauntTimer2:4;
+ /*0x14*/ u8 bankPreventingEscape;
+ /*0x15*/ u8 bankWithSureHit;
+ /*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
- /*0x18*/ u8 TruantCounter;
- /*0x19*/ u8 RechargeCounter;
+ /*0x18*/ u8 truantCounter : 1;
+ /*0x18*/ u8 unk18_a : 3;
+ /*0x18*/ u8 unk18_b : 4;
+ /*0x19*/ u8 rechargeCounter;
/*0x1A*/ u8 unk1A[2];
};
struct BattleResults
{
- u8 PlayerFaintCounter; // 0x0
- u8 OpponentFaintCounter; // 0x1
+ u8 playerFaintCounter; // 0x0
+ u8 opponentFaintCounter; // 0x1
u8 unk2; // 0x2
u8 unk3; // 0x3
u8 unk4; // 0x4
u8 unk5_0:1; // 0x5
u8 unk5_1:1; // 0x5
- u16 Poke1Species; // 0x6
- u8 PokeString1[10]; // 0x8
+ u16 poke1Species; // 0x6
+ u8 pokeString1[10]; // 0x8
u8 unk12;
- u8 BattleTurnCounter; // 0x13
- u8 PokeString2[10]; // 0x14
+ u8 battleTurnCounter; // 0x13
+ u8 pokeString2[10]; // 0x14
u8 filler1E[2];
- u16 LastOpponentSpecies; // 0x20
- u16 LastUsedMove; // 0x22
- u16 OpponentMove; // 0x24
- u16 OpponentSpecies; // 0x26
- u16 CaughtPoke; // 0x28
- u8 CaughtNick[10]; // 0x2A
+ u16 lastOpponentSpecies; // 0x20
+ u16 lastUsedMove; // 0x22
+ u16 opponentMove; // 0x24
+ u16 opponentSpecies; // 0x26
+ u16 caughtPoke; // 0x28
+ u8 caughtNick[10]; // 0x2A
u8 filler34[2];
- u8 unk36[10];
+ u8 unk36[10]; // usedBalls?
};
struct Struct2017800
@@ -454,34 +440,34 @@ struct Struct20238C8
struct ProtectStruct
{
/*field0*/
- u32 Protected:1;
- u32 Endured:1;
- u32 OnlyStruggle:1;
- u32 HelpingHand:1;
- u32 BounceMove:1;
- u32 StealMove:1;
- u32 Flag0Unknown:1;
- u32 PrlzImmobility:1;
+ u32 protected:1;
+ u32 endured:1;
+ u32 onlyStruggle:1;
+ u32 helpingHand:1;
+ u32 bounceMove:1;
+ u32 stealMove:1;
+ u32 flag0Unknown:1;
+ u32 prlzImmobility:1;
/*field1*/
- u32 ConfusionSelfDmg:1;
- u32 NotEffective:1;
- u32 ChargingTurn:1;
- u32 FleeFlag:2; //for RunAway and Smoke Ball
- u32 UsedImprisionedMove:1;
- u32 LoveImmobility:1;
- u32 UsedDisabledMove:1;
+ u32 confusionSelfDmg:1;
+ u32 notEffective:1;
+ u32 chargingTurn:1;
+ u32 fleeFlag:2; //for RunAway and Smoke Ball
+ u32 usedImprisionedMove:1;
+ u32 loveImmobility:1;
+ u32 usedDisabledMove:1;
/*field2*/
- u32 UsedTauntedMove:1;
- u32 Flag2Unknown:1;
- u32 FlinchImmobility:1;
- u32 NotFirstStrike:1;
- u32 Free : 4;
+ u32 usedTauntedMove:1;
+ u32 flag2Unknown:1;
+ u32 flinchImmobility:1;
+ u32 notFirstStrike:1;
+ u32 free : 4;
/*field3*/
u32 field3 : 8;
- u32 PhysicalDmg;
- u32 SpecialDmg;
- u8 PhysicalBank;
- u8 SpecialBank;
+ u32 physicalDmg;
+ u32 specialDmg;
+ u8 physicalBank;
+ u8 specialBank;
u16 fieldE;
};
@@ -497,7 +483,7 @@ struct SpecialStatus
u8 focusBanded : 1;
u8 field1[3];
u32 moveturnLostHP;
- u32 moveturnlostHP_physical;
+ u32 moveturnLostHP_physical;
u32 moveturnLostHP_special;
u8 moveturnPhysicalBank;
u8 moveturnSpecialBank;
@@ -507,18 +493,18 @@ struct SpecialStatus
struct sideTimer
{
- u8 reflectTimer;
- u8 reflectBank;
- u8 lightscreenTimer;
- u8 lightscreenBank;
- u8 mistTimer;
- u8 mistBank;
- u8 safeguardTimer;
- u8 safeguardBank;
- u8 followmeTimer;
- u8 followmeTarget;
- u8 spikesAmount;
- u8 fieldB;
+ u8 reflectTimer; //0x0
+ u8 lightscreenTimer; //0x1
+ u8 mistTimer; //0x2
+ u8 field3; //0x3
+ u8 field4; //0x4
+ u8 field5; //0x5
+ u8 spikesAmount; //0x6
+ u8 safeguardTimer; //0x7
+ u8 followmeTimer; //0x8
+ u8 followmeTarget; //0x9
+ u8 fieldA; //0xA
+ u8 fieldB; //0xB
};
struct WishFutureKnock
@@ -528,7 +514,7 @@ struct WishFutureKnock
s32 futureSightDmg[MAX_BANKS_BATTLE];
u16 futureSightMove[MAX_BANKS_BATTLE];
u8 wishCounter[MAX_BANKS_BATTLE];
- u8 wishUserBank[MAX_BANKS_BATTLE];
+ u8 wishUserID[MAX_BANKS_BATTLE];
u8 weatherDuration;
u8 knockedOffPokes[2];
};
@@ -551,10 +537,62 @@ extern u8 ewram[];
#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00))
#define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00))
#define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC))
+#define B_FUNCTION_STACK ((struct funcStack *) (ewram + 0x17140))
#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800))
#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810))
#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840))
+struct funcStack
+{
+ void* ptr[8];
+ u8 size;
+};
+
+extern u8 gBattleTextBuff1[];
+
+//function declarations of buffer emits
+void EmitGetAttributes(u8 buffID, u8 request, u8 c); //0x0
+void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c); //0x1
+void EmitSetAttributes(u8 a, u8 request, u8 c, u8 bytes, void *data); //0x2
+void EmitSwitchInAnim(u8 a, u8 b, u8 c); //0x5
+void EmitReturnPokeToBall(u8 a, u8 b); //0x6
+void EmitTrainerSlide(u8 a); //0x8
+void EmitFaintAnimation(u8 a); //0xA
+void EmitBallThrowAnim(u8 a, u8 shakes); //0xD
+//void EmitMoveAnimation(u8 a, u16 move, u8 turn, u16 power, s32 dmg, u8 happiness, void *disable_struct); //0xF
+void EmitPrintString(u8 a, u16 stringID); //0x10
+//void EmitPrintStringPlayerOnly(u8 a, u16 stringID); //0x11
+void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); //0x16
+//void EmitHealthBarUpdate(u8 a, u16 b); //0x18; Had to declare the second arg as u16 because s16 wont match in atk0b
+//void EmitExpBarUpdate(u8 a, u8 b, u16 c); //0x19
+void EmitStatusIconUpdate(u8 a, u32 b, u32 c); //0x1A
+void EmitStatusAnimation(u8 a, u8 b, u32 c); //0x1B
+void EmitStatusXor(u8 a, u8 b); //0x1C
+void EmitHitAnimation(u8 a); //0x29
+void EmitEffectivenessSound(u8 a, u16 sound); //0x2B
+void EmitPlaySound(u8 a, u16 sound); //0x2C
+void EmitFaintingCry(u8 a); //0x2D
+void EmitBattleIntroSlide(u8 a, u8 b); //0x2E
+void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); //0x30
+void dp01_build_cmdbuf_x31_31_31_31(u8 a); //0x31
+void EmitSpriteInvisibility(u8 a, u8 b); //0x33
+void EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34
+void EmitResetActionMoveSelection(u8 a, u8 b); //0x36
+void dp01_build_cmdbuf_x37_a(u8 a, u8 b); //0x37
+
+#define REQUEST_ALL_BATTLE 0x0
+#define REQUEST_SPECIES_BATTLE 0x1
+#define REQUEST_HELDITEM_BATTLE 0x2
+#define REQUEST_MOVES_PP_BATTLE 0x3
+#define REQUEST_PPMOVE1_BATTLE 0x9
+#define REQUEST_PPMOVE2_BATTLE 0xA
+#define REQUEST_PPMOVE3_BATTLE 0xB
+#define REQUEST_PPMOVE4_BATTLE 0xC
+#define REQUEST_STATUS_BATTLE 0x28
+#define REQUEST_HP_BATTLE 0x2A
+
+void MarkBufferBankForExecution(u8 bank);
+
extern u8 gBattleTextBuff1[];
// asm/battle_1.o
@@ -611,7 +649,6 @@ u8 b_first_side(u8, u8, u8);
void TurnValuesCleanUp(u8);
void SpecialStatusesClear(void);
void sub_80138F0(void);
-void MarkBufferBankForExecution();
void sub_80155A4();
void CancelMultiTurnMoves(u8);
void PrepareStringBattle();
@@ -625,11 +662,11 @@ u8 TurnBasedEffects();
u8 sub_80170DC();
u8 sub_80173A4();
u8 AbilityBattleEffects(u8, u8, u8, u8, u16);
-u8 sub_801A02C();
+u8 ItemBattleEffects();
// asm/battle_4.o
void AI_CalcDmg(u8, u8);
-void TypeCalc(u16, u8, u8);
+u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def);
// asm/battle_5.o
void nullsub_91(void);
diff --git a/include/battle_ai.h b/include/battle_ai.h
index 028da2c27..2922da0b3 100644
--- a/include/battle_ai.h
+++ b/include/battle_ai.h
@@ -23,6 +23,7 @@ enum
// battle_ai
void BattleAI_SetupAIData(void);
+u8 BattleAI_GetAIActionToUse(void);
void BattleAI_DoAIProcessing(void);
void sub_810745C(void);
void AIStackPushVar(u8 *);
diff --git a/include/battle_records.h b/include/battle_records.h
index f0c1a101b..ac6c3cbdb 100644
--- a/include/battle_records.h
+++ b/include/battle_records.h
@@ -2,7 +2,8 @@
#define GUARD_BATTLE_RECORDS_H
void InitLinkBattleRecords(void);
-void PrintLinkBattleWinsLossesDraws(void *);
-void PrintLinkBattleRecord(void *, u8);
+void UpdateLinkBattleRecords(int id);
+void ShowLinkBattleRecords(void);
+void ShowBattleTowerRecords(void);
#endif // GUARD_BATTLE_RECORDS_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
index ad1cecfed..48ab95fbc 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -49,11 +49,6 @@ struct ContestEntry
/*0x16*/ u8 trainer_name[OT_NAME_LENGTH];
};
-struct Unk3000756
-{
- /*0x00*/ u8 var_0;
-};
-
struct LabelPair
{
const u8 *prefix;
diff --git a/include/decoration.h b/include/decoration.h
index 7a6d8ef5a..2e72e305a 100755..100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -289,16 +289,6 @@ extern u8 sub_8134194(u8); // src/decoration_inventory
extern bool8 sub_81341D4(void); // src/decoration_inventory
extern void sub_8134104(u8); // src/decoration_inventory
extern bool8 sub_807D770(void);
-extern void sub_80F944C(void); // src/menu_helpers
-extern void sub_80F9480(u8 *, u8); // src/menu_helpers
-extern void sub_80F94A4(u8, u8 *, u8, s16); // src/menu_helpers
-extern void sub_80F94F8(u8 *); // src/menu_helpers
-extern void sub_80F9520(u8 *, u8); // src/menu_helpers
-extern void DestroyVerticalScrollIndicator(u8); // src/menu_helpers
-extern void CreateVerticalScrollIndicators(u8, u8, u8); // src/menu_helpers
-extern void LoadScrollIndicatorPalette(void); // src/menu_helpers
-extern void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); // src/menu_helpers
-extern void BuyMenuFreeMemory(void); // src/menu_helpers
extern void sub_8109DAC(u8); // src/trader
extern void ReshowPlayerPC(u8); // src/player_pc
@@ -310,6 +300,8 @@ void sub_80FE5AC(u8);
void sub_80FE604(u8);
void sub_80FE728(u8);
void sub_80FE758(u8);
+void sub_80FE7A8(u8);
+void sub_80FE7D4(u8 *, u8);
void sub_80FE868(u8);
void sub_80FE948(u8);
void sub_80FEABC(u8, u8);
@@ -317,6 +309,7 @@ void sub_80FEC94(u8);
void sub_80FECB8(u8);
void sub_80FECE0(u8);
void sub_80FEF50(u8);
+bool8 sub_80FEFA4(void);
void sub_80FF394(u16, u16, u16);
void sub_80FF6AC(u8);
void sub_80FF960(u8);
diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h
index afc354237..e59a23008 100644
--- a/include/decoration_inventory.h
+++ b/include/decoration_inventory.h
@@ -2,9 +2,11 @@
#define GUARD_DECORATION_INVENTORY_H
void ClearDecorationInventories(void);
+s8 sub_8133F9C(u8);
u8 sub_8133FE4(u8);
u8 IsThereStorageSpaceForDecoration(u8);
u8 sub_8134074(u8);
s8 sub_81340A8(u8);
+u8 sub_8134194(u8);
#endif // GUARD_DECORATION_INVENTORY_H
diff --git a/include/event_data.h b/include/event_data.h
index 5cac27cc8..98e4a6da3 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -25,4 +25,20 @@ u8 FlagSet(u16 id);
u8 FlagReset(u16 id);
bool8 FlagGet(u16 id);
+extern u16 gSpecialVar_0x8000;
+extern u16 gSpecialVar_0x8001;
+extern u16 gSpecialVar_0x8002;
+extern u16 gSpecialVar_0x8003;
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+extern u16 gSpecialVar_0x8007;
+extern u16 gSpecialVar_0x8008;
+extern u16 gSpecialVar_0x8009;
+extern u16 gSpecialVar_0x800A;
+extern u16 gSpecialVar_0x800B;
+extern u16 gScriptResult;
+extern u16 gScriptLastTalked;
+extern u16 gScriptFacing;
+
#endif // GUARD_EVENT_DATA_H
diff --git a/include/field_effect.h b/include/field_effect.h
index cd84652b1..ea02c4131 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -109,6 +109,8 @@ void SpriteCB_PokeballGlow(struct Sprite *);
void SpriteCB_PokecenterMonitor(struct Sprite *);
void SpriteCB_HallOfFameMonitor(struct Sprite *);
+void sub_80865BC(void);
+
void PokecenterHealEffect_0(struct Task *);
void PokecenterHealEffect_1(struct Task *);
void PokecenterHealEffect_2(struct Task *);
@@ -128,6 +130,8 @@ void PokeballGlowEffect_5(struct Sprite *);
void PokeballGlowEffect_6(struct Sprite *);
void PokeballGlowEffect_7(struct Sprite *);
+void sub_8086748(void);
+
bool8 sub_80867AC(struct Task *);
bool8 sub_8086854(struct Task *);
bool8 sub_8086870(struct Task *);
@@ -136,6 +140,8 @@ bool8 sub_808699C(struct Task *);
bool8 sub_80869B8(struct Task *);
bool8 sub_80869F8(struct Task *);
+void sub_8086A2C(u8, u8);
+
bool8 sub_8086AA0(struct Task *);
bool8 sub_8086AC0(struct Task *);
bool8 sub_8086B30(struct Task *);
@@ -161,6 +167,8 @@ bool8 sub_8087124(struct Task *);
bool8 dive_2_unknown(struct Task *);
bool8 dive_3_unknown(struct Task *);
+void sub_80871B8(u8);
+
bool8 sub_808722C(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087264(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087298(struct Task *, struct MapObject *, struct Sprite *);
@@ -173,6 +181,8 @@ bool8 sub_80874FC(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087548(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_808759C(struct Task *, struct MapObject *, struct Sprite *);
+void sub_8087654(u8);
+
bool8 sub_80876C8(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_80876F8(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087774(struct Task *, struct MapObject *, struct Sprite *);
@@ -243,4 +253,6 @@ void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
void sub_80878A8(void);
void sub_8087BA8(void);
+extern u32 gUnknown_0202FF84[8];
+
#endif // GUARD_FIELD_EFFECT_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index 764adfc9a..111dc92a6 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -16,7 +16,7 @@ void sub_8080B60(void);
void atk17_seteffectuser(void);
void sub_8080E28(void);
void sub_8080E44(void);
-int sub_8080E70(void);
+bool32 sub_8080E70(void);
void sub_8080E88(void);
void sub_8080E88();
void sp13E_warp_to_last_warp(void);
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 6595a51ca..d2a1a9b1f 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -70,8 +70,6 @@ extern struct CameraSomething gUnknown_03004880;
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
-extern u32 gUnknown_0202FF84[];
-
extern const struct Coords16 gDirectionToVector[];
void FieldObjectCB_BerryTree(struct Sprite *);
diff --git a/include/field_special_scene.h b/include/field_special_scene.h
index ef3f07120..d674f09df 100644
--- a/include/field_special_scene.h
+++ b/include/field_special_scene.h
@@ -9,5 +9,6 @@ void Task_Truck3(u8 taskId);
void Task_HandleTruckSequence(u8 taskId);
void ExecuteTruckSequence(void);
void EndTruckSequence(u8);
+void sub_80C791C(void);
#endif // GUARD_FIELD_SPECIAL_SCENE_H
diff --git a/include/field_specials.h b/include/field_specials.h
index 710f0a2a0..d61aa3b20 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -8,11 +8,6 @@ struct ElevatorMenu {
u8 var3;
};
-extern struct ElevatorMenu gUnknown_03000760[20];
-extern struct WarpData gUnknown_020297F0;
-extern u8 gBattleOutcome;
-
-extern u16 gScriptResult;
extern u8 gUnknown_02039250;
extern u8 gUnknown_02039251;
extern u32 gUnknown_02039254;
@@ -22,9 +17,6 @@ extern u8 gUnknown_0203925A;
extern u8 gUnknown_0203925B;
extern u8 gUnknown_0203925C;
-extern u16 gSpecialVar_0x8004;
-extern u16 gSpecialVar_0x8005;
-
void ResetCyclingRoadChallengeData(void);
bool32 CountSSTidalStep(u16);
u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *);
diff --git a/include/flags.h b/include/flags.h
index 0e408a833..a60de6ea0 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -22,6 +22,24 @@
#define BADGE07_GET 0x80D
#define BADGE08_GET 0x80E
+// cities and towns
+#define FLAG_VISITED_LITTLEROOT_TOWN 0x80F
+#define FLAG_VISITED_OLDALE_TOWN 0x810
+#define FLAG_VISITED_DEWFORD_TOWN 0x811
+#define FLAG_VISITED_LAVARIDGE_TOWN 0x812
+#define FLAG_VISITED_FALLARBOR_TOWN 0x813
+#define FLAG_VISITED_VERDANTURF_TOWN 0x814
+#define FLAG_VISITED_PACIFIDLOG_TOWN 0x815
+#define FLAG_VISITED_PETALBURG_CITY 0x816
+#define FLAG_VISITED_SLATEPORT_CITY 0x817
+#define FLAG_VISITED_MAUVILLE_CITY 0x818
+#define FLAG_VISITED_RUSTBORO_CITY 0x819
+#define FLAG_VISITED_FORTREE_CITY 0x81A
+#define FLAG_VISITED_LILYCOVE_CITY 0x81B
+#define FLAG_VISITED_MOSSDEEP_CITY 0x81C
+#define FLAG_VISITED_SOOTOPOLIS_CITY 0x81D
+#define FLAG_VISITED_EVER_GRANDE_CITY 0x81E
+
#define SYS_USE_FLASH 0x828
#define SYS_USE_STRENGTH 0x829
#define SYS_WEATHER_CTRL 0x82A
@@ -42,6 +60,9 @@
#define SYS_SHOAL_TIDE 0x83A
#define SYS_RIBBON_GET 0x83B
+#define FLAG_UNLOCK_BATTLE_TOWER 0x848
+#define FLAG_UNLOCK_SOUTHERN_ISLAND 0x849
+
#define SYS_PC_LANETTE 0x84B
#define SYS_EXDATA_ENABLE 0x84C
#define SYS_ENC_UP_ITEM 0x84D
@@ -50,6 +71,9 @@
#define SYS_BRAILLE_STRENGTH 0x850
#define SYS_BRAILLE_WAIT 0x851
#define SYS_BRAILLE_FLY 0x852
+#define SYS_HAS_EON_TICKET 0x853
+
+#define SYS_POKEMON_LEAGUE_FLY 0x854
#define SYS_TV_LATI 0x85D
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 7589de029..4029132e8 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -166,7 +166,7 @@ struct MapHeader
/* 0x0C */ struct MapConnections *connections;
/* 0x10 */ u16 music;
/* 0x12 */ u16 mapDataId;
- /* 0x14 */ u8 name;
+ /* 0x14 */ u8 regionMapSectionId;
/* 0x15 */ u8 cave;
/* 0x16 */ u8 weather;
/* 0x17 */ u8 mapType;
diff --git a/include/global.h b/include/global.h
index 4d20ea4fc..f076274cc 100644
--- a/include/global.h
+++ b/include/global.h
@@ -469,10 +469,20 @@ struct UnkMauvilleOldManStruct2
u8 fillerF[0x2];
}; /*size = 0x2C*/
+struct MauvilleOldManTrader
+{
+ u8 unk0;
+ u8 unk1[4];
+ u8 unk5[4][11];
+ u8 unk31;
+};
+
typedef union OldMan
{
struct UnkMauvilleOldManStruct oldMan1;
struct UnkMauvilleOldManStruct2 oldMan2;
+ struct MauvilleOldManTrader trader;
+ u8 filler[0x40];
} OldMan;
struct Unk_SB_Access_Struct1
@@ -526,7 +536,9 @@ struct GabbyAndTyData
struct RecordMixing_UnknownStructSub
{
- u8 data[0x38];
+ u32 unk0;
+ u8 data[0x34];
+ //u8 data[0x38];
};
struct RecordMixing_UnknownStruct
@@ -536,6 +548,29 @@ struct RecordMixing_UnknownStruct
u16 unk74[0x2];
};
+struct LinkBattleRecord
+{
+ u8 name[8];
+ u16 trainerId;
+ u16 wins;
+ u16 losses;
+ u16 draws;
+};
+
+struct RecordMixingGiftData
+{
+ u8 unk0;
+ u8 quantity;
+ u16 itemId;
+ u8 filler4[8];
+};
+
+struct RecordMixingGift
+{
+ int checksum;
+ struct RecordMixingGiftData data;
+};
+
struct SaveBlock1 /* 0x02025734 */
{
/*0x00*/ struct Coords16 pos;
@@ -606,7 +641,6 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2D8C*/ u8 unk2D8C[4];
/*0x2D90*/ u8 filler_2D90[0x4];
/*0x2D94*/ OldMan oldMan;
- /*0x2DC0*/ u8 unk_2DC0[0x14];
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2DFC*/ u8 filler_2DFC[0x8];
/*0x2E04*/ SB_Struct sbStruct;
@@ -615,14 +649,14 @@ struct SaveBlock1 /* 0x02025734 */
/*0x30AC*/ u8 filler_30B4[0x2];
/*0x30B6*/ u8 filler_30B6;
/*0x30B7*/ u8 filler_30B7[1];
- /*0x30B8*/ u8 linkBattleRecords[5][16];
+ /*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5];
/*0x3108*/ u8 filler_3108[8];
/*0x3110*/ u8 giftRibbons[7];
/*0x3117*/ u8 filler_311B[0x2D];
/*0x3144*/ struct Roamer roamer;
/*0x3160*/ struct EnigmaBerry enigmaBerry;
/*0x3690*/ struct RamScript ramScript;
- /*0x3A7C*/ u8 filler_3A7C[0x10];
+ /*0x3A7C*/ struct RecordMixingGift recordMixingGift;
/*0x3A8C*/ u8 unk3A8C[52]; //pokedex related
};
@@ -654,19 +688,20 @@ struct SaveBlock2_Sub
/*0x0000, 0x00A8*/ u8 filler_000[0x3D8];
/*0x03D8, 0x0480*/ u16 var_480;
/*0x03DA, 0x0482*/ u16 var_482;
- /*0x03DC, 0x0484*/ u8 filler_3DC[0xD0];
+ /*0x03DC, 0x0484*/ u8 filler_3DC[0x14];
+ /*0x03F0, 0x0498*/ u8 ereaderTrainer[0xBC];
/*0x04AC, 0x0554*/ u8 var_4AC;
/*0x04AD, 0x0555*/ u8 var_4AD;
- /*0x04AE, 0x0556*/ u8 var_4AE;
- /*0x04AF, 0x0557*/ u8 var_4AF;
+ /*0x04AE, 0x0556*/ u8 var_4AE[2];
/*0x04B0, 0x0558*/ u16 var_4B0;
/*0x04B2, 0x055A*/ u16 var_4B2;
/*0x04B4, 0x055C*/ u16 var_4B4;
/*0x04B6, 0x055E*/ u16 var_4B6;
- /*0x04B8, 0x0560*/ u8 filler_4B8[0x10];
+ /*0x04B8, 0x0560*/ u16 recordWinStreak[2];
+ /*0x04BC, 0x0564*/ u8 filler_4BC[0xC];
/*0x04C8, 0x0570*/ u16 var_4C8;
/*0x04CA, 0x0572*/ u16 var_4CA;
- /*0x04CC, 0x0574*/ u8 filler_4CC[4];
+ /*0x04CC, 0x0574*/ u16 winStreak[2];
/*0x04D0, 0x0578*/ u8 var_4D0;
/*0x04D1, 0x0579*/ u8 filler_4D1[0x317];
};
diff --git a/include/graphics.h b/include/graphics.h
index fb9781147..5632cb831 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2435,6 +2435,10 @@ extern const u8 gMonFrontPic_UnownQuestionMark[];
extern const u8 gMonBackPic_UnownQuestionMark[];
extern const u8 gMonIcon_UnownQuestionMark[];
+extern const u8 gMonIcon_QuestionMark[];
+extern const u8 gMonIcon_Egg[];
+extern const u16 gMonIconPalettes[][16];
+
// data/graphics.s
extern const u8 gBagMaleTiles[];
extern const u8 gBagFemaleTiles[];
@@ -2549,4 +2553,15 @@ extern const u8 gBerryPalette_Enigma[];
extern const u8 gUnknown_08E96EC8[];
+extern const u8 gMenuTrainerCard_Gfx[];
+extern const u16 gMenuTrainerCard0Star_Pal[];
+extern const u16 gMenuTrainerCard1Star_Pal[];
+extern const u16 gMenuTrainerCard2Star_Pal[];
+extern const u16 gMenuTrainerCard3Star_Pal[];
+extern const u16 gMenuTrainerCard4Star_Pal[];
+extern const u8 gUnknown_08E8CAC0[];
+extern const u8 gUnknown_08E8CFC0[];
+extern const u8 gUnknown_08E8D4C0[];
+extern const u8 gUnknown_08E8D9C0[];
+
#endif // GUARD_GRAPHICS_H
diff --git a/include/item.h b/include/item.h
index 80a460caa..8f6cc883b 100644
--- a/include/item.h
+++ b/include/item.h
@@ -11,7 +11,7 @@ struct Item
u16 price;
u8 holdEffect;
u8 holdEffectParam;
- u8 *description;
+ const u8 *description;
u8 importance;
u8 unk19;
u8 pocket;
@@ -45,12 +45,12 @@ bool8 CheckPCHasItem(u16 itemId, u16 count);
bool8 AddPCItem(u16 itemId, u16 count);
void RemovePCItem(u8 index, u16 count);
void SwapRegisteredBike(void);
-struct Item *ItemId_GetItem(u16 itemId);
+const struct Item *ItemId_GetItem(u16 itemId);
u16 ItemId_GetId(u16 itemId);
u16 ItemId_GetPrice(u16 itemId);
u8 ItemId_GetHoldEffect(u16 itemId);
u8 ItemId_GetHoldEffectParam(u16 itemId);
-u8 *ItemId_GetDescription(u16 itemId);
+const u8 *ItemId_GetDescription(u16 itemId);
bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c);
u8 ItemId_GetImportance(u16 itemId);
u8 ItemId_GetUnknownValue(u16 itemId);
diff --git a/include/item_use.h b/include/item_use.h
index 61a3b4f7a..1558f7691 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -3,28 +3,51 @@
extern u16 gScriptItemId;
+void ItemUseOutOfBattle_Mail(u8);
+void ItemUseOutOfBattle_Bike(u8);
void ItemUseOnFieldCB_Bike(u8);
+void ItemUseOutOfBattle_Rod(u8);
void ItemUseOnFieldCB_Rod(u8);
+void ItemUseOutOfBattle_Itemfinder(u8);
void ItemUseOnFieldCB_Itemfinder(u8);
void RunItemfinderResults(u8);
void ExitItemfinder(u8);
-bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId);
+bool8 ItemfinderCheckForHiddenItems(struct MapEvents *, u8);
void sub_80C9720(u8);
void sub_80C9838(u8, s16, s16);
u8 GetPlayerDirectionTowardsHiddenItem(s16, s16);
void SetPlayerDirectionTowardsItem(u8);
void DisplayItemRespondingMessageAndExitItemfinder(u8);
void RotatePlayerAndExitItemfinder(u8);
+void ItemUseOutOfBattle_PokeblockCase(u8);
+void ItemUseOutOfBattle_CoinCase(u8);
+void ItemUseOutOfBattle_SSTicket(u8);
void sub_80C9D00(u8);
+void ItemUseOutOfBattle_WailmerPail(u8);
void sub_80C9D74(u8);
+void ItemUseOutOfBattle_Medicine(u8);
+void ItemUseOutOfBattle_SacredAsh(u8);
+void ItemUseOutOfBattle_PPRecovery(u8);
+void ItemUseOutOfBattle_PPUp(u8);
+void ItemUseOutOfBattle_RareCandy(u8);
void ItemUseOutOfBattle_TMHM(u8);
void sub_80C9EE4(u8);
void sub_80C9F10(u8);
void sub_80C9F80(u8);
void sub_80C9FC0(u8);
+void ItemUseOutOfBattle_Repel(u8);
+void ItemUseOutOfBattle_BlackWhiteFlute(u8);
void task08_080A1C44(u8);
u8 sub_80CA1C8(void);
+void ItemUseOutOfBattle_EscapeRope(u8);
void ItemUseOutOfBattle_EvolutionStone(u8);
+void ItemUseInBattle_PokeBall(u8);
+void ItemUseInBattle_StatIncrease(u8);
+void ItemUseInBattle_Medicine(u8);
+void ItemUseInBattle_PPRecovery(u8);
+void ItemUseInBattle_Escape(u8);
+void ItemUseOutOfBattle_EnigmaBerry(u8);
+void ItemUseInBattle_EnigmaBerry(u8);
void ItemUseOutOfBattle_CannotUse(u8);
#endif // GUARD_ITEM_USE_H
diff --git a/include/libgncmultiboot.h b/include/libgncmultiboot.h
index 33c9f6bfa..23ac64d17 100644
--- a/include/libgncmultiboot.h
+++ b/include/libgncmultiboot.h
@@ -5,6 +5,7 @@ struct GcmbStruct
{
u16 gcmb_field_0;
u8 gcmb_field_2;
+ u8 filler3[0x2C - 0x3];
};
void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
diff --git a/include/menu.h b/include/menu.h
index 9b48ab79b..e1bb4f1e4 100755..100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -38,7 +38,7 @@ void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8);
void MenuZeroFillScreen(void);
void MenuDrawTextWindow(u8, u8, u8, u8);
void sub_8071F40(const u8 *);
-void sub_8071F60(u8, u8, u8, u8);
+void sub_8071F60(u8, u8, u8);
u16 unref_sub_8071F98(u8, u8);
void unref_sub_8071FBC(u16, u8, u8, u8, u8);
void MenuDisplayMessageBox(void);
@@ -67,7 +67,7 @@ u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8);
u8 sub_8072A18(const u8 *, u8, u16, u8, u32);
u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32);
int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32);
-void MenuPrint_RightAligned(u8 *, u8, u8);
+void MenuPrint_RightAligned(const u8 *, u8, u8);
void sub_8072B80(const u8 *, u8, u8, const u8 *);
void sub_8072BD8(const u8 *, u8, u8, u16);
u8 *sub_8072C14(u8 *, s32, u8, u8);
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 1df5053e7..993d698bd 100755..100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -9,22 +9,31 @@ struct YesNoFuncTable
void (*noFunc)(u8);
};
+void sub_80F9020(void);
+void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16);
void DoYesNoFuncWithChoice(u8, const struct YesNoFuncTable *);
void sub_80F914C(u8, const struct YesNoFuncTable *);
-void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16);
+u8 sub_80F9284(void);
+u8 sub_80F92BC(void);
+bool8 sub_80F92F4(u16);
+bool8 sub_80F931C(u16);
bool8 sub_80F9344(void);
-u8 sub_80F9344(void);
void sub_80F9368(void);
void sub_80F9438(void);
void sub_80F944C(void);
-void CreateVerticalScrollIndicators(u8, u8, u8); // include/decoration.h
-void sub_80F979C(u32, u32); // unknown args
+void sub_80F9480(u8 *, u8);
+void sub_80F94A4(u8, u8 *, s16, s16);
+void sub_80F94F8(u8 *);
+void sub_80F9520(u8 *, u8);
+void CreateVerticalScrollIndicators(u8, u16, u16);
+void sub_80F979C(u8, bool8);
void DestroyVerticalScrollIndicator(u8);
-void BuyMenuFreeMemory(void);
-void sub_80F98DC(int);
-void sub_80F996C(u8);
void LoadScrollIndicatorPalette(void);
+void BuyMenuFreeMemory(void);
void sub_80F98A4(u8);
void StartVerticalScrollIndicators(u8);
+void sub_80F98DC(u8);
+void PauseVerticalScrollIndicator(u8);
+void sub_80F9988(u8, u8);
#endif // GUARD_MENU_HELPERS_H
diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h
index 766303588..ab23a8d00 100644
--- a/include/mystery_event_script.h
+++ b/include/mystery_event_script.h
@@ -1,8 +1,8 @@
#ifndef GUARD_MYSTERY_EVENT_SCRIPT_H
#define GUARD_MYSTERY_EVENT_SCRIPT_H
-u32 sub_812613C(u8 *);
-void sub_8126160(u32 val);
-u16 sub_8126338(void);
+u32 RunMysteryEventScript(u8 *);
+void SetMysteryEventScriptStatus(u32 val);
+u16 GetRecordMixingGift(void);
#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
diff --git a/include/pokeblock.h b/include/pokeblock.h
index 0d8e965e4..f78ed40c3 100755..100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -1,11 +1,6 @@
#ifndef GUARD_POKEBLOCK_H
#define GUARD_POKEBLOCK_H
-struct YesNoCBTable {
- void (*yesFunc)(void);
- void (*noFunc)(void);
-};
-
enum {
PBLOCK_CLR_BLACK,
PBLOCK_CLR_RED,
@@ -15,12 +10,6 @@ enum {
PBLOCK_CLR_YELLOW
};
-extern u8 ewram[];
-extern u8 gUnknown_02039244;
-extern u8 gUnknown_02039248[4];
-extern u8 gUnknown_0203924C;
-extern const u8 *gUnknown_03000758;
-
void sub_810B96C(void);
u8 sub_810BA50(s16, s16, u8);
u8 sub_810C9B0(struct Pokeblock *);
diff --git a/include/pokemon.h b/include/pokemon.h
index c69fb87e0..be6ccfe74 100755..100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -349,6 +349,18 @@ struct BattlePokemon
/*0x54*/ u32 otId;
};
+enum
+{
+ STAT_STAGE_HP, // 0
+ STAT_STAGE_ATK, // 1
+ STAT_STAGE_DEF, // 2
+ STAT_STAGE_SPEED, // 3
+ STAT_STAGE_SPATK, // 4
+ STAT_STAGE_SPDEF, // 5
+ STAT_STAGE_ACC, // 6
+ STAT_STAGE_EVASION, // 7
+};
+
struct BaseStats
{
/*0x00*/ u8 baseHP;
@@ -392,9 +404,14 @@ struct BattleMove
u8 secondaryEffectChance;
u8 target;
u8 priority;
- u32 flags;
+ u8 flags;
+ u8 pad[3];
};
+#define FLAG_PROTECT_AFFECTED 0x2
+#define FLAG_MAGICCOAT_AFFECTED 0x4
+#define FLAG_SNATCH_AFFECTED 0x8
+
struct PokemonStorage
{
/*0x00*/ u8 currentBox;
@@ -464,7 +481,9 @@ struct EvolutionData
struct Evolution evolutions[5];
};
+extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
+extern u8 gEnemyPartyCount;
extern struct Pokemon gEnemyParty[PARTY_SIZE];
extern const u8 *const gItemEffectTable[];
extern const struct BaseStats gBaseStats[];
diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h
index d22dbb708..fc43a44c6 100644
--- a/include/pokemon_menu.h
+++ b/include/pokemon_menu.h
@@ -6,6 +6,7 @@ void sub_808A004();
void sub_808AB90(void);
void sub_808AB90(void); // unknown args
void sub_808AB90(void);
+void sub_808AD58(void);
void sub_808B020(void);
void sub_808B0C0(u8);
void sub_808B508(u8);
diff --git a/include/pokenav.h b/include/pokenav.h
index 70cc4135f..70cc4135f 100755..100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
diff --git a/include/record_mixing.h b/include/record_mixing.h
index 103f5ad64..ca60b04a7 100644
--- a/include/record_mixing.h
+++ b/include/record_mixing.h
@@ -14,8 +14,8 @@ void Task_RecordMixing_CopyReceiveBuffer(u8 taskId);
void sub_80B99B4(u8 taskId);
void Task_RecordMixing_ReceivePacket(u8 taskId);
void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId);
-void *LoadPtrFromTaskData(u16 *ptr);
-void StorePtrInTaskData(void *ptr, u16 *data);
+void *LoadPtrFromTaskData(u16 *);
+void StorePtrInTaskData(void *, u16 *);
u8 GetMultiplayerId_(void);
u16 *GetPlayerRecvBuffer(u8 player);
void sub_80B9A78(void);
@@ -23,12 +23,12 @@ void sub_80B9A88(u8 *a);
void sub_80B9B1C(u8 *a, size_t size, u8 index);
void sub_80B9B70(u8 *a, size_t size, u8 index);
u8 sub_80B9BBC(u16 *a);
-void sub_80B9BC4(struct RecordMixing_UnknownStruct *, size_t, u8 [][2], u8, u8);
+void sub_80B9BC4(u8 *, size_t, u8[][2], u8 d, u8 e);
u8 sub_80B9C4C(u8 *a);
// ASM
-void sub_80B9C6C(struct RecordMixing_UnknownStruct *, u32, u8, void *);
-void sub_80B9F3C(void *, u8);
+void sub_80B9C6C(u8 *, u32, u8, void *);
+void sub_80B9F3C(u16 *, u8);
void sub_80BA00C(u8);
#endif // GUARD_RECORD_MIXING_H
diff --git a/include/region_map.h b/include/region_map.h
index 6dfa4dcf0..3d970fa0a 100755..100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -1,13 +1,72 @@
#ifndef GUARD_REGION_MAP_H
#define GUARD_REGION_MAP_H
-void sub_80FA8EC(u32, u8);
-void sub_80FAB10(void);
+struct RegionMap
+{
+ u8 mapSecName[0x14];
+ u16 mapSecId;
+ u8 unk16;
+ u8 everGrandeCityArea;
+ u8 (*inputCallback)(void);
+ struct Sprite *cursorSprite;
+ struct Sprite *playerIconSprite;
+ s32 bg2x;
+ s32 bg2y;
+ u32 unk2C; //
+ u32 unk30; // Map rotation parameters
+ u32 unk34; // Likely a scrapped feature
+ u32 unk38; //
+ s32 unk3C;
+ s32 unk40;
+ s32 unk44;
+ s32 unk48;
+ s32 unk4C;
+ s32 unk50;
+ u16 cursorPosX;
+ u16 cursorPosY;
+ u16 cursorTileTag;
+ u16 cursorPaletteTag;
+ s16 scrollX;
+ s16 scrollY;
+ s16 unk60;
+ s16 unk62;
+ u16 unk64;
+ u16 unk66;
+ u16 unk68;
+ u16 unk6A;
+ u16 unk6C;
+ u16 unk6E;
+ u16 playerIconTileTag;
+ u16 playerIconPaletteTag;
+ u16 unk74;
+ u16 unk76;
+ bool8 zoomed;
+ u8 initStep;
+ s8 unk7A;
+ s8 cursorDeltaX;
+ s8 cursorDeltaY;
+ bool8 needUpdateVideoRegs;
+ bool8 blinkPlayerIcon;
+ bool8 playerIsInCave;
+ /*0x080*/ u8 filler80[0x100];
+ /*0x180*/ u8 cursorSmallImage[0x100];
+ /*0x280*/ u8 cursorLargeImage[0x600];
+};
+
+void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed);
+void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed);
+bool8 sub_80FA940(void);
+void FreeRegionMapIconResources(void);
u8 sub_80FAB60(void);
-void sub_80FBB3C(u16, u16);
-void sub_80FBCF0(u32, u8);
-void sub_80FBFB4(u8 *str, u16 region, u8);
-void CopyMapName();
-u8 *CopyLocationName(u8 *dest, u8 location);
+void sub_80FAEC4(void);
+u8 sub_80FAFC0(void);
+void UpdateRegionMapVideoRegs(void);
+void sub_80FB2A4(s16, s16);
+u16 sub_80FBA04(u16 mapSecId);
+void CreateRegionMapCursor(u16, u16);
+void CreateRegionMapPlayerIcon(u16, u16);
+const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length);
+const u8 *CopyMapName(u8 *dest, u16 b);
+const u8 *CopyLocationName(u8 *dest, u16 b);
#endif // GUARD_REGION_MAP_H
diff --git a/include/rom3.h b/include/rom3.h
index a45ec7dc4..1fa55d11a 100644
--- a/include/rom3.h
+++ b/include/rom3.h
@@ -1,6 +1,8 @@
#ifndef GUARD_ROM3_H
#define GUARD_ROM3_H
+struct DisableStruct;
+
void sub_800B858(void);
void setup_poochyena_battle();
void sub_800B950(void);
@@ -14,26 +16,26 @@ void sub_800C35C(void);
void sub_800C47C(u8);
void EmitGetAttributes(u8 a, u8 b, u8 c);
void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c);
-void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e);
void dp01_build_cmdbuf_x04_4_4_4(u8 a);
-void sub_800C704(u8, u8, u8);
-void dp01_build_cmdbuf_x06_a(u8 a, u8 b);
+void EmitSwitchInAnim(u8, u8, u8);
+void EmitReturnPokeToBall(u8 a, u8 b);
void dp01_build_cmdbuf_x07_7_7_7(u8 a);
-void dp01_build_cmdbuf_x08_8_8_8(u8 a);
+void EmitTrainerSlide(u8 a);
void dp01_build_cmdbuf_x09_9_9_9(u8 a);
void EmitFaintAnimation(u8 a);
void dp01_build_cmdbuf_x0B_B_B_B(u8 a);
void dp01_build_cmdbuf_x0C_C_C_C(u8 a);
-void dp01_build_cmdbuf_x0D_a(u8 a, u8 b);
-void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g);
+void EmitBallThrowAnim(u8 a, u8 b);
+void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g);
void EmitPrintString(u8 a, u16 b);
+void EmitPrintStringPlayerOnly(u8 a, u16 stringID);
void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c);
void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d);
void sub_800CBE0(u8 a, u8 *b);
-void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e);
+void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e);
void dp01_build_cmdbuf_x17_17_17_17(u8 a);
-void EmitHealthBarUpdate(u8 a, s16 b);
-void EmitExpBarUpdate(u8 a, u8 b, s16 c);
+void EmitHealthBarUpdate(u8 a, u16 b);
+void EmitExpBarUpdate(u8 a, u8 b, u16 c);
void EmitStatusIconUpdate(u8 a, u32 b, u32 c);
void EmitStatusAnimation(u8 a, u8 b, u32 c);
void EmitStatusXor(u8 a, u8 b);
@@ -49,7 +51,7 @@ void dp01_build_cmdbuf_x28_28_28_28(u8 a);
void EmitHitAnimation(u8 a);
void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a);
void EmitEffectivenessSound(u8 a, u16 b);
-void sub_800D074(u8 a, u16 b);
+void EmitPlaySound(u8 a, u16 b);
void EmitFaintingCry(u8 a);
void EmitBattleIntroSlide(u8 a, u8 b);
void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a);
diff --git a/include/rom4.h b/include/rom4.h
index 803a38162..8d5b1bfa2 100644
--- a/include/rom4.h
+++ b/include/rom4.h
@@ -55,7 +55,7 @@ void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
-// sub_8053538
+void sub_8053538(u8);
void sub_8053570(void);
void sub_8053588(u8);
void sub_80535C4(s16 a1, s16 a2);
@@ -99,9 +99,9 @@ void sub_8053F0C(void);
void sub_8053F84(void);
void sub_8053FB0(u16);
// is_warp1_light_level_8_or_9
-// sub_8053FF8
-// sub_8054034
-// sub_8054044
+void sub_8053FF8(void);
+bool8 sub_8054034(void);
+void sub_8054044(void);
// sub_8054050
void sub_80540D0(s16 *, u16 *);
void sub_8054164(void);
@@ -129,8 +129,8 @@ void CB2_NewGame(void);
void CB2_WhiteOut(void);
void CB2_LoadMap(void);
void CB2_LoadMap2(void);
-// sub_8054534
-// sub_8054588
+void sub_8054534(void);
+void sub_8054588(void);
void c2_80567AC(void);
void c2_exit_to_overworld_2_switch(void);
void c2_exit_to_overworld_2_local(void);
diff --git a/include/save.h b/include/save.h
index 3feaa1f3d..6c47c6f60 100644
--- a/include/save.h
+++ b/include/save.h
@@ -74,7 +74,7 @@ bool8 sub_8125DA8(void);
u8 sub_8125DDC(void);
u8 sub_8125E04(void);
u8 sub_8125E2C(void);
-u8 sub_8125E6C(void);
+bool8 sub_8125E6C(void);
u8 sub_8125EC8(u8 a1);
bool8 unref_sub_8125F4C(struct UnkSaveSection *a1);
u8 unref_sub_8125FA0(void);
diff --git a/include/script.h b/include/script.h
index e35ec7608..2a738698c 100644
--- a/include/script.h
+++ b/include/script.h
@@ -25,7 +25,7 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable
u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr);
void SetupNativeScript(struct ScriptContext *ctx, void *ptr);
void StopScript(struct ScriptContext *ctx);
-u8 RunScript(struct ScriptContext *ctx);
+u8 RunScriptCommand(struct ScriptContext *ctx);
u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr);
const u8 *ScriptPop(struct ScriptContext *ctx);
void ScriptJump(struct ScriptContext *ctx, u8 *ptr);
@@ -55,7 +55,5 @@ u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
u8 *GetRamScript(u8 objectId, u8 *script);
-u16 gScriptResult;
-extern u16 gScriptLastTalked;
#endif // GUARD_SCRIPT_H
diff --git a/include/secret_base.h b/include/secret_base.h
index 3ea75ce27..bb747bb02 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -7,6 +7,7 @@ u8 sub_80BBB24(void);
void sub_80BBCCC(u8);
void sub_80BC038();
u8 sub_80BC050();
+u8 *GetSecretBaseMapName(u8 *);
void sub_80BC300();
const u8 sub_80BCCA4(u8);
u8 *sub_80BCCE8(void);
diff --git a/include/strings.h b/include/strings.h
index fe9cfc6ba..fe9cfc6ba 100755..100644
--- a/include/strings.h
+++ b/include/strings.h
diff --git a/include/text.h b/include/text.h
index e9e8eb8c2..99987d2c3 100644
--- a/include/text.h
+++ b/include/text.h
@@ -66,6 +66,8 @@
#define CHAR_y 0xED
#define CHAR_z 0xEE
#define CHAR_COLON 0xF0
+#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
+#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
#define PLACEHOLDER_BEGIN 0xFD // string placeholder
#define CHAR_NEWLINE 0xFE
diff --git a/include/trainer_card.h b/include/trainer_card.h
index bd0c808dd..b9d3ca081 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -33,20 +33,6 @@ void sub_8093130(u8, void (*)(void));
void sub_8093390(struct TrainerCard *);
u8 sub_80934C4(u8 id);
-// gUnknown_083B5EBC:: @ 83B5EBC
-bool8 sub_8093864();
-bool8 sub_80938A8();
-bool8 sub_80938CC();
-bool8 sub_8093918();
-bool8 sub_8093938();
-bool8 sub_8093954();
-bool8 sub_8093980();
-
-// gUnknown_083B5ED8:: @ 83B5ED8
-bool8 sub_8093AA0();
-bool8 sub_8093AF0();
-bool8 sub_8093C0C(struct TrainerCard *trainerCard);
-bool8 sub_8093C38();
-bool8 sub_8093D50(void);
+extern struct TrainerCard gTrainerCards[4];
#endif // GUARD_TRAINER_CARD_H
diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h
index 978476d89..f34857cf1 100755..100644
--- a/include/use_pokeblock.h
+++ b/include/use_pokeblock.h
@@ -5,9 +5,6 @@
#ifndef POKERUBY_USE_POKEBLOCK_H
#define POKERUBY_USE_POKEBLOCK_H
-extern void *gUnknown_02030400;
-extern s16 gUnknown_02039312;
-
void sub_8136130(struct Pokeblock *, MainCallback);
#endif //POKERUBY_USE_POKEBLOCK_H
diff --git a/include/util.h b/include/util.h
index 1851c2e82..cd50b75cc 100644
--- a/include/util.h
+++ b/include/util.h
@@ -9,5 +9,6 @@ extern const u32 gBitTable[];
u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
void StoreWordInTwoHalfwords(u16 *, u32);
void LoadWordFromTwoHalfwords(u16 *, u32 *);
+u16 CalcCRC16(u8 *data, int length);
#endif // GUARD_UTIL_H
diff --git a/include/vars.h b/include/vars.h
index e08f344d4..efbb462a4 100755..100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -1,6 +1,7 @@
#ifndef GUARD_VARS_H
#define GUARD_VARS_H
+#define VAR_0x4000 0x4000
#define VAR_0x4001 0x4001
#define VAR_0x4002 0x4002
#define VAR_0x4003 0x4003
diff --git a/ld_script.txt b/ld_script.txt
index 39c23aee6..098f3d9c5 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -54,11 +54,11 @@ SECTIONS {
src/battle_2.o(.text);
asm/battle_2.o(.text);
asm/battle_3.o(.text);
- asm/battle_4.o(.text);
+ src/battle_4.o(.text);
asm/battle_5.o(.text);
src/battle_6.o(.text);
src/battle_7.o(.text);
- asm/battle_8.o(.text);
+ src/battle_8.o(.text);
asm/battle_9.o(.text);
src/battle_10.o(.text);
src/pokemon_1.o(.text);
@@ -109,7 +109,7 @@ SECTIONS {
src/coord_event_weather.o(.text);
src/field_tasks.o(.text);
src/clock.o(.text);
- asm/reset_rtc_screen.o(.text);
+ src/reset_rtc_screen.o(.text);
asm/party_menu.o(.text);
src/party_menu.o(.text);
asm/party_menu.o(.text_8070968);
@@ -122,13 +122,12 @@ SECTIONS {
src/rom_8077ABC.o(.text);
src/task.o(.text);
asm/reshow_battle_screen.o(.text);
- asm/battle_anim_807B69C.o(.text);
+ src/battle_anim_807B69C.o(.text);
src/title_screen.o(.text);
src/field_weather.o(.text);
asm/field_weather.o(.text);
src/field_fadetransition.o(.text);
- asm/field_fadetransition.o(.text);
- asm/field_screen_effect.o(.text);
+ src/field_screen_effect.o(.text);
src/battle_setup.o(.text);
asm/cable_club.o(.text);
src/cable_club.o(.text);
@@ -137,7 +136,7 @@ SECTIONS {
src/trainer_see.o(.text);
src/wild_encounter.o(.text);
src/field_effect.o(.text);
- asm/unknown_task.o(.text);
+ src/unknown_task.o(.text);
asm/pokemon_menu.o(.text);
src/option_menu.o(.text);
src/pokedex.o(.text);
@@ -147,7 +146,7 @@ SECTIONS {
asm/pokemon_storage_system.o(.text);
src/pokemon_storage_system.o(.text);
asm/pokemon_storage_system.o(.text_8098A38);
- asm/pokemon_icon.o(.text);
+ src/pokemon_icon.o(.text);
asm/pokemon_summary_screen.o(.text);
src/pokemon_summary_screen.o(.text);
asm/pokemon_summary_screen.o(.text_80A0958);
@@ -168,11 +167,10 @@ SECTIONS {
src/money.o(.text);
asm/contest_effect.o(.text);
src/record_mixing.o(.text);
- asm/record_mixing.o(.text);
src/sound_check_menu.o(.text);
src/secret_base.o(.text);
asm/secret_base.o(.text_80BC1D0);
- src/tv.o(.text);
+ src/tv.o(.text);
asm/contest_link_80C2020.o(.text);
src/script_pokemon_util_80C4BF0.o(.text);
src/field_poison.o(.text);
@@ -191,15 +189,15 @@ SECTIONS {
asm/pokenav.o(.text);
src/pokenav.o(.text);
asm/pokenav.o(.text_80F708C);
- asm/mon_markings.o(.text);
+ src/mon_markings.o(.text);
src/mauville_old_man.o(.text);
asm/mauville_old_man.o(.text);
src/mail.o(.text);
- asm/menu_helpers.o(.text);
+ src/menu_helpers.o(.text);
src/script_pokemon_util_80F99CC.o(.text);
src/dewford_trend.o(.text);
src/heal_location.o(.text);
- asm/region_map.o(.text);
+ src/region_map.o(.text);
asm/cute_sketch.o(.text);
src/decoration.o(.text);
asm/slot_machine.o(.text);
@@ -208,20 +206,18 @@ SECTIONS {
src/slot_machine.o(.text_b);
src/contest_painting.o(.text);
src/battle_ai.o(.text);
- asm/trader.o(.text);
+ src/trader.o(.text);
src/starter_choose.o(.text);
src/wallclock.o(.text);
src/rom6.o(.text);
src/pokeblock.o(.text);
- asm/fldeff_flash.o(.text);
+ src/fldeff_flash.o(.text);
src/post_battle_event_funcs.o(.text);
src/time_events.o(.text);
src/birch_pc.o(.text);
src/hof_pc.o(.text);
src/field_specials.o(.text);
- asm/battle_records.o(.text);
src/battle_records.o(.text);
- asm/battle_records.o(.text_8110494);
asm/pokedex_area_screen.o(.text);
asm/evolution_scene.o(.text);
asm/roulette.o(.text);
@@ -241,7 +237,6 @@ SECTIONS {
src/unused_8124F94.o(.text);
src/save.o(.text);
src/mystery_event_script.o(.text);
- asm/mystery_event_script.o(.text);
asm/field_effect_helpers.o(.text);
asm/contest_ai.o(.text);
asm/battle_anim_81258BC.o(.text);
@@ -291,7 +286,7 @@ SECTIONS {
data/battle_scripts_2.o(script_data);
data/battle_ai_scripts.o(script_data);
data/contest_ai_scripts.o(script_data);
- data/script_funcs.o(script_data);
+ data/mystery_event_script_cmd_table.o(script_data);
} =0
lib_text :
@@ -335,11 +330,13 @@ SECTIONS {
src/link.o(.rodata);
src/rtc.o(.rodata);
data/main_menu.o(.rodata);
- data/data2.o(.rodata);
+ data/data2a.o(.rodata);
+ src/battle_4.o(.rodata);
+ data/data2b.o(.rodata);
src/pokemon_data.o(.rodata);
. = ALIGN(4);
src/trig.o(.rodata);
- data/util.o(.rodata);
+ src/util.o(.rodata);
data/daycare.o(.rodata);
data/egg_hatch.o(.rodata);
data/battle_interface.o(.rodata);
@@ -375,11 +372,11 @@ SECTIONS {
src/rom_8077ABC.o(.rodata);
data/map_events.o(.rodata);
data/data_8393054.o(.rodata);
- data/task.o(.rodata);
- data/battle_anim_807B69C.o(.rodata);
+ src/task.o(.rodata);
+ src/battle_anim_807B69C.o(.rodata);
src/title_screen.o(.rodata);
data/field_weather.o(.rodata);
- data/rom_8080874.o(.rodata);
+ src/field_screen_effect.o(.rodata);
src/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/mori_debug_menu.o(.rodata);
@@ -388,18 +385,17 @@ SECTIONS {
data/wild_encounter.o(.rodata);
src/field_effect.o(.rodata);
data/pokemon_menu.o(.rodata);
- data/option_menu.o(.rodata);
+ src/option_menu.o(.rodata);
src/pokedex.o(.rodata);
src/trainer_card.o(.rodata);
- data/trainer_card.o(.rodata);
src/battle_party_menu.o(.rodata);
data/pokemon_storage_system.o(.rodata);
- data/pokemon_icon.o(.rodata);
+ src/pokemon_icon.o(.rodata);
data/pokemon_summary_screen.o(.rodata);
data/fldeff_cut.o(.rodata);
src/item_menu.o(.rodata);
data/battle_anim_80A7E7C.o(.rodata);
- data/item.o(.rodata);
+ src/item.o(.rodata);
data/matsuda_debug_menu.o(.rodata);
data/contest.o(.rodata);
data/shop.o(.rodata);
@@ -409,7 +405,8 @@ SECTIONS {
data/naming_screen.o(.rodata);
data/money.o(.rodata);
data/contest_effect.o(.rodata);
- data/record_mixing.o(.rodata);
+ src/record_mixing.o(.data);
+ src/record_mixing.o(.rodata);
src/sound_check_menu.o(.rodata);
data/secret_base.o(.rodata);
data/tv.o(.rodata);
@@ -427,15 +424,15 @@ SECTIONS {
data/mon_markings.o(.rodata);
data/mauville_old_man.o(.rodata);
data/mail.o(.rodata);
- data/menu_helpers.o(.rodata);
+ src/menu_helpers.o(.rodata);
src/heal_location.o(.rodata);
- data/region_map.o(.rodata);
+ src/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
src/decoration.o(.rodata);
data/slot_machine.o(.rodata);
src/contest_painting.o(.rodata);
src/battle_ai.o(.rodata);
- data/trader.o(.rodata);
+ src/trader.o(.rodata);
src/starter_choose.o(.rodata);
src/wallclock.o(.rodata);
src/pokeblock.o(.rodata);
@@ -472,7 +469,7 @@ SECTIONS {
src/lottery_corner.o(.rodata);
src/diploma.o(.rodata);
src/strings.o(.rodata);
- data/berry_tag_screen.o(.rodata);
+ src/berry_tag_screen.o(.rodata);
src/save_failed_screen.o(.rodata);
data/pokeblock_feed.o(.rodata);
data/intro_credits_graphics.o(.rodata);
diff --git a/sapphire_de.sha1 b/sapphire_de.sha1
new file mode 100644
index 000000000..f99533574
--- /dev/null
+++ b/sapphire_de.sha1
@@ -0,0 +1 @@
+fa0bd1abe04fea17016f585454d0f1392f342a21 pokesapphire_de.gba
diff --git a/src/agb_flash_mx.c b/src/agb_flash_mx.c
index 01f848901..67348901f 100644
--- a/src/agb_flash_mx.c
+++ b/src/agb_flash_mx.c
@@ -26,7 +26,11 @@ const struct FlashSetupInfo MX29L010 =
0 // appears to be unused
},
{ 3, 1 }, // wait state setup data
+#if defined(GERMAN) && defined(SAPPHIRE)
+ { { 0xBF, 0xD4 } } // ID
+#else
{ { 0xC2, 0x09 } } // ID
+#endif
}
};
diff --git a/src/battle_10.c b/src/battle_10.c
index 34e4f75b1..0237bab4b 100644
--- a/src/battle_10.c
+++ b/src/battle_10.c
@@ -72,7 +72,7 @@ extern void sub_80375B4(void);
extern void sub_8010384(struct Sprite *);
extern void sub_8037B78(void);
extern u8 sub_8031720();
-extern u8 mplay_80342A4();
+extern bool8 mplay_80342A4(u8);
extern void ExecuteMoveAnim();
extern void sub_80326EC();
extern void sub_8031F24(void);
@@ -887,6 +887,7 @@ void sub_8039A30(void)
gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16];
gPID_perBank[gActiveBank] = *gDisableStructMoveAnim;
+ // Dead code. sub_8031720 always returns 0.
if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
{
dp01_tbl4_exec_completed();
diff --git a/src/battle_2.c b/src/battle_2.c
index d08f2b8df..7772444d7 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -1584,7 +1584,7 @@ void sub_8010874(void)
for (j = 0; j < (u32)0x1C; j++)
r4[j] = 0;
- gDisableStructs[i].IsFirstTurn = 2;
+ gDisableStructs[i].isFirstTurn= 2;
gUnknown_02024C70[i] = 0;
gLastUsedMove[i] = 0;
gMoveHitWith[i] = 0;
@@ -1655,25 +1655,25 @@ void sub_8010874(void)
ewram16113 = 0;
for (i = 0; i < 11; i++)
gBattleResults.unk36[i] = 0;
- gBattleResults.BattleTurnCounter = 0;
- gBattleResults.PlayerFaintCounter = 0;
- gBattleResults.OpponentFaintCounter = 0;
+ gBattleResults.battleTurnCounter = 0;
+ gBattleResults.playerFaintCounter = 0;
+ gBattleResults.opponentFaintCounter = 0;
gBattleResults.unk2 = 0;
gBattleResults.unk3 = 0;
gBattleResults.unk4 = 0;
gBattleResults.unk5_0 = 0;
gBattleResults.unk5_1 = 0;
- gBattleResults.LastOpponentSpecies = 0;
- gBattleResults.LastUsedMove = 0;
- gBattleResults.OpponentMove = 0;
- gBattleResults.Poke1Species = 0;
- gBattleResults.OpponentSpecies = 0;
- gBattleResults.CaughtPoke = 0;
+ gBattleResults.lastOpponentSpecies = 0;
+ gBattleResults.lastUsedMove = 0;
+ gBattleResults.opponentMove = 0;
+ gBattleResults.poke1Species = 0;
+ gBattleResults.opponentSpecies = 0;
+ gBattleResults.caughtPoke = 0;
for (i = 0; i < 10; i++)
{
- gBattleResults.PokeString1[i] = 0;
- gBattleResults.PokeString2[i] = 0;
- gBattleResults.CaughtNick[i] = 0;
+ gBattleResults.pokeString1[i] = 0;
+ gBattleResults.pokeString2[i] = 0;
+ gBattleResults.caughtNick[i] = 0;
}
}
@@ -1692,25 +1692,25 @@ void SwitchInClearStructs(void)
{
struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i];
- if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].BankPreventingEscape == gActiveBank)
+ if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
sp20->unk0 &= ~0x04000000;
- if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].BankWithSureHit == gActiveBank)
+ if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBank)
{
gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
- gDisableStructs[i].BankWithSureHit = 0;
+ gDisableStructs[i].bankWithSureHit = 0;
}
}
}
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED);
- gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_RECEIVER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
+ gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
for (i = 0; i < gNoOfAllBanks; i++)
{
if (GetBankSide(gActiveBank) != GetBankSide(i)
&& (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0
- && (gDisableStructs[i].BankWithSureHit == gActiveBank))
+ && (gDisableStructs[i].bankWithSureHit == gActiveBank))
{
gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
gStatuses3[i] |= 0x10;
@@ -1740,13 +1740,13 @@ void SwitchInClearStructs(void)
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
- gDisableStructs[gActiveBank].SubstituteHP = sp0.SubstituteHP;
- gDisableStructs[gActiveBank].BankWithSureHit = sp0.BankWithSureHit;
- gDisableStructs[gActiveBank].unkF_0 = sp0.unkF_0;
- gDisableStructs[gActiveBank].unkF_4 = sp0.unkF_4;
+ gDisableStructs[gActiveBank].substituteHP = sp0.substituteHP;
+ gDisableStructs[gActiveBank].bankWithSureHit = sp0.bankWithSureHit;
+ gDisableStructs[gActiveBank].perishSong1 = sp0.perishSong1;
+ gDisableStructs[gActiveBank].perishSong2 = sp0.perishSong2;
}
- gDisableStructs[gActiveBank].IsFirstTurn = 2;
+ gDisableStructs[gActiveBank].isFirstTurn= 2;
gLastUsedMove[gActiveBank] = 0;
gMoveHitWith[gActiveBank] = 0;
gUnknown_02024C44[gActiveBank] = 0;
@@ -1781,7 +1781,7 @@ void UndoEffectsAfterFainting(void)
gStatuses3[gActiveBank] = 0;
for (i = 0; i < gNoOfAllBanks; i++)
{
- if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].BankPreventingEscape == gActiveBank)
+ if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION;
if (gBattleMons[i].status2 & (gBitTable[gActiveBank] << 16))
gBattleMons[i].status2 &= ~(gBitTable[gActiveBank] << 16);
@@ -1794,27 +1794,27 @@ void UndoEffectsAfterFainting(void)
ptr = (u8 *)&gDisableStructs[gActiveBank];
for (i = 0; i < (u32)0x1C; i++)
ptr[i] = 0;
- gProtectStructs[gActiveBank].Protected = 0;
- gProtectStructs[gActiveBank].Endured = 0;
- gProtectStructs[gActiveBank].OnlyStruggle = 0;
- gProtectStructs[gActiveBank].HelpingHand = 0;
- gProtectStructs[gActiveBank].BounceMove = 0;
- gProtectStructs[gActiveBank].StealMove = 0;
- gProtectStructs[gActiveBank].Flag0Unknown = 0;
- gProtectStructs[gActiveBank].PrlzImmobility = 0;
- gProtectStructs[gActiveBank].ConfusionSelfDmg = 0;
- gProtectStructs[gActiveBank].NotEffective = 0;
- gProtectStructs[gActiveBank].ChargingTurn = 0;
- gProtectStructs[gActiveBank].FleeFlag = 0;
- gProtectStructs[gActiveBank].UsedImprisionedMove = 0;
- gProtectStructs[gActiveBank].LoveImmobility = 0;
- gProtectStructs[gActiveBank].UsedDisabledMove = 0;
- gProtectStructs[gActiveBank].UsedTauntedMove = 0;
- gProtectStructs[gActiveBank].Flag2Unknown = 0;
- gProtectStructs[gActiveBank].FlinchImmobility = 0;
- gProtectStructs[gActiveBank].NotFirstStrike = 0;
-
- gDisableStructs[gActiveBank].IsFirstTurn = 2;
+ gProtectStructs[gActiveBank].protected = 0;
+ gProtectStructs[gActiveBank].endured = 0;
+ gProtectStructs[gActiveBank].onlyStruggle = 0;
+ gProtectStructs[gActiveBank].helpingHand = 0;
+ gProtectStructs[gActiveBank].bounceMove = 0;
+ gProtectStructs[gActiveBank].stealMove = 0;
+ gProtectStructs[gActiveBank].flag0Unknown = 0;
+ gProtectStructs[gActiveBank].prlzImmobility = 0;
+ gProtectStructs[gActiveBank].confusionSelfDmg = 0;
+ gProtectStructs[gActiveBank].notEffective = 0;
+ gProtectStructs[gActiveBank].chargingTurn = 0;
+ gProtectStructs[gActiveBank].fleeFlag = 0;
+ gProtectStructs[gActiveBank].usedImprisionedMove = 0;
+ gProtectStructs[gActiveBank].loveImmobility = 0;
+ gProtectStructs[gActiveBank].usedDisabledMove = 0;
+ gProtectStructs[gActiveBank].usedTauntedMove = 0;
+ gProtectStructs[gActiveBank].flag2Unknown = 0;
+ gProtectStructs[gActiveBank].flinchImmobility = 0;
+ gProtectStructs[gActiveBank].notFirstStrike = 0;
+
+ gDisableStructs[gActiveBank].isFirstTurn= 2;
gLastUsedMove[gActiveBank] = 0;
gMoveHitWith[gActiveBank] = 0;
gUnknown_02024C44[gActiveBank] = 0;
@@ -2140,7 +2140,7 @@ void unref_sub_8011A68(void)
{
if (GetBankSide(gActiveBank) == 0)
{
- sub_800C704(0, gBattlePartyID[gActiveBank], 0);
+ EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], 0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -2191,7 +2191,7 @@ void BattleBeginFirstTurn(void)
return;
while (ewram160F9 < gNoOfAllBanks)
{
- if (sub_801A02C(0, gTurnOrder[ewram160F9], 0) != 0)
+ if (ItemBattleEffects(0, gTurnOrder[ewram160F9], 0) != 0)
r9++;
ewram160F9++;
if (r9 != 0)
@@ -2286,8 +2286,8 @@ void BattleTurnPassed(void)
gBattleMainFunc = sub_80138F0;
return;
}
- if (gBattleResults.BattleTurnCounter < 0xFF)
- gBattleResults.BattleTurnCounter++;
+ if (gBattleResults.battleTurnCounter < 0xFF)
+ gBattleResults.battleTurnCounter++;
for (i = 0; i < gNoOfAllBanks; i++)
{
gActionForBanks[i] = 0xFF;
diff --git a/src/battle_4.c b/src/battle_4.c
new file mode 100644
index 000000000..d58ae4145
--- /dev/null
+++ b/src/battle_4.c
@@ -0,0 +1,18196 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_move_effects.h"
+#include "moves.h"
+#include "abilities.h"
+#include "item.h"
+#include "items.h"
+#include "data2.h"
+#include "hold_effects.h"
+#include "rng.h"
+#include "rom3.h"
+#include "species.h"
+#include "pokemon.h"
+#include "text.h"
+#include "palette.h"
+#include "main.h"
+#include "songs.h"
+#include "sound.h"
+#include "task.h"
+#include "decompress.h"
+#include "naming_screen.h"
+
+//extern needed variables
+extern u8 gCritMultiplier;
+extern s32 gBattleMoveDamage;
+extern u32 gStatuses3[4];
+extern u16 gBattleTypeFlags;
+extern const u32 gBitTable[];
+extern const struct BaseStats gBaseStats[];
+extern struct BattleEnigmaBerry gEnigmaBerries[4];
+extern struct BattlePokemon gBattleMons[4];
+extern u8 gActiveBank;
+extern u32 gBattleExecBuffer;
+extern u8 gNoOfAllBanks;
+extern u16 gBattlePartyID[4];
+extern u8 gTurnOrder[4];
+extern u8 gUnknown_02024A76[4];
+extern u16 gCurrentMove;
+extern u8 gLastUsedAbility;
+extern u16 gBattleWeather;
+extern u8 gStringBank;
+extern u8 gEffectBank;
+extern u8 gAbsentBankFlags;
+extern u8 gMultiHitCounter;
+extern u16 gLastUsedMove[4];
+extern u16 gLockedMove[4];
+extern u16 gChosenMovesByBanks[4];
+extern u16 gSideAffecting[2];
+extern u16 gPauseCounterBattle;
+extern u16 gPaydayMoney;
+extern u16 gRandomTurnNumber;
+extern u8 gBattleOutcome;
+extern u8 gBattleTerrain;
+extern u16 gTrainerBattleOpponent;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8* gBattlescriptCurrInstr;
+extern u8 gCurrMovePos;
+extern u8 gFightStateTracker;
+extern u32 gHitMarker;
+extern u8 gBattleMoveFlags;
+extern u8 gBattleCommunication[];
+extern u16 gMoveHitWith[4];
+extern u16 gUnknown_02024C44[4];
+extern u8 gStringBank;
+extern u16 gDynamicBasePower;
+extern const u8 gTypeEffectiveness[];
+extern u16 gLastUsedItem;
+extern u16 gBattleMovePower;
+extern s32 gHP_dealt;
+extern s32 gTakenDmg[4];
+extern u8 gTakenDmgBanks[4];
+extern const u16 gMissStrings[];
+extern u8 gSentPokesToOpponent[2];
+extern u8 gBank1;
+extern u16 gExpShareExp;
+extern u8 gBattleTextBuff1[];
+extern u8 gBattleTextBuff2[];
+extern u8 gBattleTextBuff3[];
+extern u8 gLeveledUpInBattle;
+extern void (*gBattleMainFunc)(void);
+extern struct Window gUnknown_03004210;
+extern const u8 gUnknown_08400D7A[];
+extern u8 gPlayerPartyCount;
+extern u16 word_2024E82; //move to learn
+extern const u8 gTrainerMoney[];
+extern u16 gRandomMove;
+extern u8* gBattleScriptsEffectsTable[];
+extern u16 gUnknown_02024BE8; //last used move in battle
+extern u8 gBankInMenu;
+extern u8 gActionForBanks[4];
+extern u16 gUnknown_02024C2C[4]; //last used moves 2, used by sketch
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_02024C4C[4]; //last used moves by banks, another one
+extern u8 gCurrentMoveTurn;
+
+//extern functions
+bool8 CantUseMove(void);
+void PressurePPLose(u8 bank_atk, u8 bank_def, u16 move);
+void CancelMultiTurnMoves(u8 bank);
+void b_movescr_stack_push(u8* BS_ptr);
+void b_movescr_stack_push_cursor(void);
+void RecordAbilityBattle(u8 bank, u8 ability);
+void RecordItemBattle(u8 bank, u8 item);
+int IsPokeDisobedient(void);
+static bool8 IsTwoTurnsMove(u16 move);
+static void DestinyBondFlagUpdate(void);
+static void b_wonderguard_and_levitate(void);
+u8 GetBankIdentity(u8 bank);
+u8 GetBankSide(u8 bank);
+u8 GetBattleBank(u8 bankValue);
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def);
+static u8 AttacksThisTurn(u8 bank, u16 move); //Note: returns 1 if it's a charging turn, otherwise 2
+void UndoEffectsAfterFainting(void);
+void BattleMusicStop(void);
+void PlayBGM(u16 songID);
+void MonGainEVs(struct Pokemon*, u16 defeatedSpecies);
+extern u8 gBattleBufferB[4][0x200];
+void sub_80324F8(struct Pokemon*, u8 bank);
+void AdjustFriendship(struct Pokemon*, u8 value);
+bool8 IsTradedMon(struct Pokemon*);
+void b_movescr_stack_pop_cursor(void);
+void SwitchInClearStructs(void);
+u8* ConvertIntToDecimalStringN(u8*, s32, u8, u8);
+u8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID);
+u16 SpeciesToNationalPokedexNum(u16 species);
+u8 sub_803FC34(u8 bank);
+u16 sub_803FBFC(u8 a);
+u8 GetBankByPlayerAI(u8 ID);
+void sub_8012258(u8);
+void sub_80157C4(u8 bank); //update sent pokes in battle
+//sub_803B7C8 teach poke a move
+u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
+void IncrementGameStat(u8 index);
+u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
+u16 GetPokedexHeightWeight(u16 national_num, u8 heightweight);
+u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
+void DestroyMenuCursor(void);
+void sub_802BC6C(void);
+void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32);
+u8 sub_809FA30(void);
+bool32 IsHMMove2(u16 move);
+void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0);
+void nullsub_6(void);
+void ReshowBattleScreenAfterMenu(void);
+void sub_800F808(void);
+void sub_80B79B8(u32* moneySaveblock, u32 to_give);
+void sub_80156DC(void); //set sentpokes value
+bool8 sub_8014AB8(u8 bank); //can run from battle
+u8 CountAliveMons(u8 caseID);
+void sub_803E1B0(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp);
+u8 CanRunFromBattle(void);
+u8 sub_801B5C0(u16 move, u8 targetbyte); //get target of move
+void sub_80153D0(u8 atk); //pressure perish song pp decrement
+u8 castform_switch(u8 bank);
+void b_push_move_exec(u8* bs_ptr);
+u8 sav1_map_get_light_level(void);
+u8 CalculatePlayerPartyCount(void);
+u16 Sqrt(u32 num);
+u8 sub_809070C(u16 nationalNum, u32 TiD, u32 PiD); //task prepare poke dex display
+void sub_814A880(u8 a1, u8 a2);
+u8 sub_8015A98(u8 bank, u8 unusable_moves, u8 flags); //choose move limitations
+void sub_801529C(u8 bank);
+bool8 IsLinkDoubleBattle(void);
+void sub_8094B6C(u8 bank, u8 partyID, u8 r2);
+
+//extern BattleScripts
+extern u8 BattleScript_EndTurn[];
+extern u8 BattleScript_NoPPForMove[];
+extern u8 BattleScript_MagicCoatBounce[];
+extern u8 BattleScript_TookAttack[];
+extern u8 BattleScript_SnatchedMove[];
+extern u8 BattleScript_Pausex20[];
+extern u8 BattleScript_SubstituteFade[];
+extern u8 BattleScript_HangedOnMsg[];
+extern u8 BattleScript_OneHitKOMsg[];
+extern u8 BattleScript_EnduredMsg[];
+extern u8 BattleScript_PSNPrevention[];
+extern u8 BattleScript_BRNPrevention[];
+extern u8 BattleScript_PRLZPrevention[];
+extern u8 BattleScript_FlinchPrevention[];
+extern u8 BattleScript_StatUp[];
+extern u8 BattleScript_StatDown[];
+extern u8 BattleScript_NoItemSteal[];
+extern u8 BattleScript_ItemSteal[];
+extern u8 BattleScript_RapidSpinAway[];
+extern u8 BattleScript_TargetPRLZHeal[];
+extern u8 BattleScript_KnockedOff[];
+extern u8 BattleScript_LevelUp[];
+extern u8 BattleScript_WrapFree[];
+extern u8 BattleScript_LeechSeedFree[];
+extern u8 BattleScript_SpikesFree[];
+extern u8 BattleScript_ButItFailed[];
+extern u8 BattleScript_ObliviousPreventsAttraction[];
+extern u8 BattleScript_MistProtected[];
+extern u8 BattleScript_AbilityNoStatLoss[];
+extern u8 BattleScript_AbilityNoSpecificStatLoss[];
+extern u8 BattleScript_TrainerBallBlock[];
+extern u8 BattleScript_WallyBallThrow[];
+extern u8 BattleScript_SuccessBallThrow[];
+extern u8 BattleScript_ShakeBallThrow[];
+
+extern u8 gUnknown_081D919F[]; //spikes1
+extern u8 gUnknown_081D9171[]; //spikes2
+extern u8 gUnknown_081D91CD[]; //spikes3
+extern u8 BattleScript_1D6F44[]; //present dmg
+extern u8 BattleScript_1D83B5[]; //present full hp
+extern u8 BattleScript_1D839B[]; //present hp heal
+extern u8 BattleScript_1D6F74[];
+extern u8 gUnknown_081D977D[]; //castform change bs
+extern u8 gUnknown_081D9834[];
+extern u8 gUnknown_081D90FC[]; //bs random switchout
+extern u8 gUnknown_081D95DB[]; //bs payday money give
+
+//useful macros
+//read via orr
+#define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
+#define BSScriptRead8(ptr) (((u8)((ptr)[0])))
+#define BSScriptReadPtr(ptr) ((void *)BSScriptRead32(ptr))
+
+//read via add
+#define BS2ScriptRead32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
+#define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
+#define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr))
+
+
+#define MOVESTATUS_MISSED (1 << 0)
+#define MOVESTATUS_SUPEREFFECTIVE (1 << 1)
+#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2)
+#define MOVESTATUS_NOTAFFECTED (1 << 3)
+#define MOVESTATUS_ONEHITKO (1 << 4)
+#define MOVESTATUS_FAILED (1 << 5)
+#define MOVESTATUS_ENDURED (1 << 6)
+#define MOVESTATUS_HUNGON (1 << 7)
+
+#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))
+
+#define TargetProtectAffected ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
+
+#define ABILITYEFFECT_CONTACT 0x4
+#define ABILITYEFFECT_IMMUNITY 0x5
+#define ABILITYEFFECT_SYNCHRONIZE 0x7
+#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
+#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
+#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD
+#define ABILITYEFFECT_COUNT_OTHER_SIZE 0x10
+#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11
+#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
+#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
+
+//array entries for battle communication
+#define MOVE_EFFECT_BYTE 0x3
+#define MULTISTRING_CHOOSER 0x5
+#define MSG_DISPLAY 0x7
+
+#define TARGET_SELECTED 0x0
+#define TARGET_DEPENDS 0x1
+#define TARGET_BOTH 0x8
+#define TARGET_FOES_AND_ALLY 0x20
+#define TARGET_OPPONENTS_FIELD 0x40
+
+#define TYPE_FORESIGHT 0xFE
+#define TYPE_ENDTABLE 0xFF
+
+#define CMP_EQUAL 0x0
+#define CMP_NOT_EQUAL 0x1
+#define CMP_GREATER_THAN 0x2
+#define CMP_LESS_THAN 0x3
+#define CMP_COMMON_BITS 0x4
+#define CMP_NO_COMMON_BITS 0x5
+
+#define BATTLE_WON 0x1
+#define BATTLE_LOST 0x2
+#define BATTLE_DREW 0x3
+#define BATTLE_RAN 0x4
+#define BATTLE_PLAYER_TELEPORTED 0x5
+#define BATTLE_POKE_FLED 0x6
+#define BATTLE_CAUGHT 0x7
+#define BATTLE_OPPONENT_TELEPORTED 0xA
+
+#define uBYTE0_16(value)(( (u8) (((u16)(value) & (0x000000FF)) >> 0x00)))
+#define uBYTE1_16(value)(( (u8) (((u16)(value) & (0x0000FF00)) >> 0x08)))
+
+#define uBYTE0_32(value)(( (u8) (((u32)(value) & (0x000000FF)) >> 0x00)))
+#define uBYTE1_32(value)(( (u8) (((u32)(value) & (0x0000FF00)) >> 0x08)))
+#define uBYTE2_32(value)(( (u8) (((u32)(value) & (0x00FF0000)) >> 0x10)))
+#define uBYTE3_32(value)(( (u8) (((u32)(value) & (0xFF000000)) >> 0x18)))
+
+#define sBYTE0_16(value)(( (u8) (((s16)(value) & (0x000000FF)) >> 0x00)))
+#define sBYTE1_16(value)(( (u8) (((s16)(value) & (0x0000FF00)) >> 0x08)))
+
+#define sBYTE0_32(value)(( (u8) (((s32)(value) & (0x000000FF)) >> 0x00)))
+#define sBYTE1_32(value)(( (u8) (((s32)(value) & (0x0000FF00)) >> 0x08)))
+#define sBYTE2_32(value)(( (u8) (((s32)(value) & (0x00FF0000)) >> 0x10)))
+#define sBYTE3_32(value)(( (u8) (((s32)(value) & (0xFF000000)) >> 0x18)))
+
+#define USED_HELD_ITEM(bank)((((u16*)(&unk_2000000[bank * 2 + 0x160cc]))))
+
+#define RecordAbilitySetField6(ability, fieldValue) \
+(gLastUsedAbility = ability, gBattleCommunication[6] = fieldValue, RecordAbilityBattle(gBankTarget, ability))
+
+#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
+#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_physical.moveturnLostHP_special)))
+
+#define HP_ON_SWITCHOUT (((u16*)(0x020160bc)))
+
+static void atk00_attackcanceler(void);
+static void atk01_accuracycheck(void);
+static void atk02_attackstring(void);
+static void atk03_ppreduce(void);
+static void atk04_critcalc(void);
+static void atk05_damagecalc1(void);
+static void atk06_typecalc(void);
+static void atk07_dmg_adjustment(void);
+static void atk08_dmg_adjustment2(void);
+static void atk09_attackanimation(void);
+static void atk0A_waitanimation(void);
+static void atk0B_healthbarupdate(void);
+static void atk0C_datahpupdate(void);
+static void atk0D_critmessage(void);
+static void atk0E_effectiveness_sound(void);
+static void atk0F_resultmessage(void);
+static void atk10_printstring(void);
+static void atk11_printstring_playeronly(void);
+static void atk12_waitmessage(void);
+static void atk13_printfromtable(void);
+static void atk14_printfromtable_playeronly(void);
+static void atk15_seteffectwithchancetarget(void);
+static void atk16_seteffectprimary(void);
+static void atk17_seteffectsecondary(void);
+static void atk18_status_effect_clear(void);
+static void atk19_faint_pokemon(void);
+static void atk1A_faint_animation(void);
+static void atk1B_faint_effects_clear(void);
+static void atk1C_jumpifstatus(void);
+static void atk1D_jumpifstatus2(void);
+static void atk1E_jumpifability(void);
+static void atk1F_jumpifsideaffecting(void);
+static void atk20_jumpifstat(void);
+static void atk21_jumpifstatus3(void);
+static void atk22_jumpiftype(void);
+static void atk23_getexp(void);
+static void atk24(void);
+static void atk25_move_values_cleanup(void);
+static void atk26_set_multihit(void);
+static void atk27_decrement_multihit(void);
+static void atk28_goto(void);
+static void atk29_jumpifbyte(void);
+static void atk2A_jumpifhalfword(void);
+static void atk2B_jumpifword(void);
+static void atk2C_jumpifarrayequal(void);
+static void atk2D_jumpifarraynotequal(void);
+static void atk2E_setbyte(void);
+static void atk2F_addbyte(void);
+static void atk30_subbyte(void);
+static void atk31_copyarray(void);
+static void atk32_copyarray_withindex(void);
+static void atk33_orbyte(void);
+static void atk34_orhalfword(void);
+static void atk35_orword(void);
+static void atk36_bicbyte(void);
+static void atk37_bichalfword(void);
+static void atk38_bicword(void);
+static void atk39_pause(void);
+static void atk3A_waitstate(void);
+static void atk3B_healthbar_update(void);
+static void atk3C_return(void);
+static void atk3D_end(void);
+static void atk3E_end2(void);
+static void atk3F_end3(void);
+static void atk40_jump_if_move_affected_by_protect(void);
+static void atk41_call(void);
+static void atk42_jumpiftype2(void);
+static void atk43_jumpifabilitypresent(void);
+static void atk44(void);
+static void atk45_playanimation(void);
+static void atk46_playanimation2(void);
+static void atk47_setgraphicalstatchangevalues(void);
+static void atk48_playstatchangeanimation(void);
+static void atk49_moveendturn(void);
+static void atk4A_typecalc2(void);
+static void atk4B_return_atk_to_ball(void);
+static void atk4C_copy_poke_data(void);
+static void atk4D_switch_data_update(void);
+static void atk4E_switchin_anim(void);
+static void atk4F_jump_if_cannot_switch(void);
+static void atk50_openpartyscreen(void);
+static void atk51_switch_handle_order(void);
+static void atk52_switch_in_effects(void);
+static void atk53_trainer_slide(void);
+static void atk54_effectiveness_sound(void);
+static void atk55_play_sound(void);
+static void atk56_fainting_cry(void);
+static void atk57(void);
+static void atk58_return_to_ball(void);
+void atk59_learnmove_inbattle(void);
+static void atk5A(void);
+static void atk5B_80256E0(void);
+static void atk5C_hitanimation(void);
+static void atk5D_getmoneyreward(void);
+static void atk5E_8025A70(void);
+static void atk5F_8025B24(void);
+static void atk60_increment_gamestat(void);
+static void atk61_8025BA4(void);
+static void atk62_08025C6C(void);
+static void atk63_jumptorandomattack(void);
+static void atk64_statusanimation(void);
+static void atk65_status2animation(void);
+static void atk66_chosenstatusanimation(void);
+static void atk67_8025ECC(void);
+static void atk68_80246A0(void);
+static void atk69_dmg_adjustment2(void);
+void atk6A_removeitem(void);
+static void atk6B_atknameinbuff1(void);
+static void atk6C_lvlbox_display(void);
+static void atk6D_set_sentpokes_values(void);
+static void atk6E_set_atk_to_player0(void);
+static void atk6F_set_visible(void);
+static void atk70_record_ability(void);
+static void atk71_buffer_move_to_learn(void);
+static void atk72_jump_if_can_run_frombattle(void);
+static void atk73_hp_thresholds(void);
+static void atk74_hp_thresholds2(void);
+static void atk75_8026A58(void);
+static void atk76_various(void);
+static void atk77_setprotect(void);
+static void atk78_faintifabilitynotdamp(void);
+static void atk79_setatkhptozero(void);
+static void atk7A_jumpwhiletargetvalid(void);
+static void atk7B_healhalfHP_if_possible(void);
+static void atk7C_8025508(void);
+static void atk7D_set_rain(void);
+static void atk7E_setreflect(void);
+static void atk7F_setseeded(void);
+static void atk80_manipulatedamage(void);
+static void atk81_setrest(void);
+static void atk82_jumpifnotfirstturn(void);
+static void atk83_nop(void);
+static void atk84_jump_if_cant_sleep(void);
+static void atk85_stockpile(void);
+static void atk86_stockpiletobasedamage(void);
+static void atk87_stockpiletohpheal(void);
+static void atk88_negativedamage(void);
+static void atk89_statbuffchange(void);
+static void atk8A_normalisebuffs(void);
+static void atk8B_setbide(void);
+static void atk8C_confuseifrepeatingattackends(void);
+static void atk8D_setmultihit_counter(void);
+static void atk8E_prepare_multihit(void);
+static void atk8F_forcerandomswitch(void);
+static void atk90_conversion_type_change(void);
+static void atk91_givepaydaymoney(void);
+static void atk92_setlightscreen(void);
+static void atk93_ko_move(void);
+static void atk94_gethalfcurrentenemyhp(void);
+static void atk95_setsandstorm(void);
+static void atk96_weatherdamage(void);
+static void atk97_try_infatuation(void);
+static void atk98_status_icon_update(void);
+static void atk99_setmist(void);
+static void atk9A_set_focusenergy(void);
+static void atk9B_transformdataexecution(void);
+static void atk9C_set_substitute(void);
+static void atk9D_copyattack(void);
+static void atk9E_metronome(void);
+static void atk9F_dmgtolevel(void);
+static void atkA0_psywavedamageeffect(void);
+static void atkA1_counterdamagecalculator(void);
+static void atkA2_mirrorcoatdamagecalculator(void);
+static void atkA3_disablelastusedattack(void);
+static void atkA4_setencore(void);
+static void atkA5_painsplitdmgcalc(void);
+static void atkA6_settypetorandomresistance(void);
+static void atkA7_setalwayshitflag(void);
+static void atkA8_copymovepermanently(void);
+static void atkA9_sleeptalk_choose_move(void);
+static void atkAA_set_destinybond(void);
+static void atkAB_DestinyBondFlagUpdate(void);
+static void atkAC_remaininghptopower(void);
+static void atkAD_spite_ppreduce(void);
+static void atkAE_heal_party_status(void);
+static void atkAF_cursetarget(void);
+static void atkB0_set_spikes(void);
+static void atkB1_set_foresight(void);
+static void atkB2_setperishsong(void);
+static void atkB3_rolloutdamagecalculation(void);
+static void atkB4_jumpifconfusedandstatmaxed(void);
+static void atkB5_furycuttercalc(void);
+static void atkB6_happinesstodamagecalculation(void);
+static void atkB7_presentdamagecalculation(void);
+static void atkB8_set_safeguard(void);
+static void atkB9_magnitudedamagecalculation(void);
+static void atkBA_jumpifnopursuitswitchdmg(void);
+static void atkBB_setsunny(void);
+static void atkBC_maxattackhalvehp(void);
+static void atkBD_copyfoestats(void);
+static void atkBE_breakfree(void);
+static void atkBF_set_defense_curl(void);
+static void atkC0_recoverbasedonsunlight(void);
+static void atkC1_hidden_power(void);
+static void atkC2_selectnexttarget(void);
+static void atkC3_setfutureattack(void);
+static void atkC4_beat_up(void);
+static void atkC5_hidepreattack(void);
+static void atkC6_unhidepostattack(void);
+static void atkC7_setminimize(void);
+static void atkC8_sethail(void);
+static void atkC9_jumpifattackandspecialattackcannotfall(void);
+static void atkCA_setforcedtarget(void);
+static void atkCB_setcharge(void);
+static void atkCC_callterrainattack(void);
+static void atkCD_cureifburnedparalysedorpoisoned(void);
+static void atkCE_settorment(void);
+static void atkCF_jumpifnodamage(void);
+static void atkD0_settaunt(void);
+static void atkD1_set_helpinghand(void);
+static void atkD2_swap_items(void);
+static void atkD3_copy_ability(void);
+static void atkD4_wish_effect(void);
+static void atkD5_setroots(void);
+static void atkD6_doubledamagedealtifdamaged(void);
+static void atkD7_setyawn(void);
+static void atkD8_setdamagetohealthdifference(void);
+static void atkD9_scaledamagebyhealthratio(void);
+static void atkDA_abilityswap(void);
+static void atkDB_imprisoneffect(void);
+static void atkDC_setgrudge(void);
+static void atkDD_weightdamagecalculation(void);
+static void atkDE_asistattackselect(void);
+static void atkDF_setmagiccoat(void);
+static void atkE0_setstealstatchange(void);
+static void atkE1_intimidate_string_loader(void);
+static void atkE2_switchout_abilities(void);
+static void atkE3_jumpiffainted(void);
+static void atkE4_getsecretpowereffect(void);
+static void atkE5_pickup(void);
+static void atkE6_castform_change_animation(void);
+static void atkE7_castform_data_change(void);
+static void atkE8_settypebasedhalvers(void);
+static void atkE9_setweatherballtype(void);
+static void atkEA_recycleitem(void);
+static void atkEB_settypetoterrain(void);
+static void atkEC_pursuit_sth(void);
+static void atkED_802B4B4(void);
+static void atkEE_removelightscreenreflect(void);
+void atkEF_pokeball_catch_calculation(void);
+static void atkF0_copy_caught_poke(void);
+static void atkF1_setpoke_as_caught(void);
+static void atkF2_display_dex_info(void);
+static void atkF3_nickname_caught_poke(void);
+static void atkF4_802BEF0(void);
+static void atkF5_removeattackerstatus1(void);
+static void atkF6_802BF48(void);
+static void atkF7_802BF54(void);
+
+typedef void (*BattleCmdFunc)(void);
+
+const BattleCmdFunc gBattleScriptingCommandsTable[] =
+{
+ atk00_attackcanceler,
+ atk01_accuracycheck,
+ atk02_attackstring,
+ atk03_ppreduce,
+ atk04_critcalc,
+ atk05_damagecalc1,
+ atk06_typecalc,
+ atk07_dmg_adjustment,
+ atk08_dmg_adjustment2,
+ atk09_attackanimation,
+ atk0A_waitanimation,
+ atk0B_healthbarupdate,
+ atk0C_datahpupdate,
+ atk0D_critmessage,
+ atk0E_effectiveness_sound,
+ atk0F_resultmessage,
+ atk10_printstring,
+ atk11_printstring_playeronly,
+ atk12_waitmessage,
+ atk13_printfromtable,
+ atk14_printfromtable_playeronly,
+ atk15_seteffectwithchancetarget,
+ atk16_seteffectprimary,
+ atk17_seteffectsecondary,
+ atk18_status_effect_clear,
+ atk19_faint_pokemon,
+ atk1A_faint_animation,
+ atk1B_faint_effects_clear,
+ atk1C_jumpifstatus,
+ atk1D_jumpifstatus2,
+ atk1E_jumpifability,
+ atk1F_jumpifsideaffecting,
+ atk20_jumpifstat,
+ atk21_jumpifstatus3,
+ atk22_jumpiftype,
+ atk23_getexp,
+ atk24,
+ atk25_move_values_cleanup,
+ atk26_set_multihit,
+ atk27_decrement_multihit,
+ atk28_goto,
+ atk29_jumpifbyte,
+ atk2A_jumpifhalfword,
+ atk2B_jumpifword,
+ atk2C_jumpifarrayequal,
+ atk2D_jumpifarraynotequal,
+ atk2E_setbyte,
+ atk2F_addbyte,
+ atk30_subbyte,
+ atk31_copyarray,
+ atk32_copyarray_withindex,
+ atk33_orbyte,
+ atk34_orhalfword,
+ atk35_orword,
+ atk36_bicbyte,
+ atk37_bichalfword,
+ atk38_bicword,
+ atk39_pause,
+ atk3A_waitstate,
+ atk3B_healthbar_update,
+ atk3C_return,
+ atk3D_end,
+ atk3E_end2,
+ atk3F_end3,
+ atk40_jump_if_move_affected_by_protect,
+ atk41_call,
+ atk42_jumpiftype2,
+ atk43_jumpifabilitypresent,
+ atk44,
+ atk45_playanimation,
+ atk46_playanimation2,
+ atk47_setgraphicalstatchangevalues,
+ atk48_playstatchangeanimation,
+ atk49_moveendturn,
+ atk4A_typecalc2,
+ atk4B_return_atk_to_ball,
+ atk4C_copy_poke_data,
+ atk4D_switch_data_update,
+ atk4E_switchin_anim,
+ atk4F_jump_if_cannot_switch,
+ atk50_openpartyscreen,
+ atk51_switch_handle_order,
+ atk52_switch_in_effects,
+ atk53_trainer_slide,
+ atk54_effectiveness_sound,
+ atk55_play_sound,
+ atk56_fainting_cry,
+ atk57,
+ atk58_return_to_ball,
+ atk59_learnmove_inbattle,
+ atk5A,
+ atk5B_80256E0,
+ atk5C_hitanimation,
+ atk5D_getmoneyreward,
+ atk5E_8025A70,
+ atk5F_8025B24,
+ atk60_increment_gamestat,
+ atk61_8025BA4,
+ atk62_08025C6C,
+ atk63_jumptorandomattack,
+ atk64_statusanimation,
+ atk65_status2animation,
+ atk66_chosenstatusanimation,
+ atk67_8025ECC,
+ atk68_80246A0,
+ atk69_dmg_adjustment2,
+ atk6A_removeitem,
+ atk6B_atknameinbuff1,
+ atk6C_lvlbox_display,
+ atk6D_set_sentpokes_values,
+ atk6E_set_atk_to_player0,
+ atk6F_set_visible,
+ atk70_record_ability,
+ atk71_buffer_move_to_learn,
+ atk72_jump_if_can_run_frombattle,
+ atk73_hp_thresholds,
+ atk74_hp_thresholds2,
+ atk75_8026A58,
+ atk76_various,
+ atk77_setprotect,
+ atk78_faintifabilitynotdamp,
+ atk79_setatkhptozero,
+ atk7A_jumpwhiletargetvalid,
+ atk7B_healhalfHP_if_possible,
+ atk7C_8025508,
+ atk7D_set_rain,
+ atk7E_setreflect,
+ atk7F_setseeded,
+ atk80_manipulatedamage,
+ atk81_setrest,
+ atk82_jumpifnotfirstturn,
+ atk83_nop,
+ atk84_jump_if_cant_sleep,
+ atk85_stockpile,
+ atk86_stockpiletobasedamage,
+ atk87_stockpiletohpheal,
+ atk88_negativedamage,
+ atk89_statbuffchange,
+ atk8A_normalisebuffs,
+ atk8B_setbide,
+ atk8C_confuseifrepeatingattackends,
+ atk8D_setmultihit_counter,
+ atk8E_prepare_multihit,
+ atk8F_forcerandomswitch,
+ atk90_conversion_type_change,
+ atk91_givepaydaymoney,
+ atk92_setlightscreen,
+ atk93_ko_move,
+ atk94_gethalfcurrentenemyhp,
+ atk95_setsandstorm,
+ atk96_weatherdamage,
+ atk97_try_infatuation,
+ atk98_status_icon_update,
+ atk99_setmist,
+ atk9A_set_focusenergy,
+ atk9B_transformdataexecution,
+ atk9C_set_substitute,
+ atk9D_copyattack,
+ atk9E_metronome,
+ atk9F_dmgtolevel,
+ atkA0_psywavedamageeffect,
+ atkA1_counterdamagecalculator,
+ atkA2_mirrorcoatdamagecalculator,
+ atkA3_disablelastusedattack,
+ atkA4_setencore,
+ atkA5_painsplitdmgcalc,
+ atkA6_settypetorandomresistance,
+ atkA7_setalwayshitflag,
+ atkA8_copymovepermanently,
+ atkA9_sleeptalk_choose_move,
+ atkAA_set_destinybond,
+ atkAB_DestinyBondFlagUpdate,
+ atkAC_remaininghptopower,
+ atkAD_spite_ppreduce,
+ atkAE_heal_party_status,
+ atkAF_cursetarget,
+ atkB0_set_spikes,
+ atkB1_set_foresight,
+ atkB2_setperishsong,
+ atkB3_rolloutdamagecalculation,
+ atkB4_jumpifconfusedandstatmaxed,
+ atkB5_furycuttercalc,
+ atkB6_happinesstodamagecalculation,
+ atkB7_presentdamagecalculation,
+ atkB8_set_safeguard,
+ atkB9_magnitudedamagecalculation,
+ atkBA_jumpifnopursuitswitchdmg,
+ atkBB_setsunny,
+ atkBC_maxattackhalvehp,
+ atkBD_copyfoestats,
+ atkBE_breakfree,
+ atkBF_set_defense_curl,
+ atkC0_recoverbasedonsunlight,
+ atkC1_hidden_power,
+ atkC2_selectnexttarget,
+ atkC3_setfutureattack,
+ atkC4_beat_up,
+ atkC5_hidepreattack,
+ atkC6_unhidepostattack,
+ atkC7_setminimize,
+ atkC8_sethail,
+ atkC9_jumpifattackandspecialattackcannotfall,
+ atkCA_setforcedtarget,
+ atkCB_setcharge,
+ atkCC_callterrainattack,
+ atkCD_cureifburnedparalysedorpoisoned,
+ atkCE_settorment,
+ atkCF_jumpifnodamage,
+ atkD0_settaunt,
+ atkD1_set_helpinghand,
+ atkD2_swap_items,
+ atkD3_copy_ability,
+ atkD4_wish_effect,
+ atkD5_setroots,
+ atkD6_doubledamagedealtifdamaged,
+ atkD7_setyawn,
+ atkD8_setdamagetohealthdifference,
+ atkD9_scaledamagebyhealthratio,
+ atkDA_abilityswap,
+ atkDB_imprisoneffect,
+ atkDC_setgrudge,
+ atkDD_weightdamagecalculation,
+ atkDE_asistattackselect,
+ atkDF_setmagiccoat,
+ atkE0_setstealstatchange,
+ atkE1_intimidate_string_loader,
+ atkE2_switchout_abilities,
+ atkE3_jumpiffainted,
+ atkE4_getsecretpowereffect,
+ atkE5_pickup,
+ atkE6_castform_change_animation,
+ atkE7_castform_data_change,
+ atkE8_settypebasedhalvers,
+ atkE9_setweatherballtype,
+ atkEA_recycleitem,
+ atkEB_settypetoterrain,
+ atkEC_pursuit_sth,
+ atkED_802B4B4,
+ atkEE_removelightscreenreflect,
+ atkEF_pokeball_catch_calculation,
+ atkF0_copy_caught_poke,
+ atkF1_setpoke_as_caught,
+ atkF2_display_dex_info,
+ atkF3_nickname_caught_poke,
+ atkF4_802BEF0,
+ atkF5_removeattackerstatus1,
+ atkF6_802BF48,
+ atkF7_802BF54,
+};
+
+struct statFractions
+{
+ u8 dividend;
+ u8 divisor;
+};
+
+static const struct statFractions gAccuracyStageRatios[] =
+{
+ { 33, 100}, // -6
+ { 36, 100}, // -5
+ { 43, 100}, // -4
+ { 50, 100}, // -3
+ { 60, 100}, // -2
+ { 75, 100}, // -1
+ { 1, 1}, // 0
+ {133, 100}, // +1
+ {166, 100}, // +2
+ { 2, 1}, // +3
+ {233, 100}, // +4
+ {133, 50}, // +5
+ { 3, 1}, // +6
+};
+
+//The chance is 1/N for each stage.
+static const u16 gCriticalHitChance[] = {16, 8, 4, 3, 2};
+
+static const u32 gStatusFlagsForMoveEffects[] =
+{
+ 0x00000000,
+ 0x00000007,
+ 0x00000008,
+ 0x00000010,
+ 0x00000020,
+ 0x00000040,
+ 0x00000080,
+ 0x00000007,
+ 0x00000008,
+ 0x00000000,
+ 0x00000070,
+ 0x00000000,
+ 0x00001000,
+ 0x0000E000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00400000,
+ 0x00000000,
+ 0x00000000,
+ 0x04000000,
+ 0x08000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000C00,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000
+};
+
+extern const u8 BattleScript_1D963E[];
+extern const u8 BattleScript_1D965A[];
+extern const u8 BattleScript_1D9669[];
+extern const u8 BattleScript_1D9678[];
+extern const u8 BattleScript_1D9687[];
+extern const u8 BattleScript_1D969D[];
+extern const u8 BattleScript_1D96BA[];
+extern const u8 BattleScript_1D9696[];
+extern const u8 BattleScript_1D96B1[];
+extern const u8 BattleScript_1D96AA[];
+extern const u8 BattleScript_1D96C8[];
+
+const u8* const gMoveEffectBS_Ptrs[] =
+{
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D965A,
+ BattleScript_1D9669,
+ BattleScript_1D9678,
+ BattleScript_1D9687,
+ BattleScript_1D969D,
+ BattleScript_1D96BA,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D9696,
+ BattleScript_1D96AA,
+ BattleScript_1D963E,
+ BattleScript_1D96B1,
+ BattleScript_1D96C8,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D96C8
+};
+
+const u8 sUnreferencedBitMask1[] = {0, 1, 3, 7, 0xF, 0x1F, 0x3F};
+
+const u8 gLevelUpStatBoxStats[] = {MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPD};
+
+static const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF};
+
+static const u16 sUnknown_081FACFE[] = //banned moves to copy
+{
+ MOVE_METRONOME,
+ MOVE_STRUGGLE,
+ MOVE_SKETCH,
+ MOVE_MIMIC,
+ 0xFFFE,
+ MOVE_COUNTER,
+ MOVE_MIRROR_COAT,
+ MOVE_PROTECT,
+ MOVE_DETECT,
+ MOVE_ENDURE,
+ MOVE_DESTINY_BOND,
+ MOVE_SLEEP_TALK,
+ MOVE_THIEF,
+ MOVE_FOLLOW_ME,
+ MOVE_SNATCH,
+ MOVE_HELPING_HAND,
+ MOVE_COVET,
+ MOVE_TRICK,
+ MOVE_FOCUS_PUNCH,
+ 0xFFFF
+};
+
+static const u8 sUnknown_081FAD26[] =
+{
+ 1, 200,
+ 4, 150,
+ 9, 100,
+ 16, 80,
+ 32, 40,
+ 48, 20
+};
+
+static const u16 sNaturePowerMoves[] =
+{
+ MOVE_STUN_SPORE,
+ MOVE_RAZOR_LEAF,
+ MOVE_EARTHQUAKE,
+ MOVE_HYDRO_PUMP,
+ MOVE_SURF,
+ MOVE_BUBBLE_BEAM,
+ MOVE_ROCK_SLIDE,
+ MOVE_SHADOW_BALL,
+ MOVE_SWIFT,
+ MOVE_SWIFT
+};
+
+//weight-based damage table for Low Kick
+//format: min. weight (hectograms), base power
+static const u16 sWeightDamage[] =
+{
+ 100, 20,
+ 250, 40,
+ 500, 60,
+ 1000, 80,
+ 2000, 100,
+ -1, -1
+};
+
+static const u16 sPickupItems[] =
+{
+ ITEM_SUPER_POTION, 30,
+ ITEM_FULL_HEAL, 40,
+ ITEM_ULTRA_BALL, 50,
+ ITEM_RARE_CANDY, 60,
+ ITEM_FULL_RESTORE, 70,
+ ITEM_REVIVE, 80,
+ ITEM_NUGGET, 90,
+ ITEM_PROTEIN, 95,
+ ITEM_PP_UP, 99,
+ ITEM_KINGS_ROCK, 1
+};
+
+static const u8 sTerrainToType[] =
+{
+ TYPE_GRASS, // tall grass
+ TYPE_GRASS, // long grass
+ TYPE_GROUND, // sand
+ TYPE_WATER, // underwater
+ TYPE_WATER, // water
+ TYPE_WATER, // pond water
+ TYPE_ROCK , // rock
+ TYPE_ROCK , // cave
+ TYPE_NORMAL, // building
+ TYPE_NORMAL, // plain
+};
+
+static const u8 sBallCatchBonuses[] =
+{
+ 20, 15, 10, 15 //Ultra, Great, Poke, Safari
+};
+
+static void atk00_attackcanceler(void)
+{
+ int i;
+ if (gBattleOutcome)
+ {
+ gFightStateTracker = 0xC;
+ return;
+ }
+ if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
+ {
+ gHitMarker |= HITMARKER_x80000;
+ gBattlescriptCurrInstr = BattleScript_EndTurn;
+ return;
+ }
+ if (CantUseMove())
+ return;
+ if (AbilityBattleEffects(2, gBankTarget, 0, 0, 0))
+ return;
+ if (!gBattleMons[gBankAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200)
+ && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
+ {
+ gBattlescriptCurrInstr = BattleScript_NoPPForMove;
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ return;
+ }
+ gHitMarker &= ~(HITMARKER_x800000);
+ if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
+ {
+ u8 disobedient = IsPokeDisobedient();
+ asm("":::"r0"); //It's impossible to match
+ asm("":::"r1");
+ if ((disobedient))
+ {
+ if (disobedient == 2)
+ gHitMarker |= HITMARKER_OBEYS;
+ else
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ return;
+ }
+ }
+ gHitMarker |= HITMARKER_OBEYS;
+ if (gProtectStructs[gBankTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED)
+ {
+ PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT);
+ gProtectStructs[gBankTarget].bounceMove = 0;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_MagicCoatBounce;
+ return;
+ }
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if ((gProtectStructs[gTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
+ {
+ PressurePPLose(gBankAttacker, gTurnOrder[i], MOVE_SNATCH);
+ gProtectStructs[gTurnOrder[i]].stealMove = 0;
+ BATTLE_STRUCT->scriptingActive = gTurnOrder[i];
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_SnatchedMove;
+ return;
+ }
+ }
+ if (gSpecialStatuses[gBankTarget].lightningRodRedirected)
+ {
+ gSpecialStatuses[gBankTarget].lightningRodRedirected = 0;
+ gLastUsedAbility = ABILITY_LIGHTNING_ROD;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_TookAttack;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ else if (TargetProtectAffected
+ && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST))
+ && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))))
+ {
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveHitWith[gBankTarget] = 0;
+ gUnknown_02024C44[gBankTarget] = 0;
+ gBattleCommunication[6] = 1;
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void JumpIfMoveFailed(u8 adder, u16 move)
+{
+ void* to_store = gBattlescriptCurrInstr + adder;
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ {
+ gMoveHitWith[gBankTarget] = 0;
+ gUnknown_02024C44[gBankTarget] = 0;
+ to_store = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ DestinyBondFlagUpdate();
+ if (AbilityBattleEffects(3, gBankTarget, 0, 0, move))
+ return;
+ }
+ gBattlescriptCurrInstr = to_store;
+}
+
+static void atk40_jump_if_move_affected_by_protect(void)
+{
+ if (TargetProtectAffected)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(5, 0);
+ gBattleCommunication[6] = 1;
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static bool8 JumpIfMoveAffectedByProtect(u16 move)
+{
+ bool8 affected = 0;
+ if (TargetProtectAffected)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(7, move);
+ gBattleCommunication[6] = 1;
+ affected = 1;
+ }
+ return affected;
+}
+
+static bool8 AccuracyCalcHelper(u16 move)
+{
+ if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker)
+ {
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+
+ if (!(gHitMarker & HITMARKER_IGNORE_ON_AIR) && gStatuses3[gBankTarget] & STATUS3_ON_AIR)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+ gHitMarker &= ~HITMARKER_IGNORE_ON_AIR;
+
+ if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBankTarget] & STATUS3_UNDERGROUND)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+ gHitMarker &= ~HITMARKER_IGNORE_UNDERGROUND;
+
+ if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBankTarget] & STATUS3_UNDERWATER)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+ gHitMarker &= ~HITMARKER_IGNORE_UNDERWATER;
+
+ if ((WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) && gBattleMoves[move].effect == EFFECT_THUNDER)
+ || (gBattleMoves[move].effect == EFFECT_ALWAYS_HIT || gBattleMoves[move].effect == EFFECT_VITAL_THROW))
+ {
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void atk01_accuracycheck(void)
+{
+ u16 move = BS2ScriptRead16(gBattlescriptCurrInstr + 5);
+ if (move == 0xFFFE || move == 0xFFFF)
+ {
+ if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker)
+ gBattlescriptCurrInstr += 7;
+ else if (gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else if (!JumpIfMoveAffectedByProtect(0))
+ gBattlescriptCurrInstr += 7;
+ }
+ else
+ {
+ u8 type; s8 buff; u8 MoveAcc; u16 calc; u8 hold_effect; u8 quality;
+ if (move == 0) {move = gCurrentMove;}
+
+ if (BATTLE_STRUCT->dynamicMoveType)
+ type = BATTLE_STRUCT->dynamicMoveType & 0x3F;
+ else
+ type = gBattleMoves[move].type;
+
+ if (JumpIfMoveAffectedByProtect(move))
+ return;
+ if (AccuracyCalcHelper(move))
+ return;
+
+ if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ {
+ u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC];
+ buff = acc;
+ }
+ else
+ {
+ u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC];
+ buff = acc + 6 - gBattleMons[gBankTarget].statStages[STAT_STAGE_EVASION];
+ }
+
+ if (buff < 0) {buff = 0;}
+ if (buff > 0xC) {buff = 0xC;}
+
+ MoveAcc = gBattleMoves[move].accuracy;
+ //check Thunder on sunny weather
+ if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER)
+ MoveAcc = 50;
+
+ calc = gAccuracyStageRatios[buff].dividend * MoveAcc;
+ calc /= gAccuracyStageRatios[buff].divisor;
+
+ if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES)
+ calc = (calc * 130) / 100; //1.3 compound eyes boost
+ if (WEATHER_HAS_EFFECT && gBattleMons[gBankTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY)
+ calc = (calc * 80) / 100; //1.2 sand veil loss;
+ if (gBattleMons[gBankAttacker].ability == ABILITY_HUSTLE && type < 9)
+ calc = (calc * 80) / 100; //1.2 hustle loss;
+
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_EVASION_UP)
+ calc = (calc * (100 - quality)) / 100;
+
+ //final calculation
+ if ((Random() % 100 + 1) > calc)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && (gBattleMoves[move].target == 0x8 || gBattleMoves[move].target == 0x20))
+ gBattleCommunication[6] = 2;
+ else
+ gBattleCommunication[6] = 0;
+ b_wonderguard_and_levitate();
+
+ }
+ JumpIfMoveFailed(7, move);
+ }
+}
+
+static void atk02_attackstring(void)
+{
+ if (gBattleExecBuffer)
+ return;
+ if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED)))
+ {
+ PrepareStringBattle(4, gBankAttacker);
+ gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED;
+ }
+ gBattlescriptCurrInstr++;
+ gBattleCommunication[MSG_DISPLAY] = 0;
+}
+
+static void atk03_ppreduce(void)
+{
+ int to_deduct = 1;
+ if (gBattleExecBuffer)
+ return;
+ if (!gSpecialStatuses[gBankAttacker].flag20)
+ {
+ switch (gBattleMoves[gCurrentMove].target)
+ {
+ case TARGET_FOES_AND_ALLY:
+ to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0);
+ break;
+ case TARGET_BOTH:
+ case TARGET_OPPONENTS_FIELD:
+ to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_PRESSURE, 0, 0);
+ break;
+ default:
+ if (gBankAttacker != gBankTarget && gBattleMons[gBankTarget].ability == ABILITY_PRESSURE)
+ to_deduct++;
+ break;
+ }
+ }
+ if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBankAttacker].pp[gCurrMovePos])
+ {
+ gProtectStructs[gBankAttacker].notFirstStrike = 1;
+ if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > to_deduct)
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] -= to_deduct;
+ else
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = 0;
+
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
+ && !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos]))
+ {
+ gActiveBank = gBankAttacker;
+ EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]);
+ MarkBufferBankForExecution(gBankAttacker);
+ }
+ }
+ gHitMarker &= ~(HITMARKER_NO_PPDEDUCT);
+ gBattlescriptCurrInstr++;
+}
+
+static void atk04_critcalc(void)
+{
+ u8 hold_effect; u16 item; u16 crit_chance; int adderv3, adderv5, adderv6, adderv7, adderv8, adderv9, adderv10, adderv11; u16 adderv12;
+ item = gBattleMons[gBankAttacker].item;
+ if (item == ITEM_ENIGMA_BERRY)
+ hold_effect = gEnigmaBerries[gBankAttacker].holdEffect;
+ else
+ hold_effect = ItemId_GetHoldEffect(item);
+
+ gStringBank = gBankAttacker;
+
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY)
+ adderv3 = 2;
+ else
+ adderv3 = 0;
+
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL) {adderv3++;}
+ adderv5 = adderv3;
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK) {adderv5 = adderv3 + 1;}
+
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK) {adderv5++;}
+ adderv6 = adderv5;
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL) {adderv6 = adderv5 + 1;}
+
+ adderv7 = 0;
+ if (hold_effect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBankAttacker].species == SPECIES_CHANSEY) {adderv7 = 1;}
+ adderv8 = 2 * adderv7;
+ adderv9 = 0;
+ if (hold_effect == HOLD_EFFECT_STICK && gBattleMons[gBankAttacker].species == SPECIES_FARFETCHD) {adderv9 = 1;}
+ adderv11 = 2 * adderv9;
+ if (hold_effect == HOLD_EFFECT_SCOPE_LENS)
+ {adderv10 = 1 + adderv6 + adderv8; adderv12 = adderv10 + adderv11;}
+ else
+ {adderv10 = adderv6 + adderv8; adderv12 = adderv10 + adderv11;}
+
+ crit_chance = adderv12;
+
+ if (crit_chance > 4) {crit_chance = 4;}
+
+ if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR)
+ && !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT)
+ && !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE))
+ && !(Random() % gCriticalHitChance[crit_chance]))
+ gCritMultiplier = 2;
+ else
+ gCritMultiplier = 1;
+ gBattlescriptCurrInstr++;
+}
+
+static void atk05_damagecalc1(void)
+{
+ u16 side_hword = gSideAffecting[GetBankIdentity(gBankTarget) & 1];
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ side_hword, gDynamicBasePower,
+ BATTLE_STRUCT->dynamicMoveType, gBankAttacker, gBankTarget);
+ gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier;
+
+ if (gStatuses3[gBankAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ gBattleMoveDamage *= 2;
+ if (gProtectStructs[gBankAttacker].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+
+ gBattlescriptCurrInstr++;
+}
+
+void AI_CalcDmg(u8 BankAtk, u8 BankDef)
+{
+ u16 side_hword = gSideAffecting[GetBankIdentity(BankDef) & 1];
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[BankAtk], &gBattleMons[BankDef], gCurrentMove,
+ side_hword, gDynamicBasePower,
+ BATTLE_STRUCT->dynamicMoveType, BankAtk, BankDef);
+ gDynamicBasePower = 0;
+ gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier;
+
+ if (gStatuses3[BankAtk] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ gBattleMoveDamage *= 2;
+ if (gProtectStructs[BankAtk].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+}
+
+static void ModulateDmgByType(u8 multiplier)
+{
+ gBattleMoveDamage = gBattleMoveDamage * multiplier / 10;
+ if (gBattleMoveDamage == 0 && multiplier != 0)
+ gBattleMoveDamage = 1;
+
+ switch (multiplier)
+ {
+ case 0: //no effect
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ break;
+ case 5: //not very effecting
+ if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ else
+ gBattleMoveFlags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ }
+ break;
+ case 20: //super effective
+ if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
+ gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ else
+ gBattleMoveFlags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ break;
+ }
+}
+
+static void atk06_typecalc(void)
+{
+ int i = 0;
+ u8 move_type;
+ if (gCurrentMove == MOVE_STRUGGLE) {goto END;}
+
+ if (BATTLE_STRUCT->dynamicMoveType)
+ move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F;
+ else
+ move_type = gBattleMoves[gCurrentMove].type;
+
+ //check stab
+ if (gBattleMons[gBankAttacker].type1 == move_type || gBattleMons[gBankAttacker].type2 == move_type)
+ {
+ gBattleMoveDamage = gBattleMoveDamage * 15;
+ gBattleMoveDamage = gBattleMoveDamage / 10;
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
+ {
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ gMoveHitWith[gBankTarget] = 0;
+ gUnknown_02024C44[gBankTarget] = 0;
+ gBattleCommunication[6] = move_type;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ else
+ {
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ break;
+ i += 3;
+ continue;
+ }
+
+ else if (gTypeEffectiveness[i] == move_type)
+ {
+ //check type1
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1)
+ ModulateDmgByType(gTypeEffectiveness[i + 2]);
+ //check type2
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 &&
+ gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2)
+ ModulateDmgByType(gTypeEffectiveness[i + 2]);
+ }
+ i += 3;
+ }
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2
+ && (!(gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) || ((gBattleMoveFlags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ && gBattleMoves[gCurrentMove].power)
+ {
+ gLastUsedAbility = ABILITY_WONDER_GUARD;
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveHitWith[gBankTarget] = 0;
+ gUnknown_02024C44[gBankTarget] = 0;
+ gBattleCommunication[6] = 3;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ gProtectStructs[gBankAttacker].notEffective = 1;
+
+ END:
+ gBattlescriptCurrInstr++;
+}
+
+static void b_wonderguard_and_levitate(void)
+{
+ u8 flags = 0;
+ int i = 0;
+ u8 move_type;
+
+ if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power)
+ return;
+
+ if (BATTLE_STRUCT->dynamicMoveType)
+ move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F;
+ else
+ move_type = gBattleMoves[gCurrentMove].type;
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
+ {
+ RecordAbilitySetField6(ABILITY_LEVITATE, move_type);
+ return;
+ }
+
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ break;
+ i += 3;
+ continue;
+ }
+
+ if (gTypeEffectiveness[i] == move_type)
+ {
+ //check no effect
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 0)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gProtectStructs[gBankAttacker].notEffective = 1;
+ }
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 &&
+ gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 &&
+ gTypeEffectiveness[i + 2] == 0)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gProtectStructs[gBankAttacker].notEffective = 1;
+ }
+
+ //check super effective
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 20)
+ flags |= 1;
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2
+ && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ && gTypeEffectiveness[i + 2] == 20)
+ flags |= 1;
+
+ //check not very effective
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 5)
+ flags |= 2;
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2
+ && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ && gTypeEffectiveness[i + 2] == 5)
+ flags |= 2;
+ }
+ i += 3;
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2)
+ {
+ if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power)
+ {
+ RecordAbilitySetField6(ABILITY_WONDER_GUARD, 3);
+ }
+ }
+}
+
+static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal copy of the ModulateDmgbyType1 with different args...
+{
+ gBattleMoveDamage = gBattleMoveDamage * multiplier / 10;
+ if (gBattleMoveDamage == 0 && multiplier != 0)
+ gBattleMoveDamage = 1;
+
+ switch (multiplier)
+ {
+ case 0: //no effect
+ *flags |= MOVESTATUS_NOTAFFECTED;
+ *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ break;
+ case 5: //not very effecting
+ if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ {
+ if (*flags & MOVESTATUS_SUPEREFFECTIVE)
+ *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ else
+ *flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ }
+ break;
+ case 20: //super effective
+ if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ {
+ if (*flags & MOVESTATUS_NOTVERYEFFECTIVE)
+ *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ else
+ *flags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ break;
+ }
+}
+
+#ifdef NONMATCHING
+u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def)
+{
+ int i = 0;
+ u8 flags = 0;
+ u8 move_type;
+
+ if (move == MOVE_STRUGGLE)
+ return 0;
+
+ move_type = gBattleMoves[move].type;
+
+ //check stab
+ if (gBattleMons[bank_atk].type1 == move_type || gBattleMons[bank_atk].type2 == move_type)
+ {
+ gBattleMoveDamage = gBattleMoveDamage * 15;
+ gBattleMoveDamage = gBattleMoveDamage / 10;
+ }
+
+ if (gBattleMons[bank_def].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
+ {
+ flags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ }
+ else
+ {
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ if (gBattleMons[bank_def].status2 & STATUS2_FORESIGHT)
+ break;
+ i += 3;
+ continue;
+ }
+
+ else if (gTypeEffectiveness[i] == move_type)
+ {
+ //check type1
+ if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type1)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ //check type2
+ if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type2 &&
+ gBattleMons[bank_def].type1 != gBattleMons[bank_def].type2)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ }
+ i += 3;
+ }
+ }
+
+ if (gBattleMons[bank_def].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_MISSED) &&
+ AttacksThisTurn(bank_atk, move) == 2 &&
+ (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) &&
+ gBattleMoves[move].power)
+ {
+ flags |= MOVESTATUS_MISSED;
+ }
+ return flags;
+}
+#else
+__attribute__((naked))
+u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x14\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ str r1, [sp, 0x4]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ mov r9, r2\n\
+ movs r7, 0\n\
+ mov r0, sp\n\
+ strb r7, [r0]\n\
+ mov r0, r10\n\
+ cmp r0, 0xA5\n\
+ bne _0801D2AE\n\
+ movs r0, 0\n\
+ b _0801D43A\n\
+ _0801D2AE:\n\
+ ldr r1, _0801D31C @ =gBattleMoves\n\
+ mov r3, r10\n\
+ lsls r2, r3, 1\n\
+ adds r0, r2, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ str r0, [sp, 0x8]\n\
+ ldr r1, _0801D320 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ ldr r3, [sp, 0x4]\n\
+ muls r0, r3\n\
+ adds r3, r0, r1\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x21\n\
+ ldrb r0, [r0]\n\
+ str r2, [sp, 0xC]\n\
+ adds r5, r1, 0\n\
+ ldr r1, [sp, 0x8]\n\
+ cmp r0, r1\n\
+ beq _0801D2E2\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r1\n\
+ bne _0801D2F4\n\
+ _0801D2E2:\n\
+ ldr r4, _0801D324 @ =gBattleMoveDamage\n\
+ ldr r1, [r4]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ str r0, [r4]\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ str r0, [r4]\n\
+ _0801D2F4:\n\
+ movs r0, 0x58\n\
+ mov r2, r9\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, r5\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1A\n\
+ bne _0801D328\n\
+ ldr r3, [sp, 0x8]\n\
+ cmp r3, 0x4\n\
+ bne _0801D328\n\
+ movs r1, 0x9\n\
+ mov r0, sp\n\
+ ldrb r0, [r0]\n\
+ orrs r0, r1\n\
+ mov r1, sp\n\
+ strb r0, [r1]\n\
+ b _0801D3DC\n\
+ .align 2, 0\n\
+ _0801D31C: .4byte gBattleMoves\n\
+ _0801D320: .4byte gBattleMons\n\
+ _0801D324: .4byte gBattleMoveDamage\n\
+ _0801D328:\n\
+ ldr r1, _0801D344 @ =gTypeEffectiveness\n\
+ adds r0, r7, r1\n\
+ ldrb r0, [r0]\n\
+ adds r2, r1, 0\n\
+ cmp r0, 0xFF\n\
+ beq _0801D3DC\n\
+ cmp r0, 0xFE\n\
+ bne _0801D34C\n\
+ movs r0, 0x58\n\
+ mov r1, r9\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ b _0801D3CA\n\
+ .align 2, 0\n\
+ _0801D344: .4byte gTypeEffectiveness\n\
+ _0801D348:\n\
+ adds r7, 0x3\n\
+ b _0801D3B6\n\
+ _0801D34C:\n\
+ ldr r6, _0801D44C @ =gTypeEffectiveness\n\
+ adds r0, r7, r6\n\
+ ldrb r0, [r0]\n\
+ ldr r2, [sp, 0x8]\n\
+ cmp r0, r2\n\
+ bne _0801D3B0\n\
+ adds r1, r7, 0x1\n\
+ adds r1, r6\n\
+ ldr r3, _0801D450 @ =gBattleMons\n\
+ mov r8, r3\n\
+ movs r3, 0x58\n\
+ mov r0, r9\n\
+ muls r0, r3\n\
+ mov r2, r8\n\
+ adds r5, r0, r2\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x21\n\
+ ldrb r4, [r1]\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ bne _0801D388\n\
+ adds r0, r7, 0x2\n\
+ adds r0, r6\n\
+ ldrb r0, [r0]\n\
+ mov r1, r10\n\
+ mov r2, sp\n\
+ str r3, [sp, 0x10]\n\
+ bl ModulateDmgByType2\n\
+ ldr r3, [sp, 0x10]\n\
+ _0801D388:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ bne _0801D3B0\n\
+ ldr r0, _0801D454 @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ muls r0, r3\n\
+ add r0, r8\n\
+ adds r0, 0x21\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r4\n\
+ beq _0801D3B0\n\
+ adds r0, r7, 0x2\n\
+ adds r0, r6\n\
+ ldrb r0, [r0]\n\
+ mov r1, r10\n\
+ mov r2, sp\n\
+ bl ModulateDmgByType2\n\
+ _0801D3B0:\n\
+ adds r7, 0x3\n\
+ ldr r5, _0801D450 @ =gBattleMons\n\
+ ldr r2, _0801D44C @ =gTypeEffectiveness\n\
+ _0801D3B6:\n\
+ adds r0, r7, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xFF\n\
+ beq _0801D3DC\n\
+ cmp r0, 0xFE\n\
+ bne _0801D34C\n\
+ movs r0, 0x58\n\
+ mov r3, r9\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ _0801D3CA:\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 22\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801D348\n\
+ _0801D3DC:\n\
+ movs r0, 0x58\n\
+ mov r1, r9\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, r5\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x19\n\
+ bne _0801D436\n\
+ mov r0, sp\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801D436\n\
+ ldr r0, [sp, 0x4]\n\
+ mov r1, r10\n\
+ bl AttacksThisTurn\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0x2\n\
+ bne _0801D436\n\
+ mov r0, sp\n\
+ ldrb r3, [r0]\n\
+ adds r0, r1, 0\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _0801D41E\n\
+ movs r0, 0x6\n\
+ ands r0, r3\n\
+ cmp r0, 0x6\n\
+ bne _0801D436\n\
+ _0801D41E:\n\
+ ldr r0, _0801D458 @ =gBattleMoves\n\
+ ldr r1, [sp, 0xC]\n\
+ add r1, r10\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ beq _0801D436\n\
+ mov r0, sp\n\
+ movs r1, 0x1\n\
+ orrs r1, r3\n\
+ strb r1, [r0]\n\
+ _0801D436:\n\
+ mov r0, sp\n\
+ ldrb r0, [r0]\n\
+ _0801D43A:\n\
+ add sp, 0x14\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+ _0801D44C: .4byte gTypeEffectiveness\n\
+ _0801D450: .4byte gBattleMons\n\
+ _0801D454: .4byte gBankTarget\n\
+ _0801D458: .4byte gBattleMoves\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+u8 AI_TypeCalc(u16 move, u16 species, u8 ability)
+{
+ int i = 0;
+ u8 flags = 0;
+ u8 type1 = gBaseStats[species].type1, type2 = gBaseStats[species].type2, move_type;
+
+ if (move == MOVE_STRUGGLE)
+ return 0;
+
+ move_type = gBattleMoves[move].type;
+
+ if (ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
+ flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED;
+ else
+ {
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ i += 3;
+ continue;
+ }
+ if (gTypeEffectiveness[i] == move_type)
+ {
+ //check type1
+ if (gTypeEffectiveness[i + 1] == type1)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ //check type2
+ if (gTypeEffectiveness[i + 1] == type2 && gBattleMons[gBankTarget].type1 != type2) //gf you morons, you should check if (type1 != type2)...
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ }
+ i += 3;
+ }
+ }
+ if (ability == ABILITY_WONDER_GUARD
+ && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ && gBattleMoves[move].power)
+ flags |= MOVESTATUS_NOTAFFECTED;
+ return flags;
+}
+
+// Multiplies the damage by a random factor between 85% to 100% inclusive
+static inline void ApplyRandomDmgMultiplier(void)
+{
+ u16 rand = Random();
+ u16 randPercent = 100 - (rand % 16);
+
+ if (gBattleMoveDamage != 0)
+ {
+ gBattleMoveDamage *= randPercent;
+ gBattleMoveDamage /= 100;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ }
+}
+
+void Unused_ApplyRandomDmgMultiplier(void)
+{
+ ApplyRandomDmgMultiplier();
+}
+
+static void atk07_dmg_adjustment(void)
+{
+ u8 hold_effect, quality;
+ ApplyRandomDmgMultiplier();
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ {
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemBattle(gBankTarget, hold_effect);
+ gSpecialStatuses[gBankTarget].focusBanded = 1;
+ }
+ if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ goto END;
+ if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured
+ && !gSpecialStatuses[gBankTarget].focusBanded)
+ goto END;
+
+ if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ goto END;
+
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+
+ if (gProtectStructs[gBankTarget].endured)
+ {
+ gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ goto END;
+ }
+ if (gSpecialStatuses[gBankTarget].focusBanded)
+ {
+ gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ }
+
+ END:
+ gBattlescriptCurrInstr++;
+}
+
+static void atk08_dmg_adjustment2(void) //literally the same as 0x7 except it doesn't check for false swipe move effect...
+{
+ u8 hold_effect, quality;
+ ApplyRandomDmgMultiplier();
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ {
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemBattle(gBankTarget, hold_effect);
+ gSpecialStatuses[gBankTarget].focusBanded = 1;
+ }
+ if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ goto END;
+ if (!gProtectStructs[gBankTarget].endured
+ && !gSpecialStatuses[gBankTarget].focusBanded)
+ goto END;
+
+ if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ goto END;
+
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+
+ if (gProtectStructs[gBankTarget].endured)
+ {
+ gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ goto END;
+ }
+ if (gSpecialStatuses[gBankTarget].focusBanded)
+ {
+ gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ }
+
+ END:
+ gBattlescriptCurrInstr++;
+}
+
+static void atk09_attackanimation(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ if ((gHitMarker & HITMARKER_NO_ANIMATIONS) && (gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE))
+ {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_Pausex20;
+ BATTLE_STRUCT->animTurn += 1;
+ BATTLE_STRUCT->animTargetsHit += 1;
+ }
+ else
+ {
+ if ((gBattleMoves[gCurrentMove].target & TARGET_BOTH || gBattleMoves[gCurrentMove].target & TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && BATTLE_STRUCT->animTargetsHit)
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ gActiveBank = gBankAttacker;
+
+ EmitMoveAnimation(0, gCurrentMove, BATTLE_STRUCT->animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker]);
+ BATTLE_STRUCT->animTurn += 1;
+ BATTLE_STRUCT->animTargetsHit += 1;
+ MarkBufferBankForExecution(gBankAttacker);
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_Pausex20;
+ }
+ }
+}
+
+static void atk0A_waitanimation(void)
+{
+ if (gBattleExecBuffer == 0)
+ gBattlescriptCurrInstr++;
+}
+
+static void atk0B_healthbarupdate(void)
+{
+ if (gBattleExecBuffer)
+ return;
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ goto END;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+
+ if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
+ {
+ PrepareStringBattle(0x80, gActiveBank);
+ goto END;
+ }
+
+ EmitHealthBarUpdate(0, gBattleMoveDamage);
+ MarkBufferBankForExecution(gActiveBank);
+
+ if (!GetBankSide(gActiveBank) && gBattleMoveDamage > 0)
+ gBattleResults.unk5_0 = 1;
+
+ END:
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk0C_datahpupdate(void)
+{
+ register u32 move_type asm("r6"); //no idea how to match it otherwise
+ u8 dynamic_move_type;
+
+ if (gBattleExecBuffer)
+ return;
+
+ dynamic_move_type = BATTLE_STRUCT->dynamicMoveType;
+ if (dynamic_move_type && !(dynamic_move_type & 0x40))
+ {
+ move_type = 0x3F;
+ move_type &= dynamic_move_type;
+ }
+ else
+ {
+ move_type = gBattleMoves[gCurrentMove].type;
+ }
+
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
+ {
+ if (gDisableStructs[gActiveBank].substituteHP >= gBattleMoveDamage)
+ {
+ if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBank].moveturnLostHP = gBattleMoveDamage;
+ gDisableStructs[gActiveBank].substituteHP -= gBattleMoveDamage;
+ gHP_dealt = gBattleMoveDamage;
+ }
+ else
+ {
+ if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBank].moveturnLostHP = gDisableStructs[gActiveBank].substituteHP;
+ gHP_dealt = gDisableStructs[gActiveBank].substituteHP;
+ gDisableStructs[gActiveBank].substituteHP = 0;
+ }
+ //check substitute fading
+ if (gDisableStructs[gActiveBank].substituteHP == 0)
+ {
+ gBattlescriptCurrInstr += 2;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_SubstituteFade;
+ return;
+ }
+ }
+ else
+ {
+ gHitMarker &= ~(HITMARKER_IGNORE_SUBSTITUTE);
+ if (gBattleMoveDamage < 0) //hp goes up
+ {
+ gBattleMons[gActiveBank].hp -= gBattleMoveDamage;
+ if (gBattleMons[gActiveBank].hp > gBattleMons[gActiveBank].maxHP)
+ gBattleMons[gActiveBank].hp = gBattleMons[gActiveBank].maxHP;
+
+ }
+ else //hp goes down
+ {
+ if (gHitMarker & HITMARKER_x20)
+ {
+ gHitMarker &= ~(HITMARKER_x20);
+ }
+ else
+ {
+ gTakenDmg[gActiveBank] += gBattleMoveDamage;
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0)
+ gTakenDmgBanks[gActiveBank] = gBankAttacker;
+ else
+ gTakenDmgBanks[gActiveBank] = gBankTarget;
+ }
+
+ if (gBattleMons[gActiveBank].hp > gBattleMoveDamage)
+ {
+ gBattleMons[gActiveBank].hp -= gBattleMoveDamage;
+ gHP_dealt = gBattleMoveDamage;
+ }
+ else
+ {
+ gHP_dealt = gBattleMons[gActiveBank].hp;
+ gBattleMons[gActiveBank].hp = 0;
+ }
+
+ if (!gSpecialStatuses[gActiveBank].moveturnLostHP && !(gHitMarker & HITMARKER_x100000))
+ gSpecialStatuses[gActiveBank].moveturnLostHP = gHP_dealt;
+
+ if (move_type <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
+ {
+ gProtectStructs[gActiveBank].physicalDmg = gHP_dealt;
+ gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHP_dealt;
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0)
+ {
+ gProtectStructs[gActiveBank].physicalBank = gBankAttacker;
+ gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker;
+ }
+ else
+ {
+ gProtectStructs[gActiveBank].physicalBank = gBankTarget;
+ gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankTarget;
+ }
+ }
+ else if (move_type > 8 && !(gHitMarker & HITMARKER_x100000))
+ {
+ gProtectStructs[gActiveBank].specialDmg = gHP_dealt;
+ gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHP_dealt;
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0)
+ {
+ gProtectStructs[gActiveBank].specialBank = gBankAttacker;
+ gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker;
+ }
+ else
+ {
+ gProtectStructs[gActiveBank].specialBank = gBankTarget;
+ gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankTarget;
+ }
+ }
+ }
+ gHitMarker &= ~(HITMARKER_x100000);
+ EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ else
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBank].moveturnLostHP = 0xFFFF;
+ }
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk0D_critmessage(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ if (gCritMultiplier == 2 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ PrepareStringBattle(0xD9, gBankAttacker);
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atk0E_effectiveness_sound(void)
+{
+ if (gBattleExecBuffer)
+ return;
+ gActiveBank = gBankTarget;
+ if (!(gBattleMoveFlags & MOVESTATUS_MISSED))
+ {
+ u8 flag = ~MOVESTATUS_MISSED;
+ switch (gBattleMoveFlags & flag)
+ {
+ case MOVESTATUS_SUPEREFFECTIVE:
+ EmitEffectivenessSound(0, 14);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case MOVESTATUS_NOTVERYEFFECTIVE:
+ EmitEffectivenessSound(0, 12);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case MOVESTATUS_NOTAFFECTED:
+ case MOVESTATUS_FAILED:
+ break;
+ case MOVESTATUS_ENDURED:
+ case MOVESTATUS_ONEHITKO:
+ case MOVESTATUS_HUNGON:
+ default:
+ if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ {
+ EmitEffectivenessSound(0, 14);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
+ {
+ EmitEffectivenessSound(0, 12);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)))
+ {
+ EmitEffectivenessSound(0, 13);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ break;
+ }
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk0F_resultmessage(void)
+{
+ u16 stringID = 0;
+
+ if (gBattleExecBuffer)
+ return;
+
+ if (gBattleMoveFlags & MOVESTATUS_MISSED && (!(gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) || gBattleCommunication[6] > 2))
+ {
+ stringID = gMissStrings[gBattleCommunication[6]];
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+ else
+ {
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ switch (gBattleMoveFlags & 0xFE)
+ {
+ case MOVESTATUS_SUPEREFFECTIVE:
+ stringID = 0xDE;
+ break;
+ case MOVESTATUS_NOTVERYEFFECTIVE:
+ stringID = 0xDD;
+ break;
+ case MOVESTATUS_ONEHITKO:
+ stringID = 0xDA;
+ break;
+ case MOVESTATUS_ENDURED:
+ stringID = 0x99;
+ break;
+ case MOVESTATUS_FAILED:
+ goto FAILED;
+ case MOVESTATUS_NOTAFFECTED:
+ goto NOTAFFECTED;
+ case MOVESTATUS_HUNGON:
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ gStringBank = gBankTarget;
+ gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
+ return;
+ default:
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ NOTAFFECTED:
+ stringID = 0x1B;
+ else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO)
+ {
+ gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO);
+ gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE);
+ gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_OneHitKOMsg;
+ return;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_ENDURED)
+ {
+ gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_EnduredMsg;
+ return;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_HUNGON)
+ {
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ gStringBank = gBankTarget;
+ gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
+ return;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_FAILED)
+ FAILED:
+ stringID = 0xE5;
+ else
+ gBattleCommunication[MSG_DISPLAY] = 0;
+ }
+ }
+
+ if (stringID)
+ {
+ register u16 dummy asm("r0") = stringID; //Can't match it otherwise
+ PrepareStringBattle(dummy, gBankAttacker);
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk10_printstring(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u16 var = BS2ScriptRead16(gBattlescriptCurrInstr + 1);
+ PrepareStringBattle(var, gBankAttacker);
+ gBattlescriptCurrInstr += 3;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+}
+
+static void atk11_printstring_playeronly(void)
+{
+ gActiveBank = gBankAttacker;
+ EmitPrintStringPlayerOnly(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 3;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+}
+
+static void atk12_waitmessage(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ if (!gBattleCommunication[MSG_DISPLAY])
+ {
+ gBattlescriptCurrInstr += 3;
+ }
+ else
+ {
+ u16 to_wait = BS2ScriptRead16(gBattlescriptCurrInstr + 1);
+ if (++gPauseCounterBattle >= to_wait)
+ {
+ gPauseCounterBattle = 0;
+ gBattlescriptCurrInstr += 3;
+ gBattleCommunication[MSG_DISPLAY] = 0;
+ }
+ }
+ }
+}
+
+static void atk13_printfromtable(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ ptr += gBattleCommunication[MULTISTRING_CHOOSER];
+ PrepareStringBattle(*(u16*)ptr, gBankAttacker);
+ gBattlescriptCurrInstr += 5;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+}
+
+static void atk14_printfromtable_playeronly(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ ptr += gBattleCommunication[MULTISTRING_CHOOSER];
+ gActiveBank = gBankAttacker;
+ EmitPrintStringPlayerOnly(0, *(u16*)ptr);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 5;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+}
+
+u8 BankGetTurnOrder(u8 bank)
+{
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gTurnOrder[i] == bank)
+ break;
+ }
+ return i;
+}
+
+//Someone please decompile this monstrosity below...
+#ifdef NONMATCHING
+void SetMoveEffect(bool8 primary, u8 certainArg)
+{
+ #define EffectAffectsUser 0x40
+ register u8 certain asm("r5") = certainArg;
+ register bool32 StatusChanged asm("r10") = 0;
+ register int AffectsUser asm("r6") = 0; //0x40 otherwise
+ bool32 NoSunCanFreeze = 1;
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] & EffectAffectsUser)
+ {
+ gEffectBank = gBankAttacker; //bank that effects get applied on
+ gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(EffectAffectsUser);
+ AffectsUser = EffectAffectsUser;
+ BATTLE_STRUCT->scriptingActive = gBankTarget; //theoretically the attacker
+ }
+ else
+ {
+ gEffectBank = gBankTarget;
+ BATTLE_STRUCT->scriptingActive = gBankAttacker;
+ }
+
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) &&
+ !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9)
+ {gBattlescriptCurrInstr++; return;}
+
+ if (gSideAffecting[get_bank_identity(gEffectBank) & 1] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) &&
+ !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7)
+ {gBattlescriptCurrInstr++; return;}
+
+ //make sure at least ONE HP except payday and thief
+ if (gBattleMons[gEffectBank].current_hp == 0 && gBattleCommunication[MOVE_EFFECT_BYTE] != 0xB && gBattleCommunication[MOVE_EFFECT_BYTE] != 0x1F)
+ {gBattlescriptCurrInstr++; return;}
+
+ if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && AffectsUser != EffectAffectsUser)
+ {gBattlescriptCurrInstr++; return;}
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) //status change
+ {
+ switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ {
+ case STATUS_SLEEP:
+ //check active uproar
+ if (gBattleMons[gEffectBank].ability_id != ABILITY_SOUNDPROOF)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR); gActiveBank++) {}
+ }
+ else
+ gActiveBank = gNoOfAllBanks;
+ if (gBattleMons[gEffectBank].status) {break;}
+ if (gActiveBank != gNoOfAllBanks) {break;} //nice way of checking uproar...
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_VITAL_SPIRIT) {break;}
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_INSOMNIA) {break;}
+
+ b_cancel_multi_turn_move_maybe(gEffectBank);
+ StatusChanged = 1;
+ break;
+ case STATUS_POISON:
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80))
+ {
+ gLastUsedAbility = ABILITY_IMMUNITY;
+ RecordAbility(gEffectBank, ABILITY_IMMUNITY);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ //_0801E664:
+ gBattlescriptCurrInstr = BS_PSN_PREVENTION;
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication.multistring_chooser = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ return;
+ }
+ else
+ {gBattleCommunication.multistring_chooser = 0; return;}
+ }
+ if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL)
+ && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80))
+ {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_PSN_PREVENTION;
+ gBattleCommunication.multistring_chooser = 2;
+ return;
+ }
+ if (gBattleMons[gEffectBank].type1 == TYPE_POISON) {break;}
+ if (gBattleMons[gEffectBank].type2 == TYPE_POISON) {break;}
+ if (gBattleMons[gEffectBank].type1 == TYPE_STEEL) {break;}
+ if (gBattleMons[gEffectBank].type2 == TYPE_STEEL) {break;}
+ if (gBattleMons[gEffectBank].status) {break;}
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY) {break;}
+ StatusChanged = 1;
+ break;
+ case STATUS_BURN:
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80))
+ {
+ gLastUsedAbility = ABILITY_WATER_VEIL;
+ RecordAbility(gEffectBank, ABILITY_WATER_VEIL);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ //_0801E664:
+ gBattlescriptCurrInstr = BS_BRN_PREVENTION;
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication.multistring_chooser = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ return;
+ }
+ else
+ {gBattleCommunication.multistring_chooser = 0; return;}
+ }
+ if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE || gBattleMons[gEffectBank].type2 == TYPE_FIRE)
+ && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80))
+ {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_BRN_PREVENTION;
+ gBattleCommunication.multistring_chooser = 2;
+ return;
+ }
+ if (gBattleMons[gEffectBank].type1 == TYPE_FIRE) {break;}
+ if (gBattleMons[gEffectBank].type2 == TYPE_FIRE) {break;}
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_WATER_VEIL) {break;}
+ if (gBattleMons[gEffectBank].status1 == 0) {break;}
+ StatusChanged = 1;
+ break;
+ case STATUS_FREEZE:
+ if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY) {NoSunCanFreeze = 0;}
+ if (gBattleMons[gEffectBank].type1 == TYPE_ICE) {break;}
+ if (gBattleMons[gEffectBank].type2 == TYPE_ICE) {break;}
+ if (gBattleMons[gEffectBank].status) {break;}
+ if (NoSunCanFreeze == 0) {break;}
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_MAGMA_ARMOR) {break;}
+
+ b_cancel_multi_turn_move_maybe(gEffectBank);
+ StatusChanged = 1;
+ break;
+ case STATUS_PARALYSIS:
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_LIMBER)
+ {
+ if ((primary == 1 || certain == 0x80))
+ {
+ gLastUsedAbility = ABILITY_LIMBER;
+ RecordAbility(gEffectBank, ABILITY_LIMBER);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ //_0801E664:
+ gBattlescriptCurrInstr = BS_PRLZ_PREVENTION;
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication.multistring_chooser = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ return;
+ }
+ else
+ {gBattleCommunication.multistring_chooser = 0; return;}
+ }
+ else {break;}
+ }
+ if (gBattleMons[gEffectBank].status) {break;}
+ StatusChanged = 1;
+ break;
+ case STATUS_TOXIC_POISON:
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80))
+ {
+ gLastUsedAbility = ABILITY_IMMUNITY;
+ RecordAbility(gEffectBank, ABILITY_IMMUNITY);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ //_0801E664:
+ gBattlescriptCurrInstr = BS_PSN_PREVENTION;
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication.multistring_chooser = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ return;
+ }
+ else
+ {gBattleCommunication.multistring_chooser = 0; return;}
+ }
+ if ((gBattleMons[gEffectBank].type1 == TYPE_POISON || gBattleMons[gEffectBank].type2 == TYPE_POISON || gBattleMons[gEffectBank].type1 == TYPE_STEEL || gBattleMons[gEffectBank].type2 == TYPE_STEEL)
+ && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) && (primary == 1 || certain == 0x80))
+ {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_PSN_PREVENTION;
+ gBattleCommunication.multistring_chooser = 2;
+ return;
+ }
+ if (gBattleMons[gEffectBank].status) {break;}
+ if (gBattleMons[gEffectBank].type1 != TYPE_POISON &&
+ gBattleMons[gEffectBank].type2 != TYPE_POISON &&
+ gBattleMons[gEffectBank].type1 != TYPE_STEEL &&
+ gBattleMons[gEffectBank].type2 != TYPE_STEEL)
+ {
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_IMMUNITY) {break;}
+ gBattleMons[gEffectBank].status1 |= ~(STATUS_POISON); //TODO: fix OR to AND
+ StatusChanged = 1;
+ break;
+ }
+ else
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ break;
+ }
+ if (StatusChanged == 1)
+ {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP)
+ gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2);
+ else
+ gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gActiveBank = gEffectBank;
+ bb2_setattributes_in_battle(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status);
+ mark_buffer_bank_for_execution(gActiveBank);
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication.multistring_chooser = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ }
+ else
+ gBattleCommunication.multistring_chooser = 0;
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == 2 || gBattleCommunication[MOVE_EFFECT_BYTE] == 6 || gBattleCommunication[MOVE_EFFECT_BYTE] == 5 || gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
+ {
+ BATTLE_STRUCT->SynchroniseEffect = gBattleCommunication[MOVE_EFFECT_BYTE];
+ gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT;
+ }
+ return;
+ }
+ else if (StatusChanged == 0)
+ {gBattlescriptCurrInstr++; return;}
+ }
+ else
+ {
+ if (gBattleMons[gEffectBank].status2 & gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
+ switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ {
+ case 7: //confusion
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_OWN_TEMPO)
+ {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION)
+ {gBattlescriptCurrInstr++; return;}
+ gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 8: //flinch
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_INNER_FOCUS)
+ {
+ if (primary == 1 || certain == 0x80)
+ {
+ gLastUsedAbility = ABILITY_INNER_FOCUS;
+ RecordAbility(gEffectBank, ABILITY_INNER_FOCUS);
+ gBattlescriptCurrInstr = BS_FLINCH_PREVENTION;
+ return;
+ }
+ else
+ {gBattlescriptCurrInstr++; return;}
+ }
+ else
+ {
+ if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn)
+ gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gBattlescriptCurrInstr++; return;
+ }
+ break;
+ case 10: //uproar
+ if (gBattleMons[gEffectBank].status2 & STATUS2_UPROAR)
+ {gBattlescriptCurrInstr++; return;}
+ gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gEffectBank] = gCurrentMove;
+ gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 11: //pay day
+ if (!(get_bank_identity(gEffectBank) & 1))
+ {
+ u16 PayDay = gPaydayMoney;
+ gPaydayMoney += (gBattleMons[gEffectBank].level * 5);
+ if (PayDay > gPaydayMoney)
+ gPaydayMoney = 0xFFFF;
+ }
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 9: //tri attack
+ if (gBattleMons[gEffectBank].status)
+ {gBattlescriptCurrInstr++; return;}
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3;
+ SetMoveEffect(0, 0);
+ break;
+ case 12: //charging move
+ gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gEffectBank] = gCurrentMove;
+ gProtectStructs[gEffectBank].flag1_chargingturn = 1;
+ gBattlescriptCurrInstr++;
+ break;
+ case 13: //wrap
+ if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED)
+ {gBattlescriptCurrInstr++; return;}
+ gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 0xD;
+ BATTLE_STRUCT->WrappedMove1[gEffectBank] = gCurrentMove;
+ BATTLE_STRUCT->WrappedMove2[gEffectBank] = gCurrentMove >> 8;
+ BATTLE_STRUCT->WrappedBy[gEffectBank] = gBankAttacker;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gBattleCommunication.multistring_chooser = 0;
+ while (gBattleCommunication.multistring_chooser <= 4
+ && gCurrentMove != gTrappingMoves[gBattleCommunication.multistring_chooser])
+ gBattleCommunication.multistring_chooser++;
+ break;
+ case 14: //recoil
+ gBattleMoveDamage = (gHP_dealt) / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 15 ... 21: //stat + 1
+ if (ChangeStats(0x10, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xF2, certain, 0)) {gBattlescriptCurrInstr++;}
+ else
+ {
+ BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F; //TODO: the arg ptr is wrong by one
+ BATTLE_STRUCT->animArg2 = 0;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_STAT_UP;
+ }
+ break;
+ case 22 ... 28: //stat - 1
+ if (ChangeStats(~(0x6f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xEB, certain, 0)) {gBattlescriptCurrInstr++;} //TODO: negation doesnt work correctly
+ else
+ {
+ BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_STAT_DOWN;
+ }
+ break;
+ case 39 ... 45: //stat + 2
+ if (ChangeStats(0x20, gBattleCommunication[MOVE_EFFECT_BYTE] + 0xDA, certain, 0)) {gBattlescriptCurrInstr++;}
+ else
+ {
+ BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_STAT_UP;
+ }
+ break;
+ case 46 ... 52: //stat - 2
+ if (ChangeStats(~(0x5f), gBattleCommunication[MOVE_EFFECT_BYTE] + 0xD3, certain, 0)) {gBattlescriptCurrInstr++;}
+ else
+ {
+ BATTLE_STRUCT->animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & 0x3F;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_STAT_DOWN;
+ }
+ break;
+ case 29: //recharge
+ gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE;
+ gDisableStructs[gEffectBank].recharge_counter = 2;
+ gLockedMove[gEffectBank] = gCurrentMove;
+ gBattlescriptCurrInstr++;
+ break;
+ case 30: //rage
+ gBattleMons[gBankAttacker].status2 |= STATUS2_RAGE;
+ gBattlescriptCurrInstr++;
+ break;
+ case 31: //item steal
+ {
+ u8 side = battle_side_get_owner(gBankAttacker);
+ if (battle_side_get_owner(gBankAttacker) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400)
+ {gBattlescriptCurrInstr++; return;}
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)) && gTrainerBattleOpponent != 0x400 && (gWishFutureKnock.KnockedOff[side] & gBitTable[gBattlePartyID[gBankAttacker]]))
+ {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gBankTarget].held_item && gBattleMons[gBankTarget].ability_id == ABILITY_STICKY_HOLD)
+ {
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BS_NO_ITEMSTEAL;
+ gLastUsedAbility = gBattleMons[gBankTarget].ability_id;
+ RecordAbility(gBankTarget, gLastUsedAbility);
+ return;
+ }
+ if (gBattleMons[gBankAttacker].held_item)
+ {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gBankTarget].held_item == ITEM_ENIGMA_BERRY)
+ {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gBankTarget].held_item == 0)
+ {gBattlescriptCurrInstr++; return;}
+
+ CHANGED_HELDITEMS[gBankAttacker] = gLastUsedItem = gBattleMons[gBankTarget].held_item;
+ gBattleMons[gBankTarget].held_item = 0;
+
+ gActiveBank = gBankAttacker;
+ bb2_setattributes_in_battle(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
+ mark_buffer_bank_for_execution(gBankAttacker);
+
+ gActiveBank = gBankTarget;
+ bb2_setattributes_in_battle(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].held_item);
+ mark_buffer_bank_for_execution(gBankTarget);
+
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_ITEMSTEAL;
+
+ STORE_CHOICEMOVE(gBankTarget, 0);
+ }
+ break;
+ case 32: //escape prevention
+ gBattleMons[gBankTarget].status2 |= STATUS2_RECHARGE;
+ gDisableStructs[gBankTarget].BankPreventingEscape = gBankAttacker;
+ gBattlescriptCurrInstr++;
+ break;
+ case 33: //nightmare
+ gBattleMons[gBankTarget].status2 |= STATUS2_NIGHTMARE;
+ gBattlescriptCurrInstr++;
+ break;
+ case 34:
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gUnknown_081D9224;
+ return;
+ case 35: //break free rapidspin
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_RAPIDSPINAWAY;
+ return;
+ case 36: //paralysis removal
+ if (gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS)
+ {
+ gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS);
+ gActiveBank = gBankTarget;
+ bb2_setattributes_in_battle(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status);
+ mark_buffer_bank_for_execution(gActiveBank);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_PARALYSISHEALED;
+ }
+ else
+ {gBattlescriptCurrInstr++; return;}
+ break;
+ case 37: //
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gUnknown_081D93FA;
+ return;
+ case 38: //recoil plus paralysis
+ gBattleMoveDamage = gHP_dealt / 3;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = MoveEffectBS_ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 53: //thrash
+ if (!(gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE))
+ {
+ gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gEffectBank] = gCurrentMove;
+ gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA);
+ }
+ else
+ {gBattlescriptCurrInstr++; return;}
+ break;
+ case 54: //knock off
+ if (gBattleMons[gEffectBank].ability_id == ABILITY_STICKY_HOLD)
+ {
+ if (gBattleMons[gEffectBank].held_item == 0)
+ {gBattlescriptCurrInstr++; return;}
+ gLastUsedAbility = ABILITY_STICKY_HOLD;
+ gBattlescriptCurrInstr = BS_STICKYHOLD_ACTIVATES;
+ RecordAbility(gEffectBank, ABILITY_STICKY_HOLD);
+ return;
+ }
+ if (gBattleMons[gEffectBank].held_item == 0)
+ {gBattlescriptCurrInstr++; return;}
+ else
+ {
+ u8 side = battle_side_get_owner(gEffectBank);
+ gLastUsedItem = gBattleMons[gEffectBank].held_item;
+ gBattleMons[gEffectBank].held_item = 0;
+ gWishFutureKnock.KnockedOff[side] |= gBitTable[gBattlePartyID[gEffectBank]];
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BS_KNOCKEDOFF;
+
+ STORE_CHOICEMOVE(gEffectBank, 0);
+ }
+ break;
+ case 59: //overheat I guess, dont remember
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gUnknown_081D94B0;
+ return;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void SetMoveEffect(bool8 primary, u8 certainArg)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r5, r1, 24\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ movs r6, 0\n\
+ movs r1, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ ldr r1, _0801E430 @ =gBattleCommunication\n\
+ ldrb r3, [r1, 0x3]\n\
+ movs r0, 0x40\n\
+ ands r0, r3\n\
+ adds r7, r1, 0\n\
+ cmp r0, 0\n\
+ beq _0801E444\n\
+ ldr r2, _0801E434 @ =gEffectBank\n\
+ ldr r0, _0801E438 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2]\n\
+ movs r0, 0xBF\n\
+ ands r0, r3\n\
+ strb r0, [r7, 0x3]\n\
+ movs r6, 0x40\n\
+ ldr r0, _0801E43C @ =0x02000000\n\
+ ldr r1, _0801E440 @ =gBankTarget\n\
+ b _0801E450\n\
+ .align 2, 0\n\
+_0801E430: .4byte gBattleCommunication\n\
+_0801E434: .4byte gEffectBank\n\
+_0801E438: .4byte gBankAttacker\n\
+_0801E43C: .4byte 0x02000000\n\
+_0801E440: .4byte gBankTarget\n\
+_0801E444:\n\
+ ldr r2, _0801E538 @ =gEffectBank\n\
+ ldr r0, _0801E53C @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2]\n\
+ ldr r0, _0801E540 @ =0x02000000\n\
+ ldr r1, _0801E544 @ =gBankAttacker\n\
+_0801E450:\n\
+ ldrb r1, [r1]\n\
+ ldr r3, _0801E548 @ =0x00016003\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+ mov r8, r2\n\
+ ldr r2, _0801E54C @ =gBattleMons\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r2\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x13\n\
+ bne _0801E48A\n\
+ ldr r0, _0801E550 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801E48A\n\
+ cmp r4, 0\n\
+ bne _0801E48A\n\
+ ldrb r0, [r7, 0x3]\n\
+ cmp r0, 0x9\n\
+ bhi _0801E48A\n\
+ bl _0801F5DC\n\
+_0801E48A:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ bl GetBankIdentity\n\
+ ldr r2, _0801E554 @ =gSideAffecting\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ adds r1, r2\n\
+ ldrh r1, [r1]\n\
+ movs r0, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E4C4\n\
+ ldr r0, _0801E550 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801E4C4\n\
+ cmp r4, 0\n\
+ bne _0801E4C4\n\
+ ldr r0, _0801E558 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ cmp r0, 0x7\n\
+ bhi _0801E4C4\n\
+ bl _0801F5DC\n\
+_0801E4C4:\n\
+ ldr r3, _0801E54C @ =gBattleMons\n\
+ ldr r2, _0801E538 @ =gEffectBank\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0, 0x28]\n\
+ mov r8, r2\n\
+ mov r9, r3\n\
+ cmp r0, 0\n\
+ bne _0801E4EA\n\
+ ldr r0, _0801E558 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ cmp r0, 0xB\n\
+ beq _0801E4EA\n\
+ cmp r0, 0x1F\n\
+ beq _0801E4EA\n\
+ bl _0801F5DC\n\
+_0801E4EA:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ mov r1, r9\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E50C\n\
+ cmp r6, 0x40\n\
+ beq _0801E50C\n\
+ bl _0801F5DC\n\
+_0801E50C:\n\
+ ldr r0, _0801E558 @ =gBattleCommunication\n\
+ ldrb r1, [r0, 0x3]\n\
+ adds r7, r0, 0\n\
+ cmp r1, 0x6\n\
+ bls _0801E518\n\
+ b _0801EB4A\n\
+_0801E518:\n\
+ ldr r1, _0801E55C @ =gStatusFlagsForMoveEffects\n\
+ ldrb r0, [r7, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0x10\n\
+ bne _0801E528\n\
+ b _0801E714\n\
+_0801E528:\n\
+ cmp r0, 0x10\n\
+ bhi _0801E560\n\
+ cmp r0, 0x7\n\
+ beq _0801E57A\n\
+ cmp r0, 0x8\n\
+ bne _0801E536\n\
+ b _0801E630\n\
+_0801E536:\n\
+ b _0801EA14\n\
+ .align 2, 0\n\
+_0801E538: .4byte gEffectBank\n\
+_0801E53C: .4byte gBankTarget\n\
+_0801E540: .4byte 0x02000000\n\
+_0801E544: .4byte gBankAttacker\n\
+_0801E548: .4byte 0x00016003\n\
+_0801E54C: .4byte gBattleMons\n\
+_0801E550: .4byte gHitMarker\n\
+_0801E554: .4byte gSideAffecting\n\
+_0801E558: .4byte gBattleCommunication\n\
+_0801E55C: .4byte gStatusFlagsForMoveEffects\n\
+_0801E560:\n\
+ cmp r0, 0x40\n\
+ bne _0801E566\n\
+ b _0801E888\n\
+_0801E566:\n\
+ cmp r0, 0x40\n\
+ bhi _0801E572\n\
+ cmp r0, 0x20\n\
+ bne _0801E570\n\
+ b _0801E7EA\n\
+_0801E570:\n\
+ b _0801EA14\n\
+_0801E572:\n\
+ cmp r0, 0x80\n\
+ bne _0801E578\n\
+ b _0801E8E4\n\
+_0801E578:\n\
+ b _0801EA14\n\
+_0801E57A:\n\
+ mov r3, r8\n\
+ ldrb r1, [r3]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x2B\n\
+ beq _0801E5DC\n\
+ ldr r0, _0801E5D4 @ =gActiveBank\n\
+ movs r1, 0\n\
+ strb r1, [r0]\n\
+ ldr r1, _0801E5D8 @ =gNoOfAllBanks\n\
+ ldrb r3, [r1]\n\
+ adds r7, r0, 0\n\
+ mov r12, r1\n\
+ cmp r3, 0\n\
+ beq _0801E5E8\n\
+ mov r4, r9\n\
+ ldr r0, [r4, 0x50]\n\
+ movs r1, 0x70\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801E5E8\n\
+ adds r1, r7, 0\n\
+ mov r6, r9\n\
+ adds r6, 0x50\n\
+ movs r5, 0x58\n\
+ movs r4, 0x70\n\
+_0801E5B4:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, r3\n\
+ bcs _0801E5E8\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ beq _0801E5B4\n\
+ b _0801E5E8\n\
+ .align 2, 0\n\
+_0801E5D4: .4byte gActiveBank\n\
+_0801E5D8: .4byte gNoOfAllBanks\n\
+_0801E5DC:\n\
+ ldr r0, _0801E628 @ =gActiveBank\n\
+ ldr r2, _0801E62C @ =gNoOfAllBanks\n\
+ ldrb r1, [r2]\n\
+ strb r1, [r0]\n\
+ adds r7, r0, 0\n\
+ mov r12, r2\n\
+_0801E5E8:\n\
+ mov r0, r8\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ adds r1, r2, 0\n\
+ muls r1, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x4C\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E600\n\
+ b _0801EA14\n\
+_0801E600:\n\
+ ldrb r0, [r7]\n\
+ mov r3, r12\n\
+ ldrb r3, [r3]\n\
+ cmp r0, r3\n\
+ beq _0801E60C\n\
+ b _0801EA14\n\
+_0801E60C:\n\
+ mov r4, r9\n\
+ adds r0, r1, r4\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x48\n\
+ bne _0801E61A\n\
+ b _0801EA14\n\
+_0801E61A:\n\
+ cmp r0, 0xF\n\
+ bne _0801E620\n\
+ b _0801EA14\n\
+_0801E620:\n\
+ adds r0, r2, 0\n\
+ bl CancelMultiTurnMoves\n\
+ b _0801EA04\n\
+ .align 2, 0\n\
+_0801E628: .4byte gActiveBank\n\
+_0801E62C: .4byte gNoOfAllBanks\n\
+_0801E630:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ cmp r1, 0x11\n\
+ bne _0801E688\n\
+ cmp r4, 0x1\n\
+ beq _0801E64A\n\
+ cmp r5, 0x80\n\
+ bne _0801E688\n\
+_0801E64A:\n\
+ ldr r0, _0801E678 @ =gLastUsedAbility\n\
+ strb r1, [r0]\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x11\n\
+ bl RecordAbilityBattle\n\
+ ldr r4, _0801E67C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E680 @ =BattleScript_PSNPrevention\n\
+_0801E664:\n\
+ str r0, [r4]\n\
+ ldr r2, _0801E684 @ =gHitMarker\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x80\n\
+ lsls r0, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E676\n\
+ b _0801E928\n\
+_0801E676:\n\
+ b _0801E94C\n\
+ .align 2, 0\n\
+_0801E678: .4byte gLastUsedAbility\n\
+_0801E67C: .4byte gBattlescriptCurrInstr\n\
+_0801E680: .4byte BattleScript_PSNPrevention\n\
+_0801E684: .4byte gHitMarker\n\
+_0801E688:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ movs r1, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x21\n\
+ ldrb r1, [r1]\n\
+ cmp r1, 0x3\n\
+ beq _0801E6AC\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ beq _0801E6AC\n\
+ cmp r1, 0x8\n\
+ beq _0801E6AC\n\
+ cmp r0, 0x8\n\
+ bne _0801E6C6\n\
+_0801E6AC:\n\
+ ldr r0, _0801E710 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E6C6\n\
+ cmp r4, 0x1\n\
+ bne _0801E6C0\n\
+ b _0801E98C\n\
+_0801E6C0:\n\
+ cmp r5, 0x80\n\
+ bne _0801E6C6\n\
+ b _0801E98C\n\
+_0801E6C6:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ mov r4, r9\n\
+ adds r3, r1, r4\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x21\n\
+ ldrb r4, [r0]\n\
+ cmp r4, 0x3\n\
+ bne _0801E6DE\n\
+ b _0801EA14\n\
+_0801E6DE:\n\
+ adds r0, 0x1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ bne _0801E6E8\n\
+ b _0801EA14\n\
+_0801E6E8:\n\
+ cmp r4, 0x8\n\
+ bne _0801E6EE\n\
+ b _0801EA14\n\
+_0801E6EE:\n\
+ cmp r0, 0x8\n\
+ bne _0801E6F4\n\
+ b _0801EA14\n\
+_0801E6F4:\n\
+ mov r0, r9\n\
+ adds r0, 0x4C\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E702\n\
+ b _0801EA14\n\
+_0801E702:\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ bne _0801E70E\n\
+ b _0801EA14\n\
+_0801E70E:\n\
+ b _0801EA04\n\
+ .align 2, 0\n\
+_0801E710: .4byte gHitMarker\n\
+_0801E714:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ cmp r1, 0x29\n\
+ bne _0801E758\n\
+ cmp r4, 0x1\n\
+ beq _0801E72E\n\
+ cmp r5, 0x80\n\
+ bne _0801E758\n\
+_0801E72E:\n\
+ ldr r0, _0801E74C @ =gLastUsedAbility\n\
+ strb r1, [r0]\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x29\n\
+ bl RecordAbilityBattle\n\
+ ldr r4, _0801E750 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E754 @ =BattleScript_BRNPrevention\n\
+ b _0801E664\n\
+ .align 2, 0\n\
+_0801E74C: .4byte gLastUsedAbility\n\
+_0801E750: .4byte gBattlescriptCurrInstr\n\
+_0801E754: .4byte BattleScript_BRNPrevention\n\
+_0801E758:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ mov r2, r9\n\
+ adds r1, r0, r2\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x21\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xA\n\
+ beq _0801E778\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xA\n\
+ bne _0801E7A8\n\
+_0801E778:\n\
+ ldr r0, _0801E79C @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E7A8\n\
+ cmp r4, 0x1\n\
+ beq _0801E78E\n\
+ cmp r5, 0x80\n\
+ bne _0801E7A8\n\
+_0801E78E:\n\
+ ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention\n\
+ b _0801E998\n\
+ .align 2, 0\n\
+_0801E79C: .4byte gHitMarker\n\
+_0801E7A0: .4byte gBattlescriptCurrInstr\n\
+_0801E7A4: .4byte BattleScript_BRNPrevention\n\
+_0801E7A8:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x58\n\
+ adds r2, r0, 0\n\
+ muls r2, r1\n\
+ mov r4, r9\n\
+ adds r1, r2, r4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x21\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xA\n\
+ bne _0801E7C2\n\
+ b _0801EA14\n\
+_0801E7C2:\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xA\n\
+ bne _0801E7CE\n\
+ b _0801EA14\n\
+_0801E7CE:\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x29\n\
+ bne _0801E7DA\n\
+ b _0801EA14\n\
+_0801E7DA:\n\
+ mov r0, r9\n\
+ adds r0, 0x4C\n\
+ adds r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E7E8\n\
+ b _0801EA14\n\
+_0801E7E8:\n\
+ b _0801EA04\n\
+_0801E7EA:\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x13\n\
+ movs r1, 0\n\
+ movs r2, 0xD\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0\n\
+ bne _0801E826\n\
+ str r0, [sp]\n\
+ movs r0, 0x13\n\
+ movs r1, 0\n\
+ movs r2, 0x4D\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0801E826\n\
+ ldr r0, _0801E87C @ =gBattleWeather\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x60\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E826\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x4]\n\
+_0801E826:\n\
+ ldr r4, _0801E880 @ =gBattleMons\n\
+ ldr r0, _0801E884 @ =gEffectBank\n\
+ ldrb r3, [r0]\n\
+ movs r0, 0x58\n\
+ adds r2, r3, 0\n\
+ muls r2, r0\n\
+ adds r1, r2, r4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x21\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xF\n\
+ bne _0801E840\n\
+ b _0801EA14\n\
+_0801E840:\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xF\n\
+ bne _0801E84C\n\
+ b _0801EA14\n\
+_0801E84C:\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x4C\n\
+ adds r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E85A\n\
+ b _0801EA14\n\
+_0801E85A:\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, 0\n\
+ bne _0801E862\n\
+ b _0801EA14\n\
+_0801E862:\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x28\n\
+ bne _0801E86E\n\
+ b _0801EA14\n\
+_0801E86E:\n\
+ adds r0, r3, 0\n\
+ bl CancelMultiTurnMoves\n\
+ movs r3, 0x1\n\
+ mov r10, r3\n\
+ b _0801EA14\n\
+ .align 2, 0\n\
+_0801E87C: .4byte gBattleWeather\n\
+_0801E880: .4byte gBattleMons\n\
+_0801E884: .4byte gEffectBank\n\
+_0801E888:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ mov r2, r9\n\
+ adds r0, r1, r2\n\
+ adds r0, 0x20\n\
+ ldrb r2, [r0]\n\
+ cmp r2, 0x7\n\
+ bne _0801E8D0\n\
+ cmp r4, 0x1\n\
+ beq _0801E8A6\n\
+ cmp r5, 0x80\n\
+ beq _0801E8A6\n\
+ b _0801EA14\n\
+_0801E8A6:\n\
+ ldr r0, _0801E8C4 @ =gLastUsedAbility\n\
+ strb r2, [r0]\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x7\n\
+ bl RecordAbilityBattle\n\
+ ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention\n\
+ b _0801E664\n\
+ .align 2, 0\n\
+_0801E8C4: .4byte gLastUsedAbility\n\
+_0801E8C8: .4byte gBattlescriptCurrInstr\n\
+_0801E8CC: .4byte BattleScript_PRLZPrevention\n\
+_0801E8D0:\n\
+ mov r0, r9\n\
+ adds r0, 0x4C\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E8DE\n\
+ b _0801EA14\n\
+_0801E8DE:\n\
+ movs r4, 0x1\n\
+ mov r10, r4\n\
+ b _0801EA14\n\
+_0801E8E4:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ cmp r1, 0x11\n\
+ bne _0801E952\n\
+ cmp r4, 0x1\n\
+ beq _0801E8FE\n\
+ cmp r5, 0x80\n\
+ bne _0801E952\n\
+_0801E8FE:\n\
+ ldr r0, _0801E938 @ =gLastUsedAbility\n\
+ strb r1, [r0]\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ movs r1, 0x11\n\
+ bl RecordAbilityBattle\n\
+ ldr r4, _0801E93C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E940 @ =BattleScript_PSNPrevention\n\
+ str r0, [r4]\n\
+ ldr r2, _0801E944 @ =gHitMarker\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x80\n\
+ lsls r0, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E94C\n\
+_0801E928:\n\
+ movs r0, 0x1\n\
+ strb r0, [r7, 0x5]\n\
+ ldr r0, _0801E948 @ =0xffffdfff\n\
+ ands r1, r0\n\
+ str r1, [r2]\n\
+ bl _0801F5FA\n\
+ .align 2, 0\n\
+_0801E938: .4byte gLastUsedAbility\n\
+_0801E93C: .4byte gBattlescriptCurrInstr\n\
+_0801E940: .4byte BattleScript_PSNPrevention\n\
+_0801E944: .4byte gHitMarker\n\
+_0801E948: .4byte 0xffffdfff\n\
+_0801E94C:\n\
+ strb r0, [r7, 0x5]\n\
+ bl _0801F5FA\n\
+_0801E952:\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x21\n\
+ ldrb r1, [r1]\n\
+ cmp r1, 0x3\n\
+ beq _0801E976\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ beq _0801E976\n\
+ cmp r1, 0x8\n\
+ beq _0801E976\n\
+ cmp r0, 0x8\n\
+ bne _0801E9B4\n\
+_0801E976:\n\
+ ldr r0, _0801E9A4 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E9B4\n\
+ cmp r4, 0x1\n\
+ beq _0801E98C\n\
+ cmp r5, 0x80\n\
+ bne _0801E9B4\n\
+_0801E98C:\n\
+ ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E9AC @ =BattleScript_PSNPrevention\n\
+_0801E998:\n\
+ str r0, [r4]\n\
+ ldr r1, _0801E9B0 @ =gBattleCommunication\n\
+ movs r0, 0x2\n\
+ strb r0, [r1, 0x5]\n\
+ bl _0801F5FA\n\
+ .align 2, 0\n\
+_0801E9A4: .4byte gHitMarker\n\
+_0801E9A8: .4byte gBattlescriptCurrInstr\n\
+_0801E9AC: .4byte BattleScript_PSNPrevention\n\
+_0801E9B0: .4byte gBattleCommunication\n\
+_0801E9B4:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r6, 0x58\n\
+ muls r0, r6\n\
+ mov r2, r9\n\
+ adds r2, 0x4C\n\
+ adds r5, r0, r2\n\
+ ldr r4, [r5]\n\
+ cmp r4, 0\n\
+ bne _0801EA14\n\
+ mov r3, r9\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x21\n\
+ ldrb r3, [r0]\n\
+ cmp r3, 0x3\n\
+ beq _0801EA0A\n\
+ adds r0, 0x1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ beq _0801EA0A\n\
+ cmp r3, 0x8\n\
+ beq _0801EA0A\n\
+ cmp r0, 0x8\n\
+ beq _0801EA0A\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ beq _0801EA14\n\
+ mov r4, r8\n\
+ ldrb r0, [r4]\n\
+ adds r1, r0, 0\n\
+ muls r1, r6\n\
+ adds r1, r2\n\
+ ldr r0, [r1]\n\
+ movs r2, 0x9\n\
+ negs r2, r2\n\
+ ands r0, r2\n\
+ str r0, [r1]\n\
+_0801EA04:\n\
+ movs r0, 0x1\n\
+ mov r10, r0\n\
+ b _0801EA14\n\
+_0801EA0A:\n\
+ ldr r0, _0801EA58 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x8\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_0801EA14:\n\
+ mov r1, r10\n\
+ cmp r1, 0x1\n\
+ beq _0801EA1C\n\
+ b _0801EB3C\n\
+_0801EA1C:\n\
+ ldr r0, _0801EA5C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects\n\
+ ldr r0, _0801EA64 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r3, [r0]\n\
+ cmp r3, 0x7\n\
+ bne _0801EA70\n\
+ bl Random\n\
+ ldr r2, _0801EA68 @ =gBattleMons\n\
+ ldr r1, _0801EA6C @ =gEffectBank\n\
+ ldrb r3, [r1]\n\
+ movs r1, 0x58\n\
+ muls r3, r1\n\
+ adds r2, 0x4C\n\
+ adds r3, r2\n\
+ movs r1, 0x3\n\
+ ands r1, r0\n\
+ adds r1, 0x2\n\
+ ldr r0, [r3]\n\
+ orrs r0, r1\n\
+ str r0, [r3]\n\
+ b _0801EA84\n\
+ .align 2, 0\n\
+_0801EA58: .4byte gBattleMoveFlags\n\
+_0801EA5C: .4byte gBattlescriptCurrInstr\n\
+_0801EA60: .4byte gStatusFlagsForMoveEffects\n\
+_0801EA64: .4byte gBattleCommunication\n\
+_0801EA68: .4byte gBattleMons\n\
+_0801EA6C: .4byte gEffectBank\n\
+_0801EA70:\n\
+ ldr r2, _0801EAD4 @ =gBattleMons\n\
+ ldr r0, _0801EAD8 @ =gEffectBank\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ adds r2, 0x4C\n\
+ adds r1, r2\n\
+ ldr r0, [r1]\n\
+ orrs r0, r3\n\
+ str r0, [r1]\n\
+_0801EA84:\n\
+ ldr r2, _0801EADC @ =gBattlescriptCurrInstr\n\
+ ldr r1, _0801EAE0 @ =gMoveEffectBS_Ptrs\n\
+ ldr r5, _0801EAE4 @ =gBattleCommunication\n\
+ ldrb r0, [r5, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ str r0, [r2]\n\
+ ldr r4, _0801EAE8 @ =gActiveBank\n\
+ ldr r1, _0801EAD8 @ =gEffectBank\n\
+ ldrb r0, [r1]\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ ldr r1, _0801EAEC @ =gUnknown_02024ACC\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r2, _0801EAF0 @ =gHitMarker\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x80\n\
+ lsls r0, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801EAF8\n\
+ movs r0, 0x1\n\
+ strb r0, [r5, 0x5]\n\
+ ldr r0, _0801EAF4 @ =0xffffdfff\n\
+ ands r1, r0\n\
+ str r1, [r2]\n\
+ b _0801EAFA\n\
+ .align 2, 0\n\
+_0801EAD4: .4byte gBattleMons\n\
+_0801EAD8: .4byte gEffectBank\n\
+_0801EADC: .4byte gBattlescriptCurrInstr\n\
+_0801EAE0: .4byte gMoveEffectBS_Ptrs\n\
+_0801EAE4: .4byte gBattleCommunication\n\
+_0801EAE8: .4byte gActiveBank\n\
+_0801EAEC: .4byte gUnknown_02024ACC\n\
+_0801EAF0: .4byte gHitMarker\n\
+_0801EAF4: .4byte 0xffffdfff\n\
+_0801EAF8:\n\
+ strb r0, [r5, 0x5]\n\
+_0801EAFA:\n\
+ ldr r0, _0801EB2C @ =gBattleCommunication\n\
+ ldrb r2, [r0, 0x3]\n\
+ adds r7, r0, 0\n\
+ cmp r2, 0x2\n\
+ beq _0801EB14\n\
+ cmp r2, 0x6\n\
+ beq _0801EB14\n\
+ cmp r2, 0x5\n\
+ beq _0801EB14\n\
+ cmp r2, 0x3\n\
+ beq _0801EB14\n\
+ bl _0801F5FA\n\
+_0801EB14:\n\
+ ldr r0, _0801EB30 @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ ldr r2, _0801EB34 @ =0x000160ca\n\
+ adds r0, r2\n\
+ strb r1, [r0]\n\
+ ldr r2, _0801EB38 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 7\n\
+ bl _0801F4F2\n\
+ .align 2, 0\n\
+_0801EB2C: .4byte gBattleCommunication\n\
+_0801EB30: .4byte 0x02000000\n\
+_0801EB34: .4byte 0x000160ca\n\
+_0801EB38: .4byte gHitMarker\n\
+_0801EB3C:\n\
+ mov r3, r10\n\
+ cmp r3, 0\n\
+ beq _0801EB46\n\
+ bl _0801F5FA\n\
+_0801EB46:\n\
+ bl _0801F5DC\n\
+_0801EB4A:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r1, r0\n\
+ ldr r2, _0801EB84 @ =gStatusFlagsForMoveEffects\n\
+ ldrb r3, [r7, 0x3]\n\
+ lsls r0, r3, 2\n\
+ adds r0, r2\n\
+ ldr r1, [r1]\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0801EB6E\n\
+ bl _0801F5DC\n\
+_0801EB6E:\n\
+ subs r0, r3, 0x7\n\
+ cmp r0, 0x34\n\
+ bls _0801EB78\n\
+ bl _0801F5FA\n\
+_0801EB78:\n\
+ lsls r0, 2\n\
+ ldr r1, _0801EB88 @ =_0801EB8C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0801EB84: .4byte gStatusFlagsForMoveEffects\n\
+_0801EB88: .4byte _0801EB8C\n\
+ .align 2, 0\n\
+_0801EB8C:\n\
+ .4byte _0801EC60\n\
+ .4byte _0801ECD4\n\
+ .4byte _0801EE4C\n\
+ .4byte _0801ED60\n\
+ .4byte _0801EDDC\n\
+ .4byte _0801EE84\n\
+ .4byte _0801EECC\n\
+ .4byte _0801EFA8\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F13C\n\
+ .4byte _0801F184\n\
+ .4byte _0801F1A4\n\
+ .4byte _0801F364\n\
+ .4byte _0801F3A0\n\
+ .4byte _0801F3BC\n\
+ .4byte _0801F3D4\n\
+ .4byte _0801F3EC\n\
+ .4byte _0801F44C\n\
+ .4byte _0801F464\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F4A8\n\
+ .4byte _0801F500\n\
+ .4byte _0801F5FA\n\
+ .4byte _0801F5FA\n\
+ .4byte _0801F5FA\n\
+ .4byte _0801F5FA\n\
+ .4byte _0801F5EC\n\
+_0801EC60:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ movs r5, 0x58\n\
+ adds r1, r0, 0\n\
+ muls r1, r5\n\
+ mov r2, r9\n\
+ adds r0, r1, r2\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x14\n\
+ bne _0801EC7A\n\
+ bl _0801F5DC\n\
+_0801EC7A:\n\
+ mov r4, r9\n\
+ adds r4, 0x50\n\
+ adds r0, r1, r4\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801EC8E\n\
+ bl _0801F5DC\n\
+_0801EC8E:\n\
+ bl Random\n\
+ mov r3, r8\n\
+ ldrb r1, [r3]\n\
+ adds r2, r1, 0\n\
+ muls r2, r5\n\
+ adds r2, r4\n\
+ lsls r0, 16\n\
+ movs r1, 0xC0\n\
+ lsls r1, 10\n\
+ ands r1, r0\n\
+ lsrs r1, 16\n\
+ adds r1, 0x2\n\
+ ldr r0, [r2]\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801ECD0 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ bl _0801F5F8\n\
+ .align 2, 0\n\
+_0801ECC8: .4byte gBattlescriptCurrInstr\n\
+_0801ECCC: .4byte gMoveEffectBS_Ptrs\n\
+_0801ECD0: .4byte gBattleCommunication\n\
+_0801ECD4:\n\
+ mov r0, r8\n\
+ ldrb r2, [r0]\n\
+ movs r6, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r6\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ cmp r1, 0x27\n\
+ bne _0801ED18\n\
+ cmp r4, 0x1\n\
+ beq _0801ECF4\n\
+ cmp r5, 0x80\n\
+ beq _0801ECF4\n\
+ bl _0801F5DC\n\
+_0801ECF4:\n\
+ ldr r0, _0801ED0C @ =gLastUsedAbility\n\
+ strb r1, [r0]\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ movs r1, 0x27\n\
+ bl RecordAbilityBattle\n\
+ ldr r1, _0801ED10 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention\n\
+ str r0, [r1]\n\
+ bl _0801F5FA\n\
+ .align 2, 0\n\
+_0801ED0C: .4byte gLastUsedAbility\n\
+_0801ED10: .4byte gBattlescriptCurrInstr\n\
+_0801ED14: .4byte BattleScript_FlinchPrevention\n\
+_0801ED18:\n\
+ adds r0, r2, 0\n\
+ bl BankGetTurnOrder\n\
+ ldr r1, _0801ED54 @ =gCurrentMoveTurn\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bhi _0801ED2E\n\
+ bl _0801F5DC\n\
+_0801ED2E:\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ adds r2, r0, 0\n\
+ muls r2, r6\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r1, _0801ED58 @ =gStatusFlagsForMoveEffects\n\
+ ldr r0, _0801ED5C @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r1, [r2]\n\
+ ldr r0, [r0]\n\
+ orrs r1, r0\n\
+ str r1, [r2]\n\
+ bl _0801F5DC\n\
+ .align 2, 0\n\
+_0801ED54: .4byte gCurrentMoveTurn\n\
+_0801ED58: .4byte gStatusFlagsForMoveEffects\n\
+_0801ED5C: .4byte gBattleCommunication\n\
+_0801ED60:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r5, 0x58\n\
+ muls r0, r5\n\
+ mov r4, r9\n\
+ adds r4, 0x50\n\
+ adds r2, r0, r4\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x70\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801ED7C\n\
+ bl _0801F5DC\n\
+_0801ED7C:\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ orrs r1, r0\n\
+ str r1, [r2]\n\
+ ldr r1, _0801EDC8 @ =gLockedMove\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldr r1, _0801EDCC @ =gCurrentMove\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+ bl Random\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ adds r2, r1, 0\n\
+ muls r2, r5\n\
+ adds r2, r4\n\
+ movs r1, 0x3\n\
+ ands r1, r0\n\
+ adds r1, 0x2\n\
+ lsls r1, 4\n\
+ ldr r0, [r2]\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801EDD8 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ bl _0801F5F8\n\
+ .align 2, 0\n\
+_0801EDC8: .4byte gLockedMove\n\
+_0801EDCC: .4byte gCurrentMove\n\
+_0801EDD0: .4byte gBattlescriptCurrInstr\n\
+_0801EDD4: .4byte gMoveEffectBS_Ptrs\n\
+_0801EDD8: .4byte gBattleCommunication\n\
+_0801EDDC:\n\
+ ldr r5, _0801EE30 @ =gBankAttacker\n\
+ ldrb r0, [r5]\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0801EE14\n\
+ ldr r4, _0801EE34 @ =gPaydayMoney\n\
+ ldrh r3, [r4]\n\
+ ldr r2, _0801EE38 @ =gBattleMons\n\
+ ldrb r1, [r5]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r2\n\
+ adds r0, 0x2A\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ adds r0, r3, r0\n\
+ strh r0, [r4]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r3, r0\n\
+ bls _0801EE14\n\
+ ldr r3, _0801EE3C @ =0x0000ffff\n\
+ adds r0, r3, 0\n\
+ strh r0, [r4]\n\
+_0801EE14:\n\
+ ldr r4, _0801EE40 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801EE48 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ bl _0801F5F8\n\
+ .align 2, 0\n\
+_0801EE30: .4byte gBankAttacker\n\
+_0801EE34: .4byte gPaydayMoney\n\
+_0801EE38: .4byte gBattleMons\n\
+_0801EE3C: .4byte 0x0000ffff\n\
+_0801EE40: .4byte gBattlescriptCurrInstr\n\
+_0801EE44: .4byte gMoveEffectBS_Ptrs\n\
+_0801EE48: .4byte gBattleCommunication\n\
+_0801EE4C:\n\
+ mov r4, r8\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ mov r1, r9\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801EE62\n\
+ b _0801F5DC\n\
+_0801EE62:\n\
+ bl Random\n\
+ ldr r4, _0801EE80 @ =gBattleCommunication\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ adds r0, 0x3\n\
+ strb r0, [r4, 0x3]\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ bl SetMoveEffect\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801EE80: .4byte gBattleCommunication\n\
+_0801EE84:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 5\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r1, _0801EEC0 @ =gLockedMove\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldr r1, _0801EEC4 @ =gCurrentMove\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+ ldr r0, _0801EEC8 @ =gProtectStructs\n\
+ ldrb r1, [r2]\n\
+ lsls r1, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ movs r2, 0x4\n\
+ orrs r0, r2\n\
+ strb r0, [r1, 0x1]\n\
+ b _0801F5DC\n\
+ .align 2, 0\n\
+_0801EEC0: .4byte gLockedMove\n\
+_0801EEC4: .4byte gCurrentMove\n\
+_0801EEC8: .4byte gProtectStructs\n\
+_0801EECC:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r6, 0x58\n\
+ muls r0, r6\n\
+ mov r4, r9\n\
+ adds r4, 0x50\n\
+ adds r0, r4\n\
+ ldr r5, [r0]\n\
+ movs r0, 0xE0\n\
+ lsls r0, 8\n\
+ ands r5, r0\n\
+ cmp r5, 0\n\
+ beq _0801EEE8\n\
+ b _0801F5DC\n\
+_0801EEE8:\n\
+ bl Random\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ adds r2, r1, 0\n\
+ muls r2, r6\n\
+ adds r2, r4\n\
+ movs r1, 0x3\n\
+ ands r1, r0\n\
+ adds r1, 0x3\n\
+ lsls r1, 13\n\
+ ldr r0, [r2]\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r2, _0801EF80 @ =0x02000000\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ ldr r4, _0801EF84 @ =0x00016004\n\
+ adds r0, r4\n\
+ adds r0, r2\n\
+ ldr r6, _0801EF88 @ =gCurrentMove\n\
+ ldrh r1, [r6]\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ ldr r1, _0801EF8C @ =0x00016005\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+ ldrh r1, [r6]\n\
+ lsrs r1, 8\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r3]\n\
+ ldr r3, _0801EF90 @ =0x00016020\n\
+ adds r0, r3\n\
+ adds r0, r2\n\
+ ldr r1, _0801EF94 @ =gBankAttacker\n\
+ ldrb r1, [r1]\n\
+ strb r1, [r0]\n\
+ ldr r4, _0801EF98 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs\n\
+ ldr r2, _0801EFA0 @ =gBattleCommunication\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ str r0, [r4]\n\
+ strb r5, [r2, 0x5]\n\
+ ldr r1, _0801EFA4 @ =gTrappingMoves\n\
+ ldrh r0, [r1]\n\
+ ldrh r4, [r6]\n\
+ cmp r0, r4\n\
+ bne _0801EF5C\n\
+ b _0801F5FA\n\
+_0801EF5C:\n\
+ adds r3, r1, 0\n\
+ adds r1, r6, 0\n\
+_0801EF60:\n\
+ ldrb r0, [r2, 0x5]\n\
+ adds r0, 0x1\n\
+ strb r0, [r2, 0x5]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x4\n\
+ bls _0801EF70\n\
+ b _0801F5FA\n\
+_0801EF70:\n\
+ ldrb r0, [r2, 0x5]\n\
+ lsls r0, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ ldrh r4, [r1]\n\
+ cmp r0, r4\n\
+ bne _0801EF60\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801EF80: .4byte 0x02000000\n\
+_0801EF84: .4byte 0x00016004\n\
+_0801EF88: .4byte gCurrentMove\n\
+_0801EF8C: .4byte 0x00016005\n\
+_0801EF90: .4byte 0x00016020\n\
+_0801EF94: .4byte gBankAttacker\n\
+_0801EF98: .4byte gBattlescriptCurrInstr\n\
+_0801EF9C: .4byte gMoveEffectBS_Ptrs\n\
+_0801EFA0: .4byte gBattleCommunication\n\
+_0801EFA4: .4byte gTrappingMoves\n\
+_0801EFA8:\n\
+ ldr r1, _0801EFD8 @ =gBattleMoveDamage\n\
+ ldr r0, _0801EFDC @ =gHP_dealt\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bge _0801EFB4\n\
+ adds r0, 0x3\n\
+_0801EFB4:\n\
+ asrs r0, 2\n\
+ str r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _0801EFC0\n\
+ movs r0, 0x1\n\
+ str r0, [r1]\n\
+_0801EFC0:\n\
+ ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801EFE8 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801EFD8: .4byte gBattleMoveDamage\n\
+_0801EFDC: .4byte gHP_dealt\n\
+_0801EFE0: .4byte gBattlescriptCurrInstr\n\
+_0801EFE4: .4byte gMoveEffectBS_Ptrs\n\
+_0801EFE8: .4byte gBattleCommunication\n\
+_0801EFEC:\n\
+ ldrb r1, [r7, 0x3]\n\
+ adds r1, 0xF2\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ movs r0, 0x10\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl ChangeStatBuffs\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0\n\
+ beq _0801F008\n\
+ b _0801F5DC\n\
+_0801F008:\n\
+ ldr r2, _0801F02C @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ ldr r4, _0801F030 @ =0x000160a4\n\
+ adds r1, r2, r4\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F034 @ =0x000160a5\n\
+ adds r2, r0\n\
+ strb r3, [r2]\n\
+ ldr r4, _0801F038 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F03C @ =BattleScript_StatUp\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F02C: .4byte 0x02000000\n\
+_0801F030: .4byte 0x000160a4\n\
+_0801F034: .4byte 0x000160a5\n\
+_0801F038: .4byte gBattlescriptCurrInstr\n\
+_0801F03C: .4byte BattleScript_StatUp\n\
+_0801F040:\n\
+ movs r0, 0x70\n\
+ negs r0, r0\n\
+ ldrb r1, [r7, 0x3]\n\
+ adds r1, 0xEB\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl ChangeStatBuffs\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0\n\
+ beq _0801F05E\n\
+ b _0801F5DC\n\
+_0801F05E:\n\
+ ldr r2, _0801F080 @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ ldr r4, _0801F084 @ =0x000160a4\n\
+ adds r1, r2, r4\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F088 @ =0x000160a5\n\
+ adds r2, r0\n\
+ strb r3, [r2]\n\
+ ldr r4, _0801F08C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F090 @ =BattleScript_StatDown\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F080: .4byte 0x02000000\n\
+_0801F084: .4byte 0x000160a4\n\
+_0801F088: .4byte 0x000160a5\n\
+_0801F08C: .4byte gBattlescriptCurrInstr\n\
+_0801F090: .4byte BattleScript_StatDown\n\
+_0801F094:\n\
+ ldrb r1, [r7, 0x3]\n\
+ adds r1, 0xDA\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ movs r0, 0x20\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl ChangeStatBuffs\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0\n\
+ beq _0801F0B0\n\
+ b _0801F5DC\n\
+_0801F0B0:\n\
+ ldr r2, _0801F0D4 @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ ldr r4, _0801F0D8 @ =0x000160a4\n\
+ adds r1, r2, r4\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F0DC @ =0x000160a5\n\
+ adds r2, r0\n\
+ strb r3, [r2]\n\
+ ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F0E4 @ =BattleScript_StatUp\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F0D4: .4byte 0x02000000\n\
+_0801F0D8: .4byte 0x000160a4\n\
+_0801F0DC: .4byte 0x000160a5\n\
+_0801F0E0: .4byte gBattlescriptCurrInstr\n\
+_0801F0E4: .4byte BattleScript_StatUp\n\
+_0801F0E8:\n\
+ movs r0, 0x60\n\
+ negs r0, r0\n\
+ ldrb r1, [r7, 0x3]\n\
+ adds r1, 0xD3\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl ChangeStatBuffs\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0\n\
+ beq _0801F106\n\
+ b _0801F5DC\n\
+_0801F106:\n\
+ ldr r2, _0801F128 @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ ldr r4, _0801F12C @ =0x000160a4\n\
+ adds r1, r2, r4\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F130 @ =0x000160a5\n\
+ adds r2, r0\n\
+ strb r3, [r2]\n\
+ ldr r4, _0801F134 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F138 @ =BattleScript_StatDown\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F128: .4byte 0x02000000\n\
+_0801F12C: .4byte 0x000160a4\n\
+_0801F130: .4byte 0x000160a5\n\
+_0801F134: .4byte gBattlescriptCurrInstr\n\
+_0801F138: .4byte BattleScript_StatDown\n\
+_0801F13C:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 15\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r2, _0801F178 @ =gDisableStructs\n\
+ mov r3, r8\n\
+ ldrb r1, [r3]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ movs r1, 0x2\n\
+ strb r1, [r0, 0x19]\n\
+ ldr r1, _0801F17C @ =gLockedMove\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldr r1, _0801F180 @ =gCurrentMove\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+ b _0801F5DC\n\
+ .align 2, 0\n\
+_0801F178: .4byte gDisableStructs\n\
+_0801F17C: .4byte gLockedMove\n\
+_0801F180: .4byte gCurrentMove\n\
+_0801F184:\n\
+ ldr r0, _0801F1A0 @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 16\n\
+_0801F19A:\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ b _0801F5DC\n\
+ .align 2, 0\n\
+_0801F1A0: .4byte gBankAttacker\n\
+_0801F1A4:\n\
+ ldr r4, _0801F254 @ =gBankAttacker\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0801F1D8\n\
+ ldr r0, _0801F258 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0801F25C @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801F214\n\
+ ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0801F1D8\n\
+ b _0801F5DC\n\
+_0801F1D8:\n\
+ ldr r0, _0801F258 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0801F25C @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801F214\n\
+ ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0801F214\n\
+ ldr r0, _0801F264 @ =gWishFutureKnock\n\
+ adds r0, 0x29\n\
+ adds r0, r6, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r3, _0801F268 @ =gBitTable\n\
+ ldr r2, _0801F26C @ =gBattlePartyID\n\
+ ldr r0, _0801F254 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0801F214\n\
+ b _0801F5DC\n\
+_0801F214:\n\
+ ldr r2, _0801F270 @ =gBattleMons\n\
+ ldr r1, _0801F274 @ =gBankTarget\n\
+ ldrb r0, [r1]\n\
+ movs r3, 0x58\n\
+ muls r0, r3\n\
+ adds r4, r0, r2\n\
+ ldrh r0, [r4, 0x2E]\n\
+ adds r7, r1, 0\n\
+ mov r9, r2\n\
+ cmp r0, 0\n\
+ beq _0801F284\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3C\n\
+ bne _0801F284\n\
+ ldr r1, _0801F278 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0801F27C @ =BattleScript_NoItemSteal\n\
+ str r0, [r1]\n\
+ ldr r1, _0801F280 @ =gLastUsedAbility\n\
+ ldrb r0, [r7]\n\
+ muls r0, r3\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F254: .4byte gBankAttacker\n\
+_0801F258: .4byte gBattleTypeFlags\n\
+_0801F25C: .4byte 0x00000902\n\
+_0801F260: .4byte gTrainerBattleOpponent\n\
+_0801F264: .4byte gWishFutureKnock\n\
+_0801F268: .4byte gBitTable\n\
+_0801F26C: .4byte gBattlePartyID\n\
+_0801F270: .4byte gBattleMons\n\
+_0801F274: .4byte gBankTarget\n\
+_0801F278: .4byte gBattlescriptCurrInstr\n\
+_0801F27C: .4byte BattleScript_NoItemSteal\n\
+_0801F280: .4byte gLastUsedAbility\n\
+_0801F284:\n\
+ ldr r4, _0801F340 @ =gBankAttacker\n\
+ mov r10, r4\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x58\n\
+ mov r8, r0\n\
+ mov r0, r8\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ ldrh r3, [r0, 0x2E]\n\
+ cmp r3, 0\n\
+ beq _0801F29C\n\
+ b _0801F5DC\n\
+_0801F29C:\n\
+ ldrb r0, [r7]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ add r0, r9\n\
+ ldrh r2, [r0, 0x2E]\n\
+ adds r0, r2, 0\n\
+ cmp r0, 0xAF\n\
+ bne _0801F2B0\n\
+ b _0801F5DC\n\
+_0801F2B0:\n\
+ cmp r0, 0\n\
+ bne _0801F2B6\n\
+ b _0801F5DC\n\
+_0801F2B6:\n\
+ lsls r0, r1, 1\n\
+ ldr r5, _0801F344 @ =0x020160f0\n\
+ adds r0, r5\n\
+ ldr r1, _0801F348 @ =gLastUsedItem\n\
+ strh r2, [r0]\n\
+ strh r2, [r1]\n\
+ ldrb r0, [r7]\n\
+ mov r4, r8\n\
+ muls r4, r0\n\
+ adds r0, r4, 0\n\
+ add r0, r9\n\
+ movs r6, 0\n\
+ strh r3, [r0, 0x2E]\n\
+ ldr r4, _0801F34C @ =gActiveBank\n\
+ mov r2, r10\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r4]\n\
+ str r1, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl EmitSetAttributes\n\
+ mov r3, r10\n\
+ ldrb r0, [r3]\n\
+ bl MarkBufferBankForExecution\n\
+ ldrb r0, [r7]\n\
+ strb r0, [r4]\n\
+ ldrb r0, [r7]\n\
+ mov r4, r8\n\
+ muls r4, r0\n\
+ adds r0, r4, 0\n\
+ mov r1, r9\n\
+ adds r1, 0x2E\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r7]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r4, _0801F350 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F354 @ =BattleScript_ItemSteal\n\
+ str r0, [r4]\n\
+ ldr r0, _0801F358 @ =0xfffe9f10\n\
+ adds r5, r0\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 1\n\
+ ldr r1, _0801F35C @ =0x000160e8\n\
+ adds r0, r1\n\
+ adds r0, r5\n\
+ strb r6, [r0]\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 1\n\
+ ldr r2, _0801F360 @ =0x000160e9\n\
+ adds r0, r2\n\
+ adds r0, r5\n\
+ strb r6, [r0]\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F340: .4byte gBankAttacker\n\
+_0801F344: .4byte 0x020160f0\n\
+_0801F348: .4byte gLastUsedItem\n\
+_0801F34C: .4byte gActiveBank\n\
+_0801F350: .4byte gBattlescriptCurrInstr\n\
+_0801F354: .4byte BattleScript_ItemSteal\n\
+_0801F358: .4byte 0xfffe9f10\n\
+_0801F35C: .4byte 0x000160e8\n\
+_0801F360: .4byte 0x000160e9\n\
+_0801F364:\n\
+ ldr r3, _0801F394 @ =gBankTarget\n\
+ ldrb r1, [r3]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 19\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r2, _0801F398 @ =gDisableStructs\n\
+ ldrb r1, [r3]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldr r1, _0801F39C @ =gBankAttacker\n\
+ ldrb r1, [r1]\n\
+ strb r1, [r0, 0x14]\n\
+ b _0801F5DC\n\
+ .align 2, 0\n\
+_0801F394: .4byte gBankTarget\n\
+_0801F398: .4byte gDisableStructs\n\
+_0801F39C: .4byte gBankAttacker\n\
+_0801F3A0:\n\
+ ldr r0, _0801F3B8 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 20\n\
+ b _0801F19A\n\
+ .align 2, 0\n\
+_0801F3B8: .4byte gBankTarget\n\
+_0801F3BC:\n\
+ ldr r4, _0801F3CC @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F3D0 @ =gUnknown_081D9224\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F3CC: .4byte gBattlescriptCurrInstr\n\
+_0801F3D0: .4byte gUnknown_081D9224\n\
+_0801F3D4:\n\
+ ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F3E4: .4byte gBattlescriptCurrInstr\n\
+_0801F3E8: .4byte BattleScript_RapidSpinAway\n\
+_0801F3EC:\n\
+ ldr r6, _0801F43C @ =gBankTarget\n\
+ ldrb r0, [r6]\n\
+ movs r2, 0x58\n\
+ muls r0, r2\n\
+ mov r1, r9\n\
+ adds r1, 0x4C\n\
+ adds r5, r0, r1\n\
+ ldr r4, [r5]\n\
+ movs r0, 0x40\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ bne _0801F406\n\
+ b _0801F5DC\n\
+_0801F406:\n\
+ movs r0, 0x41\n\
+ negs r0, r0\n\
+ ands r4, r0\n\
+ str r4, [r5]\n\
+ ldr r4, _0801F440 @ =gActiveBank\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r4]\n\
+ ldrb r0, [r4]\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r4, _0801F444 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F43C: .4byte gBankTarget\n\
+_0801F440: .4byte gActiveBank\n\
+_0801F444: .4byte gBattlescriptCurrInstr\n\
+_0801F448: .4byte BattleScript_TargetPRLZHeal\n\
+_0801F44C:\n\
+ ldr r4, _0801F45C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F460 @ =gUnknown_081D93FA\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F45C: .4byte gBattlescriptCurrInstr\n\
+_0801F460: .4byte gUnknown_081D93FA\n\
+_0801F464:\n\
+ ldr r4, _0801F494 @ =gBattleMoveDamage\n\
+ ldr r0, _0801F498 @ =gHP_dealt\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x3\n\
+ bl __divsi3\n\
+ str r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _0801F47A\n\
+ movs r0, 0x1\n\
+ str r0, [r4]\n\
+_0801F47A:\n\
+ ldr r4, _0801F49C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801F4A4 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F494: .4byte gBattleMoveDamage\n\
+_0801F498: .4byte gHP_dealt\n\
+_0801F49C: .4byte gBattlescriptCurrInstr\n\
+_0801F4A0: .4byte gMoveEffectBS_Ptrs\n\
+_0801F4A4: .4byte gBattleCommunication\n\
+_0801F4A8:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r5, 0x58\n\
+ muls r0, r5\n\
+ mov r4, r9\n\
+ adds r4, 0x50\n\
+ adds r2, r0, r4\n\
+ ldr r1, [r2]\n\
+ movs r0, 0xC0\n\
+ lsls r0, 4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801F4C4\n\
+ b _0801F5DC\n\
+_0801F4C4:\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ orrs r1, r0\n\
+ str r1, [r2]\n\
+ ldr r1, _0801F4F8 @ =gLockedMove\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldr r1, _0801F4FC @ =gCurrentMove\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+ bl Random\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ adds r2, r1, 0\n\
+ muls r2, r5\n\
+ adds r2, r4\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ adds r1, 0x2\n\
+ lsls r1, 10\n\
+ ldr r0, [r2]\n\
+_0801F4F2:\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F4F8: .4byte gLockedMove\n\
+_0801F4FC: .4byte gCurrentMove\n\
+_0801F500:\n\
+ mov r5, r8\n\
+ ldrb r3, [r5]\n\
+ movs r4, 0x58\n\
+ adds r0, r3, 0\n\
+ muls r0, r4\n\
+ mov r2, r9\n\
+ adds r1, r0, r2\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r2, [r0]\n\
+ cmp r2, 0x3C\n\
+ bne _0801F540\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0\n\
+ beq _0801F5DC\n\
+ ldr r0, _0801F534 @ =gLastUsedAbility\n\
+ strb r2, [r0]\n\
+ ldr r1, _0801F538 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0801F53C @ =BattleScript_NoItemSteal\n\
+ str r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ movs r1, 0x3C\n\
+ bl RecordAbilityBattle\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F534: .4byte gLastUsedAbility\n\
+_0801F538: .4byte gBattlescriptCurrInstr\n\
+_0801F53C: .4byte BattleScript_NoItemSteal\n\
+_0801F540:\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0\n\
+ beq _0801F5DC\n\
+ adds r0, r3, 0\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ ldr r1, _0801F5B8 @ =gLastUsedItem\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ muls r0, r4\n\
+ add r0, r9\n\
+ ldrh r0, [r0, 0x2E]\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ muls r0, r4\n\
+ add r0, r9\n\
+ movs r5, 0\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x2E]\n\
+ ldr r2, _0801F5BC @ =gWishFutureKnock\n\
+ adds r2, 0x29\n\
+ adds r2, r6, r2\n\
+ ldr r3, _0801F5C0 @ =gBitTable\n\
+ ldr r1, _0801F5C4 @ =gBattlePartyID\n\
+ mov r4, r8\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F5CC @ =BattleScript_KnockedOff\n\
+ str r0, [r4]\n\
+ ldr r1, _0801F5D0 @ =0x02000000\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ ldr r3, _0801F5D4 @ =0x000160e8\n\
+ adds r0, r3\n\
+ adds r0, r1\n\
+ strb r5, [r0]\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ ldr r4, _0801F5D8 @ =0x000160e9\n\
+ adds r0, r4\n\
+ adds r0, r1\n\
+ strb r5, [r0]\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F5B8: .4byte gLastUsedItem\n\
+_0801F5BC: .4byte gWishFutureKnock\n\
+_0801F5C0: .4byte gBitTable\n\
+_0801F5C4: .4byte gBattlePartyID\n\
+_0801F5C8: .4byte gBattlescriptCurrInstr\n\
+_0801F5CC: .4byte BattleScript_KnockedOff\n\
+_0801F5D0: .4byte 0x02000000\n\
+_0801F5D4: .4byte 0x000160e8\n\
+_0801F5D8: .4byte 0x000160e9\n\
+_0801F5DC:\n\
+ ldr r1, _0801F5E8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x1\n\
+ str r0, [r1]\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F5E8: .4byte gBattlescriptCurrInstr\n\
+_0801F5EC:\n\
+ ldr r4, _0801F60C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F610 @ =gUnknown_081D94B0\n\
+_0801F5F8:\n\
+ str r0, [r4]\n\
+_0801F5FA:\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0801F60C: .4byte gBattlescriptCurrInstr\n\
+_0801F610: .4byte gUnknown_081D94B0\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+static void atk15_seteffectwithchancetarget(void)
+{
+ u32 PercentChance;
+ if (gBattleMons[gBankAttacker].ability == ABILITY_SERENE_GRACE)
+ PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2;
+ else
+ PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance;
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] &= 0x7F;
+ SetMoveEffect(0, 0x80);
+ }
+ else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (PercentChance >= 100)
+ SetMoveEffect(0, 0x80);
+ else
+ SetMoveEffect(0, 0);
+ }
+ else
+ gBattlescriptCurrInstr++;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ BATTLE_STRUCT->filler2[0x3E] = 0; //TODO: to fix this later
+}
+
+static void atk16_seteffectprimary(void)
+{
+ SetMoveEffect(1, 0);
+}
+
+static void atk17_seteffectsecondary(void)
+{
+ SetMoveEffect(0, 0);
+}
+
+static void atk18_status_effect_clear(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6)
+ gBattleMons[gActiveBank].status1 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+ else
+ gBattleMons[gActiveBank].status2 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ gBattlescriptCurrInstr += 2;
+ BATTLE_STRUCT->filler2[0x3E] = 0; //TODO: to fix this later
+}
+
+//Fuck this, Maybe later
+__attribute__((naked))
+static void atk19_faint_pokemon(void)
+{
+ asm(".syntax unified\n\
+push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ ldr r0, _0801F81C @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r0]\n\
+ ldrb r1, [r2, 0x2]\n\
+ adds r6, r0, 0\n\
+ cmp r1, 0\n\
+ beq _0801F834\n\
+ ldrb r0, [r2, 0x1]\n\
+ bl GetBattleBank\n\
+ ldr r5, _0801F820 @ =gActiveBank\n\
+ strb r0, [r5]\n\
+ ldr r2, _0801F824 @ =gHitMarker\n\
+ ldr r1, _0801F828 @ =gBitTable\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r2]\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801F7E6\n\
+ b _0801FB1C\n\
+_0801F7E6:\n\
+ ldr r1, [r6]\n\
+ ldrb r4, [r1, 0x3]\n\
+ ldrb r0, [r1, 0x4]\n\
+ lsls r0, 8\n\
+ orrs r4, r0\n\
+ ldrb r0, [r1, 0x5]\n\
+ lsls r0, 16\n\
+ orrs r4, r0\n\
+ ldrb r0, [r1, 0x6]\n\
+ lsls r0, 24\n\
+ orrs r4, r0\n\
+ bl b_movescr_stack_pop_cursor\n\
+ str r4, [r6]\n\
+ ldrb r0, [r5]\n\
+ bl GetBankSide\n\
+ ldr r1, _0801F82C @ =gSideAffecting\n\
+ lsls r0, 24\n\
+ lsrs r0, 23\n\
+ adds r0, r1\n\
+ ldrh r2, [r0]\n\
+ ldr r1, _0801F830 @ =0x0000fdff\n\
+ ands r1, r2\n\
+ strh r1, [r0]\n\
+ b _0801FB22\n\
+ .align 2, 0\n\
+_0801F81C: .4byte gBattlescriptCurrInstr\n\
+_0801F820: .4byte gActiveBank\n\
+_0801F824: .4byte gHitMarker\n\
+_0801F828: .4byte gBitTable\n\
+_0801F82C: .4byte gSideAffecting\n\
+_0801F830: .4byte 0x0000fdff\n\
+_0801F834:\n\
+ ldrb r0, [r2, 0x1]\n\
+ cmp r0, 0x1\n\
+ bne _0801F85C\n\
+ ldr r1, _0801F84C @ =gActiveBank\n\
+ ldr r0, _0801F850 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F854 @ =gBankTarget\n\
+ ldrb r7, [r0]\n\
+ ldr r4, _0801F858 @ =gUnknown_081D8C58\n\
+ b _0801F86A\n\
+ .align 2, 0\n\
+_0801F84C: .4byte gActiveBank\n\
+_0801F850: .4byte gBankAttacker\n\
+_0801F854: .4byte gBankTarget\n\
+_0801F858: .4byte gUnknown_081D8C58\n\
+_0801F85C:\n\
+ ldr r1, _0801F954 @ =gActiveBank\n\
+ ldr r0, _0801F958 @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F95C @ =gBankAttacker\n\
+ ldrb r7, [r0]\n\
+ ldr r4, _0801F960 @ =gUnknown_081D8C65\n\
+_0801F86A:\n\
+ ldr r0, _0801F964 @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r0, _0801F968 @ =gBitTable\n\
+ mov r12, r0\n\
+ ldr r2, _0801F954 @ =gActiveBank\n\
+ mov r8, r2\n\
+ ldrb r2, [r2]\n\
+ lsls r0, r2, 2\n\
+ add r0, r12\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0801F886\n\
+ b _0801FB1C\n\
+_0801F886:\n\
+ ldr r3, _0801F96C @ =gBattleMons\n\
+ mov r10, r3\n\
+ movs r5, 0x58\n\
+ mov r9, r5\n\
+ mov r0, r9\n\
+ muls r0, r2\n\
+ add r0, r10\n\
+ ldrh r3, [r0, 0x28]\n\
+ cmp r3, 0\n\
+ beq _0801F89C\n\
+ b _0801FB1C\n\
+_0801F89C:\n\
+ ldr r2, _0801F970 @ =0x02000000\n\
+ lsls r1, r7, 1\n\
+ ldr r5, _0801F974 @ =0x000160ac\n\
+ adds r0, r1, r5\n\
+ adds r0, r2\n\
+ strb r3, [r0]\n\
+ ldr r0, _0801F978 @ =0x000160ad\n\
+ adds r1, r0\n\
+ adds r1, r2\n\
+ strb r3, [r1]\n\
+ lsls r1, r7, 2\n\
+ adds r5, 0x54\n\
+ adds r0, r1, r5\n\
+ adds r0, r2\n\
+ strb r3, [r0]\n\
+ adds r5, 0x1\n\
+ adds r0, r1, r5\n\
+ adds r0, r2\n\
+ strb r3, [r0]\n\
+ adds r5, 0x1\n\
+ adds r0, r1, r5\n\
+ adds r0, r2\n\
+ strb r3, [r0]\n\
+ ldr r0, _0801F97C @ =0x00016103\n\
+ adds r1, r0\n\
+ adds r1, r2\n\
+ strb r3, [r1]\n\
+ ldr r5, _0801F980 @ =gHitMarker\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 2\n\
+ add r0, r12\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r5]\n\
+ orrs r0, r1\n\
+ str r0, [r5]\n\
+ ldr r0, [r6]\n\
+ adds r0, 0x7\n\
+ bl b_movescr_stack_push\n\
+ str r4, [r6]\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0801F9B0\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x80\n\
+ lsls r1, 15\n\
+ orrs r0, r1\n\
+ str r0, [r5]\n\
+ ldr r1, _0801F984 @ =gBattleResults\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xFE\n\
+ bhi _0801F914\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+_0801F914:\n\
+ mov r0, r9\n\
+ muls r0, r7\n\
+ add r0, r10\n\
+ adds r3, r0, 0\n\
+ adds r3, 0x2A\n\
+ mov r4, r8\n\
+ ldrb r2, [r4]\n\
+ mov r0, r9\n\
+ muls r0, r2\n\
+ add r0, r10\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x2A\n\
+ ldrb r0, [r3]\n\
+ ldrb r5, [r1]\n\
+ cmp r0, r5\n\
+ bls _0801F9CC\n\
+ ldrb r1, [r1]\n\
+ subs r0, r1\n\
+ cmp r0, 0x1D\n\
+ ble _0801F990\n\
+ ldr r1, _0801F988 @ =gBattlePartyID\n\
+ lsls r0, r2, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _0801F98C @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0x8\n\
+ bl AdjustFriendship\n\
+ b _0801F9CC\n\
+ .align 2, 0\n\
+_0801F954: .4byte gActiveBank\n\
+_0801F958: .4byte gBankTarget\n\
+_0801F95C: .4byte gBankAttacker\n\
+_0801F960: .4byte gUnknown_081D8C65\n\
+_0801F964: .4byte gAbsentBankFlags\n\
+_0801F968: .4byte gBitTable\n\
+_0801F96C: .4byte gBattleMons\n\
+_0801F970: .4byte 0x02000000\n\
+_0801F974: .4byte 0x000160ac\n\
+_0801F978: .4byte 0x000160ad\n\
+_0801F97C: .4byte 0x00016103\n\
+_0801F980: .4byte gHitMarker\n\
+_0801F984: .4byte gBattleResults\n\
+_0801F988: .4byte gBattlePartyID\n\
+_0801F98C: .4byte gPlayerParty\n\
+_0801F990:\n\
+ ldr r1, _0801F9A8 @ =gBattlePartyID\n\
+ lsls r0, r2, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _0801F9AC @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0x6\n\
+ bl AdjustFriendship\n\
+ b _0801F9CC\n\
+ .align 2, 0\n\
+_0801F9A8: .4byte gBattlePartyID\n\
+_0801F9AC: .4byte gPlayerParty\n\
+_0801F9B0:\n\
+ ldr r1, _0801FAE0 @ =gBattleResults\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0xFE\n\
+ bhi _0801F9BC\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x1]\n\
+_0801F9BC:\n\
+ ldr r2, _0801FAE4 @ =gActiveBank\n\
+ ldrb r0, [r2]\n\
+ mov r3, r9\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ add r0, r10\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1, 0x20]\n\
+_0801F9CC:\n\
+ ldr r0, _0801FAE8 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801FA02\n\
+ ldr r6, _0801FAEC @ =gBattleMons\n\
+ ldr r0, _0801FAF0 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ movs r5, 0x58\n\
+ muls r0, r5\n\
+ adds r0, r6\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _0801FA02\n\
+ ldr r4, _0801FAF4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801FAF8 @ =gBattleMoveDamage\n\
+ adds r0, r7, 0\n\
+ muls r0, r5\n\
+ adds r0, r6\n\
+ ldrh r0, [r0, 0x28]\n\
+ str r0, [r1]\n\
+ ldr r0, _0801FAFC @ =gUnknown_081D9156\n\
+ str r0, [r4]\n\
+_0801FA02:\n\
+ ldr r1, _0801FB00 @ =gStatuses3\n\
+ ldr r6, _0801FB04 @ =gBankTarget\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801FA1A\n\
+ b _0801FB22\n\
+_0801FA1A:\n\
+ ldr r0, _0801FAE8 @ =gHitMarker\n\
+ ldr r5, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 17\n\
+ ands r5, r0\n\
+ cmp r5, 0\n\
+ bne _0801FB22\n\
+ ldr r4, _0801FAF0 @ =gBankAttacker\n\
+ mov r8, r4\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ adds r4, r0, 0\n\
+ ldrb r0, [r6]\n\
+ bl GetBankSide\n\
+ lsls r4, 24\n\
+ lsls r0, 24\n\
+ cmp r4, r0\n\
+ beq _0801FB22\n\
+ ldr r0, _0801FAEC @ =gBattleMons\n\
+ mov r9, r0\n\
+ mov r1, r8\n\
+ ldrb r2, [r1]\n\
+ movs r7, 0x58\n\
+ adds r3, r2, 0\n\
+ muls r3, r7\n\
+ adds r0, r3, r0\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _0801FB22\n\
+ ldr r0, _0801FB08 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0xA5\n\
+ beq _0801FB22\n\
+ ldr r1, _0801FB0C @ =0x02000000\n\
+ ldr r4, _0801FB10 @ =0x0001608c\n\
+ adds r0, r2, r4\n\
+ adds r0, r1\n\
+ ldrb r4, [r0]\n\
+ adds r0, r4, r3\n\
+ mov r6, r9\n\
+ adds r6, 0x24\n\
+ adds r0, r6\n\
+ strb r5, [r0]\n\
+ ldr r5, _0801FAF4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r5]\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801FB14 @ =gUnknown_081D9468\n\
+ str r0, [r5]\n\
+ ldr r5, _0801FAE4 @ =gActiveBank\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ strb r0, [r5]\n\
+ adds r1, r4, 0\n\
+ adds r1, 0x9\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ ldrb r0, [r5]\n\
+ muls r0, r7\n\
+ adds r0, r6\n\
+ adds r0, r4\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r2, 0\n\
+ movs r3, 0x1\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r5]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r1, _0801FB18 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x2\n\
+ strb r0, [r1, 0x1]\n\
+ lsls r4, 1\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ muls r0, r7\n\
+ adds r0, r4, r0\n\
+ mov r2, r9\n\
+ adds r2, 0xC\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r1, 0x2]\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ muls r0, r7\n\
+ adds r4, r0\n\
+ adds r4, r2\n\
+ ldrh r0, [r4]\n\
+ lsrs r0, 8\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ b _0801FB22\n\
+ .align 2, 0\n\
+_0801FAE0: .4byte gBattleResults\n\
+_0801FAE4: .4byte gActiveBank\n\
+_0801FAE8: .4byte gHitMarker\n\
+_0801FAEC: .4byte gBattleMons\n\
+_0801FAF0: .4byte gBankAttacker\n\
+_0801FAF4: .4byte gBattlescriptCurrInstr\n\
+_0801FAF8: .4byte gBattleMoveDamage\n\
+_0801FAFC: .4byte gUnknown_081D9156\n\
+_0801FB00: .4byte gStatuses3\n\
+_0801FB04: .4byte gBankTarget\n\
+_0801FB08: .4byte gCurrentMove\n\
+_0801FB0C: .4byte 0x02000000\n\
+_0801FB10: .4byte 0x0001608c\n\
+_0801FB14: .4byte gUnknown_081D9468\n\
+_0801FB18: .4byte gBattleTextBuff1\n\
+_0801FB1C:\n\
+ ldr r0, [r6]\n\
+ adds r0, 0x7\n\
+ str r0, [r6]\n\
+_0801FB22:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+
+static void atk1A_faint_animation(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ EmitFaintAnimation(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk1B_faint_effects_clear(void)
+{
+ //Clears things like attraction or trapping to other banks
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ gBattleMons[gActiveBank].status1 = 0;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ UndoEffectsAfterFainting();
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk1C_jumpifstatus(void)
+{
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
+ void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
+ if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 10;
+}
+
+static void atk1D_jumpifstatus2(void)
+{
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
+ void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
+ if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 10;
+}
+
+static void atk1E_jumpifability(void)
+{
+ u8 bank;
+ u8 ability = BSScriptRead8(gBattlescriptCurrInstr + 2);
+ void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 8)
+ {
+ bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBankAttacker, ability, 0, 0);
+ if (bank)
+ {
+ gLastUsedAbility = ability;
+ gBattlescriptCurrInstr = jump_loc;
+ RecordAbilityBattle(bank -1, gLastUsedAbility);
+ unk_2000000[0x160f8] = bank - 1;
+ }
+ else
+ gBattlescriptCurrInstr += 7;
+ }
+ else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 9)
+ {
+ bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBankAttacker, ability, 0, 0);
+ if (bank)
+ {
+ gLastUsedAbility = ability;
+ gBattlescriptCurrInstr = jump_loc;
+ RecordAbilityBattle(bank - 1, gLastUsedAbility);
+ unk_2000000[0x160f8] = bank - 1;
+ }
+ else
+ gBattlescriptCurrInstr += 7;
+ }
+ else
+ {
+ bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleMons[bank].ability == ability)
+ {
+ gLastUsedAbility = ability;
+ gBattlescriptCurrInstr = jump_loc;
+ RecordAbilityBattle(bank, gLastUsedAbility);
+ unk_2000000[0x160f8] = bank;
+ }
+ else
+ gBattlescriptCurrInstr += 7;
+ }
+}
+
+static void atk1F_jumpifsideaffecting(void)
+{
+ u8 side;
+ u16 flags;
+ void* jump_loc;
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1)
+ side = GetBankIdentity(gBankAttacker) & 1;
+ else
+ side = GetBankIdentity(gBankTarget) & 1;
+
+ flags = BS2ScriptRead16(gBattlescriptCurrInstr + 2);
+ jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 4);
+
+ if (gSideAffecting[side] & flags)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 8;
+}
+
+static void atk20_jumpifstat(void)
+{
+ u8 ret = 0;
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ u8 value = gBattleMons[bank].statStages[BSScriptRead8(gBattlescriptCurrInstr + 3)];
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 2))
+ {
+ case CMP_EQUAL:
+ if (value == BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_NOT_EQUAL:
+ if (value != BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_GREATER_THAN:
+ if (value > BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_LESS_THAN:
+ if (value < BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_COMMON_BITS:
+ if (value & BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(value & BSScriptRead8(gBattlescriptCurrInstr + 4)))
+ ret++;
+ break;
+ }
+ if (ret)
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ else
+ gBattlescriptCurrInstr += 9;
+}
+
+static void atk21_jumpifstatus3(void)
+{
+ u32 flags;
+ void* jump_loc;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
+ jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7);
+ if (BSScriptRead8(gBattlescriptCurrInstr + 6))
+ {
+ if ((gStatuses3[gActiveBank] & flags) != 0)
+ gBattlescriptCurrInstr += 11;
+ else
+ gBattlescriptCurrInstr = jump_loc;
+ }
+ else
+ {
+ if ((gStatuses3[gActiveBank] & flags) != 0)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 11;
+ }
+}
+
+static void atk22_jumpiftype(void) //u8 bank, u8 type, *ptr
+{
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ u8 type = BSScriptRead8(gBattlescriptCurrInstr + 2);
+ void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
+
+ if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 7;
+}
+
+//here we go again...
+#ifdef NONMATCHING
+static void atk23_getexp(void)
+{
+ u8 hold_effect;
+ int via_expshare = 0, sent_in;
+ u16* exp = &BATTLE_STRUCT->exp;
+ gBank1 = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ sent_in = gSentPokesToOpponent[(gBank1 & 2) >> 1];
+ switch (BATTLE_STRUCT->atk23StateTracker)
+ {
+ case 0: //check if should receive exp at all
+ if (GetBankSide(gBank1) != 1 || (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
+ BATTLE_STRUCT->atk23StateTracker = 6; //goto last case
+ else
+ {
+ BATTLE_STRUCT->atk23StateTracker++;
+ unk_2000000[0x16113] |= gBitTable[gBattlePartyID[gBank1]];
+ }
+ break;
+ case 1: //calculate experience points to redistribute
+ {
+ int via_sent_in = 0, i;
+ u16 calculatedExp;
+ for (i = 0; i < 6; i++)
+ {
+ u16 item;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == 0 || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ continue;
+ if (gBitTable[i] & sent_in)
+ via_sent_in++;
+
+ item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ if (item == ITEM_ENIGMA_BERRY)
+ hold_effect = gSaveBlock1.enigmaBerry.holdEffect;
+ else
+ hold_effect = ItemId_GetHoldEffect(item);
+
+ if (hold_effect == HOLD_EFFECT_EXP_SHARE)
+ via_expshare++;
+ }
+ calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7;
+ if (via_expshare) //at least one poke is getting exp via exp share
+ {
+ calculatedExp /= 2;
+ *exp = calculatedExp / via_sent_in;
+ if (*exp == 0)
+ *exp = 1;
+
+ gExpShareExp = calculatedExp / via_expshare;
+ if (gExpShareExp == 0)
+ gExpShareExp = 1;
+ }
+ else
+ {
+ *exp = calculatedExp / via_sent_in;
+ if (*exp == 0)
+ *exp = 1;
+ gExpShareExp = 0;
+ }
+ BATTLE_STRUCT->atk23StateTracker++;
+ BATTLE_STRUCT->expGetterID = 0;
+ BATTLE_STRUCT->sentInPokes = sent_in;
+ } //no break statement
+ case 2: //loop; set exp value to the poke in expgetter_id and print message
+ if (gBattleExecBuffer == 0)
+ {
+ u16 item = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HELD_ITEM);
+ u8* tracker; u32 zero;
+ if (item == ITEM_ENIGMA_BERRY)
+ hold_effect = gSaveBlock1.enigmaBerry.holdEffect;
+ else
+ hold_effect = ItemId_GetHoldEffect(item);
+
+ if ((hold_effect != HOLD_EFFECT_EXP_SHARE && !(BATTLE_STRUCT->sentInPokes & 1)))
+ {
+ BATTLE_STRUCT->sentInPokes >>= 1;
+ tracker = &BATTLE_STRUCT->atk23StateTracker;
+ zero = 0;
+ goto LABEL;
+ }
+ else if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) == 100)
+ {
+
+ BATTLE_STRUCT->sentInPokes >>= 1;
+ tracker = &BATTLE_STRUCT->atk23StateTracker;
+ zero = 0;
+ LABEL:
+ *tracker = 5; //increment looper
+ gBattleMoveDamage = zero; //used for exp
+ }
+ else
+ {
+ //music change in wild battle after fainting a poke
+ if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !BATTLE_STRUCT->wildVictorySong)
+ {
+ BattleMusicStop();
+ PlayBGM(0x161);
+ BATTLE_STRUCT->wildVictorySong++;
+ }
+
+ if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP))
+ {
+ s16 stringID;
+ if (BATTLE_STRUCT->sentInPokes & 1)
+ gBattleMoveDamage = *exp;
+ else
+ gBattleMoveDamage = 0;
+
+ if (hold_effect == HOLD_EFFECT_EXP_SHARE)
+ gBattleMoveDamage += gExpShareExp;
+ if (hold_effect == HOLD_EFFECT_LUCKY_EGG)
+ gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
+
+ if (IsTradedMon(&gPlayerParty[BATTLE_STRUCT->expGetterID]))
+ {
+ gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
+ stringID = 0x14A;
+ }
+ else
+ stringID = 0x149;
+
+ //get exp getter bank
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (!(gBattlePartyID[2] != BATTLE_STRUCT->expGetterID) && !(gAbsentBankFlags & gBitTable[2]))
+ BATTLE_STRUCT->expGetterBank = 2;
+ else
+ {
+ if (!(gAbsentBankFlags & gBitTable[0]))
+ BATTLE_STRUCT->expGetterBank = 0;
+ else
+ BATTLE_STRUCT->expGetterBank = 2;
+ }
+ }
+ else
+ BATTLE_STRUCT->expGetterBank = 0;
+
+ //buffer poke name
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = BATTLE_STRUCT->expGetterBank;
+ gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID;
+ gBattleTextBuff1[4] = 0xFF;
+
+ //buffer 'gained' or 'gained a boosted'
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 0;
+ gBattleTextBuff2[2] = sBYTE0_32(stringID);
+ gBattleTextBuff2[3] = sBYTE1_32(stringID);
+ gBattleTextBuff2[4] = 0xFF;
+
+ //buffer exp number
+ gBattleTextBuff3[0] = 0xFD;
+ gBattleTextBuff3[1] = 1;
+ gBattleTextBuff3[2] = 4; //word
+ gBattleTextBuff3[3] = 5; //max digits
+ gBattleTextBuff3[4] = gBattleMoveDamage;
+ gBattleTextBuff3[5] = sBYTE1_32(gBattleMoveDamage);
+ gBattleTextBuff3[6] = sBYTE2_32(gBattleMoveDamage);
+ gBattleTextBuff3[7] = sBYTE3_32(gBattleMoveDamage);
+ gBattleTextBuff3[8] = 0xFF;
+
+ PrepareStringBattle(0xD, BATTLE_STRUCT->expGetterBank);
+ MonGainEVs(&gPlayerParty[BATTLE_STRUCT->expGetterID], gBattleMons[gBank1].species);
+ }
+ BATTLE_STRUCT->sentInPokes >>= 1;
+ BATTLE_STRUCT->atk23StateTracker++;
+ }
+ }
+ break;
+ case 3: //Set Stats and give exp
+ if (gBattleExecBuffer == 0)
+ {
+ gBattleBufferB[BATTLE_STRUCT->expGetterBank][0] = 0;
+ if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) != 100)
+ {
+ BATTLE_STRUCT->beforeLvlUp[0] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP); //doesnt match
+ BATTLE_STRUCT->beforeLvlUp[1] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK);
+ BATTLE_STRUCT->beforeLvlUp[2] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF);
+ BATTLE_STRUCT->beforeLvlUp[3] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD);
+ BATTLE_STRUCT->beforeLvlUp[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK);
+ BATTLE_STRUCT->beforeLvlUp[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF);
+
+ gActiveBank = BATTLE_STRUCT->expGetterBank;
+ EmitExpBarUpdate(0, BATTLE_STRUCT->expGetterID, gBattleMoveDamage);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ BATTLE_STRUCT->atk23StateTracker++;
+ }
+ break;
+ case 4: //lvl up if necessary
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = BATTLE_STRUCT->expGetterBank;
+ if (gBattleBufferB[gActiveBank][0] == 0x21 && gBattleBufferB[gActiveBank][1] == 0xB)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID)
+ sub_80324F8(&gPlayerParty[gActiveBank], gActiveBank);
+
+ //buff poke name
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = gActiveBank;
+ gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID;
+ gBattleTextBuff1[4] = 0xFF;
+
+ //buff level
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 1;
+ gBattleTextBuff2[2] = 1;
+ gBattleTextBuff2[3] = 3;
+ gBattleTextBuff2[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL);
+ gBattleTextBuff2[5] = 0xFF;
+
+ b_movescr_stack_push_cursor();
+ gLeveledUpInBattle |= gBitTable[BATTLE_STRUCT->expGetterID];
+ gBattlescriptCurrInstr = BattleScript_LevelUp;
+ gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8));
+ AdjustFriendship(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0);
+
+ //update battle mon structure after level up
+ if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && gBattleMons[0].hp)
+ {
+ gBattleMons[0].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL);
+ gBattleMons[0].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP);
+ gBattleMons[0].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP);
+ gBattleMons[0].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK);
+ gBattleMons[0].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF);
+ gBattleMons[0].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD);
+ gBattleMons[0].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK);
+ gBattleMons[0].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF);
+ }
+ //What is else if? Guess it's too advanced for GameFreak
+ if (gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gBattleMons[2].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL);
+ gBattleMons[2].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP);
+ gBattleMons[2].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP);
+ gBattleMons[2].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK);
+ gBattleMons[2].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF);
+ //There are no words...GF can't even copy&paste code properly
+ gBattleMons[2].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD);
+ gBattleMons[2].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD /*RIP*/);
+ gBattleMons[2].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK);
+ }
+ BATTLE_STRUCT->atk23StateTracker = 5;
+ }
+ else
+ {
+ gBattleMoveDamage = 0;
+ BATTLE_STRUCT->atk23StateTracker = 5;
+ }
+ }
+ break;
+ case 5: //looper increment
+ if (gBattleMoveDamage) //there is exp to give, goto case 3 that gives exp
+ BATTLE_STRUCT->atk23StateTracker = 3;
+ else
+ {
+ if (++BATTLE_STRUCT->expGetterID <= 5)
+ BATTLE_STRUCT->atk23StateTracker = 2; //loop again
+ else
+ BATTLE_STRUCT->atk23StateTracker = 6; //we're done
+ }
+ break;
+ case 6: //increment instruction
+ if (gBattleExecBuffer == 0)
+ {
+ //not even sure why gamefreak clears that data in this place
+ gBattleMons[gBank1].item = 0;
+ gBattleMons[gBank1].ability = 0;
+ gBattlescriptCurrInstr += 2;
+ }
+ break;
+ }
+}
+#else
+__attribute__((naked))
+static void atk23_getexp(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ movs r6, 0\n\
+ ldr r0, _0802004C @ =0x0201605c\n\
+ mov r10, r0\n\
+ ldr r0, _08020050 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x1]\n\
+ bl GetBattleBank\n\
+ ldr r1, _08020054 @ =gBank1\n\
+ strb r0, [r1]\n\
+ ldr r2, _08020058 @ =gSentPokesToOpponent\n\
+ movs r1, 0x2\n\
+ ands r1, r0\n\
+ lsls r1, 24\n\
+ lsrs r1, 25\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ mov r8, r1\n\
+ mov r0, r10\n\
+ subs r0, 0x4D\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x6\n\
+ bls _08020040\n\
+ bl _08020996\n\
+_08020040:\n\
+ lsls r0, 2\n\
+ ldr r1, _0802005C @ =_08020060\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0802004C: .4byte 0x0201605c\n\
+_08020050: .4byte gBattlescriptCurrInstr\n\
+_08020054: .4byte gBank1\n\
+_08020058: .4byte gSentPokesToOpponent\n\
+_0802005C: .4byte _08020060\n\
+ .align 2, 0\n\
+_08020060:\n\
+ .4byte _0802007C\n\
+ .4byte _080200FC\n\
+ .4byte _08020216\n\
+ .4byte _0802055C\n\
+ .4byte _08020648\n\
+ .4byte _08020910\n\
+ .4byte _0802096C\n\
+_0802007C:\n\
+ ldr r4, _080200A8 @ =gBank1\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _08020098\n\
+ ldr r0, _080200AC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _080200B0 @ =0x00000982\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080200BC\n\
+_08020098:\n\
+ ldr r0, _080200B4 @ =0x02000000\n\
+ ldr r1, _080200B8 @ =0x0001600f\n\
+ adds r0, r1\n\
+ movs r1, 0x6\n\
+ strb r1, [r0]\n\
+ bl _08020996\n\
+ .align 2, 0\n\
+_080200A8: .4byte gBank1\n\
+_080200AC: .4byte gBattleTypeFlags\n\
+_080200B0: .4byte 0x00000982\n\
+_080200B4: .4byte 0x02000000\n\
+_080200B8: .4byte 0x0001600f\n\
+_080200BC:\n\
+ ldr r2, _080200E8 @ =0x02000000\n\
+ ldr r3, _080200EC @ =0x0001600f\n\
+ adds r1, r2, r3\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ ldr r0, _080200F0 @ =0x00016113\n\
+ adds r2, r0\n\
+ ldr r3, _080200F4 @ =gBitTable\n\
+ ldr r1, _080200F8 @ =gBattlePartyID\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ bl _08020996\n\
+ .align 2, 0\n\
+_080200E8: .4byte 0x02000000\n\
+_080200EC: .4byte 0x0001600f\n\
+_080200F0: .4byte 0x00016113\n\
+_080200F4: .4byte gBitTable\n\
+_080200F8: .4byte gBattlePartyID\n\
+_080200FC:\n\
+ movs r5, 0\n\
+ movs r7, 0\n\
+ ldr r1, _08020150 @ =gSaveBlock1 + 0x3688\n\
+ mov r9, r1\n\
+_08020104:\n\
+ movs r0, 0x64\n\
+ adds r1, r7, 0\n\
+ muls r1, r0\n\
+ ldr r0, _08020154 @ =gPlayerParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0802016A\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0802016A\n\
+ ldr r0, _08020158 @ =gBitTable\n\
+ lsls r1, r7, 2\n\
+ adds r1, r0\n\
+ ldr r0, [r1]\n\
+ mov r2, r8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _08020138\n\
+ adds r5, 0x1\n\
+_08020138:\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xC\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xAF\n\
+ bne _0802015C\n\
+ mov r3, r9\n\
+ ldrb r4, [r3]\n\
+ b _08020164\n\
+ .align 2, 0\n\
+_08020150: .4byte gSaveBlock1 + 0x3688\n\
+_08020154: .4byte gPlayerParty\n\
+_08020158: .4byte gBitTable\n\
+_0802015C:\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+_08020164:\n\
+ cmp r4, 0x19\n\
+ bne _0802016A\n\
+ adds r6, 0x1\n\
+_0802016A:\n\
+ adds r7, 0x1\n\
+ cmp r7, 0x5\n\
+ ble _08020104\n\
+ ldr r3, _080201D0 @ =gBaseStats\n\
+ ldr r2, _080201D4 @ =gBattleMons\n\
+ ldr r0, _080201D8 @ =gBank1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ adds r1, r2\n\
+ ldrh r2, [r1]\n\
+ lsls r0, r2, 3\n\
+ subs r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldrb r2, [r0, 0x9]\n\
+ adds r1, 0x2A\n\
+ ldrb r0, [r1]\n\
+ muls r0, r2\n\
+ movs r1, 0x7\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r6, 0\n\
+ beq _080201E0\n\
+ lsrs r4, r0, 17\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ bl __divsi3\n\
+ mov r1, r10\n\
+ strh r0, [r1]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bne _080201B6\n\
+ movs r0, 0x1\n\
+ strh r0, [r1]\n\
+_080201B6:\n\
+ ldr r5, _080201DC @ =gExpShareExp\n\
+ adds r0, r4, 0\n\
+ adds r1, r6, 0\n\
+ bl __divsi3\n\
+ strh r0, [r5]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bne _080201FA\n\
+ movs r0, 0x1\n\
+ strh r0, [r5]\n\
+ b _080201FA\n\
+ .align 2, 0\n\
+_080201D0: .4byte gBaseStats\n\
+_080201D4: .4byte gBattleMons\n\
+_080201D8: .4byte gBank1\n\
+_080201DC: .4byte gExpShareExp\n\
+_080201E0:\n\
+ adds r0, r1, 0\n\
+ adds r1, r5, 0\n\
+ bl __divsi3\n\
+ mov r2, r10\n\
+ strh r0, [r2]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bne _080201F6\n\
+ movs r0, 0x1\n\
+ strh r0, [r2]\n\
+_080201F6:\n\
+ ldr r0, _08020248 @ =gExpShareExp\n\
+ strh r6, [r0]\n\
+_080201FA:\n\
+ ldr r1, _0802024C @ =0x02000000\n\
+ ldr r3, _08020250 @ =0x0001600f\n\
+ adds r2, r1, r3\n\
+ ldrb r0, [r2]\n\
+ adds r0, 0x1\n\
+ movs r3, 0\n\
+ strb r0, [r2]\n\
+ ldr r2, _08020254 @ =0x00016018\n\
+ adds r0, r1, r2\n\
+ strb r3, [r0]\n\
+ ldr r3, _08020258 @ =0x0001605f\n\
+ adds r1, r3\n\
+ mov r0, r8\n\
+ strb r0, [r1]\n\
+_08020216:\n\
+ ldr r0, _0802025C @ =gBattleExecBuffer\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08020220\n\
+ b _08020996\n\
+_08020220:\n\
+ ldr r0, _0802024C @ =0x02000000\n\
+ ldr r1, _08020254 @ =0x00016018\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08020260 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0xC\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xAF\n\
+ bne _0802026C\n\
+ ldr r0, _08020264 @ =gSaveBlock1\n\
+ ldr r2, _08020268 @ =0x00003688\n\
+ adds r0, r2\n\
+ ldrb r4, [r0]\n\
+ b _08020274\n\
+ .align 2, 0\n\
+_08020248: .4byte gExpShareExp\n\
+_0802024C: .4byte 0x02000000\n\
+_08020250: .4byte 0x0001600f\n\
+_08020254: .4byte 0x00016018\n\
+_08020258: .4byte 0x0001605f\n\
+_0802025C: .4byte gBattleExecBuffer\n\
+_08020260: .4byte gPlayerParty\n\
+_08020264: .4byte gSaveBlock1\n\
+_08020268: .4byte 0x00003688\n\
+_0802026C:\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+_08020274:\n\
+ ldr r5, _08020294 @ =0x02000000\n\
+ cmp r4, 0x19\n\
+ beq _080202A0\n\
+ ldr r3, _08020298 @ =0x0001605f\n\
+ adds r1, r5, r3\n\
+ ldrb r0, [r1]\n\
+ movs r2, 0x1\n\
+ ands r2, r0\n\
+ cmp r2, 0\n\
+ bne _080202A0\n\
+ lsrs r0, 1\n\
+ strb r0, [r1]\n\
+ ldr r0, _0802029C @ =0x0001600f\n\
+ adds r1, r5, r0\n\
+ b _080202C8\n\
+ .align 2, 0\n\
+_08020294: .4byte 0x02000000\n\
+_08020298: .4byte 0x0001605f\n\
+_0802029C: .4byte 0x0001600f\n\
+_080202A0:\n\
+ ldr r1, _080202D4 @ =0x00016018\n\
+ adds r0, r5, r1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _080202D8 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ cmp r0, 0x64\n\
+ bne _080202E8\n\
+ ldr r2, _080202DC @ =0x0001605f\n\
+ adds r1, r5, r2\n\
+ ldrb r0, [r1]\n\
+ lsrs r0, 1\n\
+ movs r2, 0\n\
+ strb r0, [r1]\n\
+ ldr r3, _080202E0 @ =0x0001600f\n\
+ adds r1, r5, r3\n\
+_080202C8:\n\
+ movs r0, 0x5\n\
+ strb r0, [r1]\n\
+ ldr r0, _080202E4 @ =gBattleMoveDamage\n\
+ str r2, [r0]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_080202D4: .4byte 0x00016018\n\
+_080202D8: .4byte gPlayerParty\n\
+_080202DC: .4byte 0x0001605f\n\
+_080202E0: .4byte 0x0001600f\n\
+_080202E4: .4byte gBattleMoveDamage\n\
+_080202E8:\n\
+ ldr r0, _0802034C @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08020316\n\
+ ldr r0, _08020350 @ =gBattleMons\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08020316\n\
+ ldr r0, _08020354 @ =0x0001601b\n\
+ adds r5, r0\n\
+ ldrb r0, [r5]\n\
+ cmp r0, 0\n\
+ bne _08020316\n\
+ bl BattleMusicStop\n\
+ ldr r0, _08020358 @ =0x00000161\n\
+ bl PlayBGM\n\
+ ldrb r0, [r5]\n\
+ adds r0, 0x1\n\
+ strb r0, [r5]\n\
+_08020316:\n\
+ ldr r5, _0802035C @ =0x02000000\n\
+ ldr r1, _08020360 @ =0x00016018\n\
+ adds r0, r5, r1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08020364 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _08020332\n\
+ b _0802051E\n\
+_08020332:\n\
+ ldr r2, _08020368 @ =0x0001605f\n\
+ adds r0, r5, r2\n\
+ ldrb r0, [r0]\n\
+ movs r3, 0x1\n\
+ ands r3, r0\n\
+ cmp r3, 0\n\
+ beq _08020370\n\
+ ldr r1, _0802036C @ =gBattleMoveDamage\n\
+ mov r3, r10\n\
+ ldrh r0, [r3]\n\
+ str r0, [r1]\n\
+ mov r8, r1\n\
+ b _08020376\n\
+ .align 2, 0\n\
+_0802034C: .4byte gBattleTypeFlags\n\
+_08020350: .4byte gBattleMons\n\
+_08020354: .4byte 0x0001601b\n\
+_08020358: .4byte 0x00000161\n\
+_0802035C: .4byte 0x02000000\n\
+_08020360: .4byte 0x00016018\n\
+_08020364: .4byte gPlayerParty\n\
+_08020368: .4byte 0x0001605f\n\
+_0802036C: .4byte gBattleMoveDamage\n\
+_08020370:\n\
+ ldr r0, _080203EC @ =gBattleMoveDamage\n\
+ str r3, [r0]\n\
+ mov r8, r0\n\
+_08020376:\n\
+ cmp r4, 0x19\n\
+ bne _08020386\n\
+ ldr r0, _080203F0 @ =gExpShareExp\n\
+ ldrh r1, [r0]\n\
+ mov r2, r8\n\
+ ldr r0, [r2]\n\
+ adds r0, r1\n\
+ str r0, [r2]\n\
+_08020386:\n\
+ cmp r4, 0x28\n\
+ bne _0802039C\n\
+ mov r3, r8\n\
+ ldr r1, [r3]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+_0802039C:\n\
+ ldr r0, _080203F4 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080203B8\n\
+ ldr r4, _080203EC @ =gBattleMoveDamage\n\
+ ldr r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ str r0, [r4]\n\
+_080203B8:\n\
+ ldr r0, _080203F8 @ =0x02000000\n\
+ ldr r2, _080203FC @ =0x00016018\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08020400 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ bl IsTradedMon\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08020404\n\
+ ldr r4, _080203EC @ =gBattleMoveDamage\n\
+ ldr r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ str r0, [r4]\n\
+ movs r7, 0xA5\n\
+ lsls r7, 1\n\
+ mov r8, r4\n\
+ b _0802040A\n\
+ .align 2, 0\n\
+_080203EC: .4byte gBattleMoveDamage\n\
+_080203F0: .4byte gExpShareExp\n\
+_080203F4: .4byte gBattleTypeFlags\n\
+_080203F8: .4byte 0x02000000\n\
+_080203FC: .4byte 0x00016018\n\
+_08020400: .4byte gPlayerParty\n\
+_08020404:\n\
+ ldr r7, _0802043C @ =0x00000149\n\
+ ldr r3, _08020440 @ =gBattleMoveDamage\n\
+ mov r8, r3\n\
+_0802040A:\n\
+ ldr r0, _08020444 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _08020488\n\
+ ldr r1, _08020448 @ =gBattlePartyID\n\
+ ldr r0, _0802044C @ =0x02000000\n\
+ ldr r3, _08020450 @ =0x00016018\n\
+ adds r2, r0, r3\n\
+ ldrh r1, [r1, 0x4]\n\
+ adds r5, r0, 0\n\
+ ldr r4, _08020454 @ =gBitTable\n\
+ ldr r3, _08020458 @ =gAbsentBankFlags\n\
+ ldrb r2, [r2]\n\
+ cmp r1, r2\n\
+ bne _08020460\n\
+ ldrb r1, [r3]\n\
+ ldr r0, [r4, 0x8]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08020460\n\
+ ldr r0, _0802045C @ =0x000160a2\n\
+ adds r1, r5, r0\n\
+ b _0802047C\n\
+ .align 2, 0\n\
+_0802043C: .4byte 0x00000149\n\
+_08020440: .4byte gBattleMoveDamage\n\
+_08020444: .4byte gBattleTypeFlags\n\
+_08020448: .4byte gBattlePartyID\n\
+_0802044C: .4byte 0x02000000\n\
+_08020450: .4byte 0x00016018\n\
+_08020454: .4byte gBitTable\n\
+_08020458: .4byte gAbsentBankFlags\n\
+_0802045C: .4byte 0x000160a2\n\
+_08020460:\n\
+ ldrb r2, [r3]\n\
+ ldr r0, [r4]\n\
+ ands r2, r0\n\
+ cmp r2, 0\n\
+ bne _08020478\n\
+ ldr r1, _08020474 @ =0x000160a2\n\
+ adds r0, r5, r1\n\
+ strb r2, [r0]\n\
+ b _08020490\n\
+ .align 2, 0\n\
+_08020474: .4byte 0x000160a2\n\
+_08020478:\n\
+ ldr r2, _08020484 @ =0x000160a2\n\
+ adds r1, r5, r2\n\
+_0802047C:\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ b _08020490\n\
+ .align 2, 0\n\
+_08020484: .4byte 0x000160a2\n\
+_08020488:\n\
+ ldr r0, _08020530 @ =0x02000000\n\
+ ldr r3, _08020534 @ =0x000160a2\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+_08020490:\n\
+ ldr r1, _08020538 @ =gBattleTextBuff1\n\
+ movs r3, 0\n\
+ movs r2, 0xFD\n\
+ strb r2, [r1]\n\
+ movs r5, 0x4\n\
+ strb r5, [r1, 0x1]\n\
+ ldr r4, _08020530 @ =0x02000000\n\
+ ldr r0, _08020534 @ =0x000160a2\n\
+ adds r6, r4, r0\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1, 0x2]\n\
+ ldr r0, _0802053C @ =0x00016018\n\
+ adds r4, r0\n\
+ ldrb r0, [r4]\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _08020540 @ =gBattleTextBuff2\n\
+ strb r2, [r1]\n\
+ strb r3, [r1, 0x1]\n\
+ strb r7, [r1, 0x2]\n\
+ movs r3, 0xFF\n\
+ lsls r3, 8\n\
+ ands r7, r3\n\
+ asrs r0, r7, 8\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _08020544 @ =gBattleTextBuff3\n\
+ strb r2, [r1]\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x1]\n\
+ strb r5, [r1, 0x2]\n\
+ movs r0, 0x5\n\
+ strb r0, [r1, 0x3]\n\
+ mov r0, r8\n\
+ ldr r2, [r0]\n\
+ strb r2, [r1, 0x4]\n\
+ adds r0, r2, 0\n\
+ ands r0, r3\n\
+ asrs r0, 8\n\
+ strb r0, [r1, 0x5]\n\
+ movs r0, 0xFF\n\
+ lsls r0, 16\n\
+ ands r0, r2\n\
+ asrs r0, 16\n\
+ strb r0, [r1, 0x6]\n\
+ lsrs r2, 24\n\
+ strb r2, [r1, 0x7]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r1, 0x8]\n\
+ ldrb r1, [r6]\n\
+ movs r0, 0xD\n\
+ bl PrepareStringBattle\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08020548 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ ldr r3, _0802054C @ =gBattleMons\n\
+ ldr r1, _08020550 @ =gBank1\n\
+ ldrb r2, [r1]\n\
+ movs r1, 0x58\n\
+ muls r1, r2\n\
+ adds r1, r3\n\
+ ldrh r1, [r1]\n\
+ bl MonGainEVs\n\
+_0802051E:\n\
+ ldr r1, _08020530 @ =0x02000000\n\
+ ldr r3, _08020554 @ =0x0001605f\n\
+ adds r2, r1, r3\n\
+ ldrb r0, [r2]\n\
+ lsrs r0, 1\n\
+ strb r0, [r2]\n\
+ ldr r0, _08020558 @ =0x0001600f\n\
+ adds r1, r0\n\
+ b _08020618\n\
+ .align 2, 0\n\
+_08020530: .4byte 0x02000000\n\
+_08020534: .4byte 0x000160a2\n\
+_08020538: .4byte gBattleTextBuff1\n\
+_0802053C: .4byte 0x00016018\n\
+_08020540: .4byte gBattleTextBuff2\n\
+_08020544: .4byte gBattleTextBuff3\n\
+_08020548: .4byte gPlayerParty\n\
+_0802054C: .4byte gBattleMons\n\
+_08020550: .4byte gBank1\n\
+_08020554: .4byte 0x0001605f\n\
+_08020558: .4byte 0x0001600f\n\
+_0802055C:\n\
+ ldr r0, _08020620 @ =gBattleExecBuffer\n\
+ ldr r2, [r0]\n\
+ cmp r2, 0\n\
+ beq _08020566\n\
+ b _08020996\n\
+_08020566:\n\
+ ldr r1, _08020624 @ =gBattleBufferB\n\
+ ldr r4, _08020628 @ =0x02000000\n\
+ ldr r3, _0802062C @ =0x000160a2\n\
+ adds r3, r4\n\
+ mov r8, r3\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 9\n\
+ adds r0, r1\n\
+ strb r2, [r0]\n\
+ ldr r0, _08020630 @ =0x00016018\n\
+ adds r7, r4, r0\n\
+ ldrb r0, [r7]\n\
+ movs r6, 0x64\n\
+ muls r0, r6\n\
+ ldr r5, _08020634 @ =gPlayerParty\n\
+ adds r0, r5\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08020612\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ cmp r0, 0x64\n\
+ beq _08020612\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3A\n\
+ bl GetMonData\n\
+ ldr r1, _08020638 @ =0x00017180\n\
+ adds r4, r1\n\
+ strh r0, [r4]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3B\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x2]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3C\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x4]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x6]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3E\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x8]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3F\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0xA]\n\
+ ldr r4, _0802063C @ =gActiveBank\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r7]\n\
+ ldr r0, _08020640 @ =gBattleMoveDamage\n\
+ ldrh r2, [r0]\n\
+ movs r0, 0\n\
+ bl EmitExpBarUpdate\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08020612:\n\
+ ldr r1, _08020628 @ =0x02000000\n\
+ ldr r3, _08020644 @ =0x0001600f\n\
+ adds r1, r3\n\
+_08020618:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020620: .4byte gBattleExecBuffer\n\
+_08020624: .4byte gBattleBufferB\n\
+_08020628: .4byte 0x02000000\n\
+_0802062C: .4byte 0x000160a2\n\
+_08020630: .4byte 0x00016018\n\
+_08020634: .4byte gPlayerParty\n\
+_08020638: .4byte 0x00017180\n\
+_0802063C: .4byte gActiveBank\n\
+_08020640: .4byte gBattleMoveDamage\n\
+_08020644: .4byte 0x0001600f\n\
+_08020648:\n\
+ ldr r0, _080208AC @ =gBattleExecBuffer\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08020652\n\
+ b _08020996\n\
+_08020652:\n\
+ ldr r1, _080208B0 @ =gActiveBank\n\
+ ldr r4, _080208B4 @ =0x02000000\n\
+ ldr r2, _080208B8 @ =0x000160a2\n\
+ adds r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldr r2, _080208BC @ =gBattleBufferB\n\
+ ldrb r3, [r1]\n\
+ lsls r1, r3, 9\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x21\n\
+ beq _0802066E\n\
+ b _080208F0\n\
+_0802066E:\n\
+ adds r0, r2, 0x1\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xB\n\
+ beq _0802067A\n\
+ b _080208F0\n\
+_0802067A:\n\
+ ldr r0, _080208C0 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080206A8\n\
+ ldr r1, _080208C4 @ =gBattlePartyID\n\
+ lsls r0, r3, 1\n\
+ adds r2, r0, r1\n\
+ ldr r0, _080208C8 @ =0x00016018\n\
+ adds r1, r4, r0\n\
+ ldrh r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bne _080206A8\n\
+ adds r1, r0, 0\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _080208CC @ =gPlayerParty\n\
+ adds r0, r1\n\
+ adds r1, r3, 0\n\
+ bl sub_80324F8\n\
+_080206A8:\n\
+ ldr r1, _080208D0 @ =gBattleTextBuff1\n\
+ movs r2, 0xFD\n\
+ strb r2, [r1]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r5, _080208B0 @ =gActiveBank\n\
+ ldrb r0, [r5]\n\
+ strb r0, [r1, 0x2]\n\
+ ldr r0, _080208B4 @ =0x02000000\n\
+ ldr r3, _080208C8 @ =0x00016018\n\
+ adds r6, r0, r3\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r4, _080208D4 @ =gBattleTextBuff2\n\
+ strb r2, [r4]\n\
+ movs r0, 0x1\n\
+ strb r0, [r4, 0x1]\n\
+ strb r0, [r4, 0x2]\n\
+ movs r0, 0x3\n\
+ strb r0, [r4, 0x3]\n\
+ ldrb r0, [r6]\n\
+ movs r1, 0x64\n\
+ mov r8, r1\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ ldr r7, _080208CC @ =gPlayerParty\n\
+ adds r0, r7\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ strb r0, [r4, 0x4]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r4, 0x5]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r2, _080208D8 @ =gLeveledUpInBattle\n\
+ ldr r1, _080208DC @ =gBitTable\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r1, _080208E0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080208E4 @ =BattleScript_LevelUp\n\
+ str r0, [r1]\n\
+ ldr r4, _080208E8 @ =gBattleMoveDamage\n\
+ ldr r2, _080208BC @ =gBattleBufferB\n\
+ ldrb r1, [r5]\n\
+ lsls r1, 9\n\
+ adds r0, r2, 0x2\n\
+ adds r0, r1, r0\n\
+ ldrb r3, [r0]\n\
+ adds r2, 0x3\n\
+ adds r1, r2\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 8\n\
+ orrs r3, r0\n\
+ str r3, [r4]\n\
+ ldrb r0, [r6]\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r0, r7\n\
+ movs r1, 0\n\
+ bl AdjustFriendship\n\
+ ldr r0, _080208C4 @ =gBattlePartyID\n\
+ ldrb r1, [r6]\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r1\n\
+ bne _080207EC\n\
+ ldr r4, _080208EC @ =gBattleMons\n\
+ ldrh r0, [r4, 0x28]\n\
+ cmp r0, 0\n\
+ beq _080207EC\n\
+ mov r0, r8\n\
+ muls r0, r1\n\
+ adds r0, r7\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ adds r1, r4, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r6]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x28]\n\
+ ldrb r0, [r6]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3A\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x2C]\n\
+ ldrb r0, [r6]\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3B\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x2]\n\
+ ldrb r0, [r6]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3C\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x4]\n\
+ ldrb r0, [r6]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x6]\n\
+ ldrb r0, [r6]\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x6]\n\
+ ldrb r0, [r6]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3E\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x8]\n\
+ ldrb r0, [r6]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3F\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0xA]\n\
+_080207EC:\n\
+ ldr r0, _080208C4 @ =gBattlePartyID\n\
+ ldr r1, _080208B4 @ =0x02000000\n\
+ ldr r3, _080208C8 @ =0x00016018\n\
+ adds r7, r1, r3\n\
+ ldrb r2, [r7]\n\
+ ldrh r0, [r0, 0x4]\n\
+ cmp r0, r2\n\
+ bne _080208F6\n\
+ ldr r6, _080208EC @ =gBattleMons\n\
+ movs r0, 0xD8\n\
+ adds r0, r6\n\
+ mov r8, r0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080208F6\n\
+ ldr r0, _080208C0 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080208F6\n\
+ movs r5, 0x64\n\
+ adds r0, r2, 0\n\
+ muls r0, r5\n\
+ ldr r4, _080208CC @ =gPlayerParty\n\
+ adds r0, r4\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xDA\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3A\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xDC\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3B\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xB2\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3C\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xB4\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ movs r2, 0xB6\n\
+ adds r2, r6\n\
+ mov r8, r2\n\
+ strh r0, [r2]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ mov r3, r8\n\
+ strh r0, [r3]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3E\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xB8\n\
+ strh r0, [r1]\n\
+ b _080208F6\n\
+ .align 2, 0\n\
+_080208AC: .4byte gBattleExecBuffer\n\
+_080208B0: .4byte gActiveBank\n\
+_080208B4: .4byte 0x02000000\n\
+_080208B8: .4byte 0x000160a2\n\
+_080208BC: .4byte gBattleBufferB\n\
+_080208C0: .4byte gBattleTypeFlags\n\
+_080208C4: .4byte gBattlePartyID\n\
+_080208C8: .4byte 0x00016018\n\
+_080208CC: .4byte gPlayerParty\n\
+_080208D0: .4byte gBattleTextBuff1\n\
+_080208D4: .4byte gBattleTextBuff2\n\
+_080208D8: .4byte gLeveledUpInBattle\n\
+_080208DC: .4byte gBitTable\n\
+_080208E0: .4byte gBattlescriptCurrInstr\n\
+_080208E4: .4byte BattleScript_LevelUp\n\
+_080208E8: .4byte gBattleMoveDamage\n\
+_080208EC: .4byte gBattleMons\n\
+_080208F0:\n\
+ ldr r1, _08020904 @ =gBattleMoveDamage\n\
+ movs r0, 0\n\
+ str r0, [r1]\n\
+_080208F6:\n\
+ ldr r0, _08020908 @ =0x02000000\n\
+ ldr r1, _0802090C @ =0x0001600f\n\
+ adds r0, r1\n\
+ movs r1, 0x5\n\
+ strb r1, [r0]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020904: .4byte gBattleMoveDamage\n\
+_08020908: .4byte 0x02000000\n\
+_0802090C: .4byte 0x0001600f\n\
+_08020910:\n\
+ ldr r0, _08020924 @ =gBattleMoveDamage\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08020930\n\
+ ldr r0, _08020928 @ =0x02000000\n\
+ ldr r2, _0802092C @ =0x0001600f\n\
+ adds r0, r2\n\
+ movs r1, 0x3\n\
+ strb r1, [r0]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020924: .4byte gBattleMoveDamage\n\
+_08020928: .4byte 0x02000000\n\
+_0802092C: .4byte 0x0001600f\n\
+_08020930:\n\
+ ldr r2, _08020950 @ =0x02000000\n\
+ ldr r3, _08020954 @ =0x00016018\n\
+ adds r1, r2, r3\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x5\n\
+ bhi _0802095C\n\
+ ldr r0, _08020958 @ =0x0001600f\n\
+ adds r1, r2, r0\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020950: .4byte 0x02000000\n\
+_08020954: .4byte 0x00016018\n\
+_08020958: .4byte 0x0001600f\n\
+_0802095C:\n\
+ ldr r3, _08020968 @ =0x0001600f\n\
+ adds r1, r2, r3\n\
+ movs r0, 0x6\n\
+ strb r0, [r1]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020968: .4byte 0x0001600f\n\
+_0802096C:\n\
+ ldr r0, _080209A4 @ =gBattleExecBuffer\n\
+ ldr r5, [r0]\n\
+ cmp r5, 0\n\
+ bne _08020996\n\
+ ldr r4, _080209A8 @ =gBattleMons\n\
+ ldr r2, _080209AC @ =gBank1\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r4\n\
+ movs r3, 0\n\
+ strh r5, [r0, 0x2E]\n\
+ ldrb r0, [r2]\n\
+ muls r0, r1\n\
+ adds r0, r4\n\
+ adds r0, 0x20\n\
+ strb r3, [r0]\n\
+ ldr r1, _080209B0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x2\n\
+ str r0, [r1]\n\
+_08020996:\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080209A4: .4byte gBattleExecBuffer\n\
+_080209A8: .4byte gBattleMons\n\
+_080209AC: .4byte gBank1\n\
+_080209B0: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided\n");
+}
+
+#endif // NONMATCHING
+
+#ifdef NONMATCHING
+static void atk24(void)
+{
+ u16 HP_count = 0;
+ int i;
+ if (gBattleExecBuffer) {return;}
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ }
+
+ if (HP_count == 0)
+ gBattleOutcome |= BATTLE_LOST;
+
+ for (HP_count = 0, i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG))
+ HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP);
+ }
+
+ if (!HP_count)
+ gBattleOutcome |= BATTLE_WON;
+
+ if (!gBattleOutcome && (gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ register int found1 asm("r2");
+ register int found2 asm("r4");
+
+ //I can't for the love of god decompile that part
+
+ for (found1 = 0, i = 0; i < gNoOfAllBanks; i += 2)
+ {
+ if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40)
+ found1++;
+ }
+
+ for (found2 = 0, i = 1; i < gNoOfAllBanks; i += 2)
+ {
+ if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40)
+ found2++;
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (found2 + found1 > 1)
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ if (found2 != 0 && found1 != 0)
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+ }
+ }
+ else
+ gBattlescriptCurrInstr += 5;
+
+}
+#else
+__attribute__((naked))
+static void atk24(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ movs r6, 0\n\
+ ldr r0, _08020AF0 @ =gBattleExecBuffer\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080209C6\n\
+ b _08020B46\n\
+_080209C6:\n\
+ movs r5, 0\n\
+_080209C8:\n\
+ movs r0, 0x64\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, _08020AF4 @ =gPlayerParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _080209F8\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _080209F8\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ adds r0, r6, r0\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+_080209F8:\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x5\n\
+ ble _080209C8\n\
+ cmp r6, 0\n\
+ bne _08020A0C\n\
+ ldr r0, _08020AF8 @ =gBattleOutcome\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x2\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_08020A0C:\n\
+ movs r6, 0\n\
+ movs r5, 0\n\
+_08020A10:\n\
+ movs r0, 0x64\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, _08020AFC @ =gEnemyParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08020A40\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _08020A40\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ adds r0, r6, r0\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+_08020A40:\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x5\n\
+ ble _08020A10\n\
+ ldr r2, _08020AF8 @ =gBattleOutcome\n\
+ cmp r6, 0\n\
+ bne _08020A54\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+_08020A54:\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0\n\
+ bne _08020B3E\n\
+ ldr r2, _08020B00 @ =gBattleTypeFlags\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ mov r8, r2\n\
+ cmp r0, 0\n\
+ beq _08020B3E\n\
+ movs r2, 0\n\
+ movs r5, 0\n\
+ ldr r0, _08020B04 @ =gNoOfAllBanks\n\
+ ldrb r3, [r0]\n\
+ mov r12, r0\n\
+ ldr r7, _08020B08 @ =gBattlescriptCurrInstr\n\
+ cmp r2, r3\n\
+ bge _08020AA0\n\
+ ldr r0, _08020B0C @ =gHitMarker\n\
+ movs r1, 0x80\n\
+ lsls r1, 21\n\
+ ldr r6, [r0]\n\
+ adds r4, r3, 0\n\
+ ldr r3, _08020B10 @ =gSpecialStatuses\n\
+_08020A84:\n\
+ adds r0, r1, 0\n\
+ lsls r0, r5\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08020A98\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08020A98\n\
+ adds r2, 0x1\n\
+_08020A98:\n\
+ adds r3, 0x28\n\
+ adds r5, 0x2\n\
+ cmp r5, r4\n\
+ blt _08020A84\n\
+_08020AA0:\n\
+ movs r4, 0\n\
+ movs r5, 0x1\n\
+ mov r0, r12\n\
+ ldrb r3, [r0]\n\
+ cmp r5, r3\n\
+ bge _08020ADA\n\
+ ldr r0, _08020B0C @ =gHitMarker\n\
+ movs r1, 0x80\n\
+ lsls r1, 21\n\
+ mov r12, r1\n\
+ ldr r1, [r0]\n\
+ ldr r0, _08020B10 @ =gSpecialStatuses\n\
+ adds r6, r3, 0\n\
+ adds r3, r0, 0\n\
+ adds r3, 0x14\n\
+_08020ABE:\n\
+ mov r0, r12\n\
+ lsls r0, r5\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08020AD2\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08020AD2\n\
+ adds r4, 0x1\n\
+_08020AD2:\n\
+ adds r3, 0x28\n\
+ adds r5, 0x2\n\
+ cmp r5, r6\n\
+ blt _08020ABE\n\
+_08020ADA:\n\
+ mov r0, r8\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08020B14\n\
+ adds r0, r4, r2\n\
+ cmp r0, 0x1\n\
+ bgt _08020B1C\n\
+ b _08020B36\n\
+ .align 2, 0\n\
+_08020AF0: .4byte gBattleExecBuffer\n\
+_08020AF4: .4byte gPlayerParty\n\
+_08020AF8: .4byte gBattleOutcome\n\
+_08020AFC: .4byte gEnemyParty\n\
+_08020B00: .4byte gBattleTypeFlags\n\
+_08020B04: .4byte gNoOfAllBanks\n\
+_08020B08: .4byte gBattlescriptCurrInstr\n\
+_08020B0C: .4byte gHitMarker\n\
+_08020B10: .4byte gSpecialStatuses\n\
+_08020B14:\n\
+ cmp r4, 0\n\
+ beq _08020B36\n\
+ cmp r2, 0\n\
+ beq _08020B36\n\
+_08020B1C:\n\
+ ldr r2, [r7]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ adds r1, r0\n\
+ str r1, [r7]\n\
+ b _08020B46\n\
+_08020B36:\n\
+ ldr r0, [r7]\n\
+ adds r0, 0x5\n\
+ str r0, [r7]\n\
+ b _08020B46\n\
+_08020B3E:\n\
+ ldr r1, _08020B50 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+_08020B46:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08020B50: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided\n");
+}
+#endif
+
+static void MoveValuesCleanUp(void)
+{
+ gBattleMoveFlags = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
+ gCritMultiplier = 1;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ gBattleCommunication[6] = 0;
+ gHitMarker &= ~(HITMARKER_DESTINYBOND);
+ gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
+}
+
+static void atk25_move_values_cleanup(void)
+{
+ MoveValuesCleanUp();
+ gBattlescriptCurrInstr += 1;
+}
+
+static void atk26_set_multihit(void)
+{
+ gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk27_decrement_multihit(void)
+{
+ if (--gMultiHitCounter == 0)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atk28_goto(void)
+{
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atk29_jumpifbyte(void)
+{
+ u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ u8* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ u8 value = BSScriptRead8(gBattlescriptCurrInstr + 6);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7);
+ gBattlescriptCurrInstr += 11;
+ switch (caseID)
+ {
+ case CMP_EQUAL:
+ if (*ptr == value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NOT_EQUAL:
+ if (*ptr != value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_GREATER_THAN:
+ if (*ptr > value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_LESS_THAN:
+ if (*ptr < value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_COMMON_BITS:
+ if (*ptr & value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(*ptr & value))
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ }
+}
+
+static void atk2A_jumpifhalfword(void)
+{
+ u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ u16* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 6);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 8);
+ gBattlescriptCurrInstr += 12;
+ switch (caseID)
+ {
+ case CMP_EQUAL:
+ if (*ptr == value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NOT_EQUAL:
+ if (*ptr != value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_GREATER_THAN:
+ if (*ptr > value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_LESS_THAN:
+ if (*ptr < value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_COMMON_BITS:
+ if (*ptr & value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(*ptr & value))
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ }
+}
+
+static void atk2B_jumpifword(void)
+{
+ u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ u32* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ u32 value = BSScriptRead32(gBattlescriptCurrInstr + 6);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10);
+ gBattlescriptCurrInstr += 14;
+ switch (caseID)
+ {
+ case CMP_EQUAL:
+ if (*ptr == value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NOT_EQUAL:
+ if (*ptr != value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_GREATER_THAN:
+ if (*ptr > value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_LESS_THAN:
+ if (*ptr < value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_COMMON_BITS:
+ if (*ptr & value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(*ptr & value))
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ }
+}
+
+static void atk2C_jumpifarrayequal(void)
+{
+ //Mem1, Mem2, Size, Jump Loc
+ u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10);
+
+ u8 i;
+ for (i = 0; i < size; i++)
+ {
+ if (*mem1 != *mem2)
+ {
+ gBattlescriptCurrInstr += 14;
+ break;
+ }
+ mem1++, mem2++;
+ }
+
+ if (i == size)
+ gBattlescriptCurrInstr = jump_loc;
+}
+
+static void atk2D_jumpifarraynotequal(void)
+{
+ //Mem1, Mem2, Size, Jump Loc
+ u8 equal_bytes = 0;
+ u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10);
+
+ u8 i;
+ for (i = 0; i < size; i++)
+ {
+ if (*mem1 == *mem2)
+ {
+ equal_bytes++;
+ }
+ mem1++, mem2++;
+ }
+
+ if (equal_bytes != size)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 14;
+}
+
+static void atk2E_setbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem = BSScriptRead8(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk2F_addbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem += BSScriptRead8(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk30_subbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem -= BSScriptRead8(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk31_copyarray(void)
+{
+ u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ s32 size = BSScriptRead8(gBattlescriptCurrInstr + 9);
+
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ mem1[i] = mem2[i];
+ }
+
+ gBattlescriptCurrInstr += 10;
+}
+
+static void atk32_copyarray_withindex(void)
+{
+ u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ u8* index = BS2ScriptReadPtr(gBattlescriptCurrInstr + 9);
+ s32 size = BSScriptRead8(gBattlescriptCurrInstr + 13);
+
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ mem1[i] = mem2[i + *index];
+ }
+
+ gBattlescriptCurrInstr += 14;
+}
+
+static void atk33_orbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem |= BSScriptRead8(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk34_orhalfword(void)
+{
+ u16* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5);
+
+ *mem |= val;
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk35_orword(void)
+{
+ u32* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5);
+
+ *mem |= val;
+ gBattlescriptCurrInstr += 9;
+}
+
+static void atk36_bicbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem &= ~(BSScriptRead8(gBattlescriptCurrInstr + 5));
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk37_bichalfword(void)
+{
+ u16* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5);
+
+ *mem &= ~val;
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk38_bicword(void)
+{
+ u32* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5);
+
+ *mem &= ~val;
+ gBattlescriptCurrInstr += 9;
+}
+
+static void atk39_pause(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 1);
+ if (++gPauseCounterBattle >= value)
+ {
+ gPauseCounterBattle = 0;
+ gBattlescriptCurrInstr += 3;
+ }
+ }
+}
+
+static void atk3A_waitstate(void)
+{
+ if (gBattleExecBuffer == 0)
+ gBattlescriptCurrInstr++;
+}
+
+static void atk3B_healthbar_update(void)
+{
+ if (!BSScriptRead8(gBattlescriptCurrInstr + 1))
+ gActiveBank = gBankTarget;
+ else
+ gActiveBank = gBankAttacker;
+
+ EmitHealthBarUpdate(0, gBattleMoveDamage);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk3C_return(void)
+{
+ b_movescr_stack_pop_cursor();
+}
+
+static void atk3D_end(void)
+{
+ gBattleMoveFlags = 0;
+ gActiveBank = 0;
+ gFightStateTracker = 0xB;
+}
+
+static void atk3E_end2(void)
+{
+ //not much difference between this and 3D. It's more apparent in Emerald
+ gActiveBank = 0;
+ gFightStateTracker = 0xB;
+}
+
+static void atk3F_end3(void) //pops the main function stack
+{
+ b_movescr_stack_pop_cursor();
+ if (B_FUNCTION_STACK->size)
+ B_FUNCTION_STACK->size--;
+ gBattleMainFunc = B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size];
+}
+
+static void atk41_call(void)
+{
+ b_movescr_stack_push(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atk42_jumpiftype2(void) //u8 bank, u8 type, *ptr
+{
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type1 || BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type2)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 3);
+ else
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk43_jumpifabilitypresent(void)
+{
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, BSScriptRead8(gBattlescriptCurrInstr + 1), 0, 0))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk44(void)
+{
+ unk_2000000[gBankAttacker + 0x16060] = 1;
+}
+
+#ifdef NONMATCHING
+
+static void atk45_playanimation(void)
+{
+ #define ANIMATION_ID BSScriptRead8(gBattlescriptCurrInstr + 2)
+ #define ARGUMENT (u16*) BS2ScriptReadPtr(gBattlescriptCurrInstr + 3)
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+
+ if ( ANIMATION_ID == 1 || ANIMATION_ID == 0x11 || ANIMATION_ID == 2) {
+ EmitBattleAnimation(0, ANIMATION_ID, *argument);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 7;
+ } else if (gHitMarker & HITMARKER_NO_ANIMATIONS) {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 7);
+ gBattlescriptCurrInstr = BattleScript_Pausex20;
+ } else {
+ if (((ANIMATION_ID - 10) > 3 && gStatuses3[gActiveBank] & (STATUS3_SEMI_INVULNERABLE))) {
+ gBattlescriptCurrInstr += 7;
+ } else {
+ EmitBattleAnimation(0, ANIMATION_ID, *argument);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 7;
+ }
+ }
+}
+
+#else
+__attribute__((naked))
+static void atk45_playanimation(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ ldr r5, _08021444 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r5]\n\
+ ldrb r0, [r0, 0x1]\n\
+ bl GetBattleBank\n\
+ ldr r6, _08021448 @ =gActiveBank\n\
+ strb r0, [r6]\n\
+ ldr r2, [r5]\n\
+ ldrb r1, [r2, 0x3]\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x5]\n\
+ lsls r0, 16\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x6]\n\
+ lsls r0, 24\n\
+ adds r3, r1, r0\n\
+ ldrb r4, [r2, 0x2]\n\
+ adds r0, r4, 0\n\
+ cmp r0, 0x1\n\
+ beq _08021426\n\
+ cmp r0, 0x11\n\
+ beq _08021426\n\
+ cmp r0, 0x2\n\
+ bne _0802144C\n\
+_08021426:\n\
+ ldr r4, _08021444 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ ldrb r1, [r0, 0x2]\n\
+ ldrh r2, [r3]\n\
+ movs r0, 0\n\
+ bl EmitBattleAnimation\n\
+ ldr r0, _08021448 @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x7\n\
+ str r0, [r4]\n\
+ b _080214AE\n\
+ .align 2, 0\n\
+_08021444: .4byte gBattlescriptCurrInstr\n\
+_08021448: .4byte gActiveBank\n\
+_0802144C:\n\
+ ldr r0, _08021464 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802146C\n\
+ adds r0, r2, 0x7\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08021468 @ =BattleScript_Pausex20\n\
+ b _080214AC\n\
+ .align 2, 0\n\
+_08021464: .4byte gHitMarker\n\
+_08021468: .4byte BattleScript_Pausex20\n\
+_0802146C:\n\
+ adds r0, r4, 0\n\
+ subs r0, 0xA\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x3\n\
+ bls _08021498\n\
+ ldr r1, _08021490 @ =gStatuses3\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021494 @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021498\n\
+ adds r0, r2, 0x7\n\
+ b _080214AC\n\
+ .align 2, 0\n\
+_08021490: .4byte gStatuses3\n\
+_08021494: .4byte 0x000400c0\n\
+_08021498:\n\
+ ldrb r1, [r2, 0x2]\n\
+ ldrh r2, [r3]\n\
+ movs r0, 0\n\
+ bl EmitBattleAnimation\n\
+ ldrb r0, [r6]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, [r5]\n\
+ adds r0, 0x7\n\
+_080214AC:\n\
+ str r0, [r5]\n\
+_080214AE:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+#ifdef NONMATCHING
+static void atk46_playanimation2(void)
+{
+
+}
+
+#else
+__attribute__((naked))
+static void atk46_playanimation2(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ ldr r6, _0802151C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r6]\n\
+ ldrb r0, [r0, 0x1]\n\
+ bl GetBattleBank\n\
+ ldr r7, _08021520 @ =gActiveBank\n\
+ strb r0, [r7]\n\
+ ldr r2, [r6]\n\
+ ldrb r1, [r2, 0x2]\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 16\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x5]\n\
+ lsls r0, 24\n\
+ adds r3, r1, r0\n\
+ ldrb r1, [r2, 0x6]\n\
+ ldrb r0, [r2, 0x7]\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x8]\n\
+ lsls r0, 16\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x9]\n\
+ lsls r0, 24\n\
+ adds r4, r1, r0\n\
+ ldrb r5, [r3]\n\
+ adds r0, r5, 0\n\
+ cmp r0, 0x1\n\
+ beq _080214FE\n\
+ cmp r0, 0x11\n\
+ beq _080214FE\n\
+ cmp r0, 0x2\n\
+ bne _08021524\n\
+_080214FE:\n\
+ ldrb r1, [r3]\n\
+ ldrh r2, [r4]\n\
+ movs r0, 0\n\
+ bl EmitBattleAnimation\n\
+ ldr r0, _08021520 @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r1, _0802151C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0xA\n\
+ str r0, [r1]\n\
+ b _0802157A\n\
+ .align 2, 0\n\
+_0802151C: .4byte gBattlescriptCurrInstr\n\
+_08021520: .4byte gActiveBank\n\
+_08021524:\n\
+ ldr r0, _08021534 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021538\n\
+ adds r0, r2, 0\n\
+ b _08021576\n\
+ .align 2, 0\n\
+_08021534: .4byte gHitMarker\n\
+_08021538:\n\
+ adds r0, r5, 0\n\
+ subs r0, 0xA\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x3\n\
+ bls _08021564\n\
+ ldr r1, _0802155C @ =gStatuses3\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021560 @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021564\n\
+ adds r0, r2, 0\n\
+ b _08021576\n\
+ .align 2, 0\n\
+_0802155C: .4byte gStatuses3\n\
+_08021560: .4byte 0x000400c0\n\
+_08021564:\n\
+ ldrb r1, [r3]\n\
+ ldrh r2, [r4]\n\
+ movs r0, 0\n\
+ bl EmitBattleAnimation\n\
+ ldrb r0, [r7]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, [r6]\n\
+_08021576:\n\
+ adds r0, 0xA\n\
+ str r0, [r6]\n\
+_0802157A:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided ");
+}
+#endif // NONMATCHING
+
+static void atk47_setgraphicalstatchangevalues(void)
+{
+ u8 to_add = 0;
+ switch (BATTLE_STRUCT->statChanger & 0xF0)
+ {
+ case 0x10: //+1
+ to_add = 0xF;
+ break;
+ case 0x20: //+2
+ to_add = 0x27;
+ break;
+ case 0x90: //-1
+ to_add = 0x16;
+ break;
+ case 0xA0: //-2
+ to_add = 0x2E;
+ break;
+ }
+ BATTLE_STRUCT->animArg1 = (BATTLE_STRUCT->statChanger & 0xF) + to_add - 1;
+ BATTLE_STRUCT->animArg2 = 0;
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NONMATCHING
+static void atk48_playstatchangeanimation(void)
+{
+ int curr_stat = 0;
+ u16 stat_animID = 0;
+ int changeable_stats = 0;
+ u32 stats_to_check;
+ u8 arg3;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ stats_to_check = BSScriptRead8(gBattlescriptCurrInstr + 2);
+ arg3 = BSScriptRead8(gBattlescriptCurrInstr + 3);
+ if (arg3 & 1)
+ {
+ u16 r1 = 0x15;
+ if (arg3 & 0x2)
+ r1 = 0x2D;
+ while (stats_to_check != 0)
+ {
+ if (!(stats_to_check & 1))
+ continue;
+ if (!(BSScriptRead8(gBattlescriptCurrInstr + 3)))
+ {
+ u8 ability;
+ if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer)
+ continue;
+ ability = gBattleMons[gActiveBank].ability;
+ if (ability == ABILITY_CLEAR_BODY || ability == ABILITY_WHITE_SMOKE || (ability == ABILITY_KEEN_EYE && curr_stat == 6) || (ability == ABILITY_HYPER_CUTTER && curr_stat == 1))
+ continue;
+ }
+ if (gBattleMons[gActiveBank].statStages[curr_stat] > 0)
+ {
+ stat_animID = r1;
+ changeable_stats++;
+ }
+
+ stats_to_check >>= 1;
+ r1 += 1;
+ curr_stat++;
+ }
+ if (changeable_stats > 1 && BSScriptRead8(gBattlescriptCurrInstr + 3) & 2)
+ stat_animID = 0x39;
+ else
+ stat_animID = 0x3A;
+ }
+ else
+ {
+ u16 r1 = 0x15;
+ if (arg3 & 0x2)
+ r1 = 0x2D;
+ while (stats_to_check != 0)
+ {
+ if (!(stats_to_check & 1))
+ continue;
+ if (gBattleMons[gActiveBank].statStages[curr_stat] < 0xB)
+ {
+ stat_animID = r1;
+ changeable_stats++;
+ }
+
+ stats_to_check >>= 1;
+ r1 += 1;
+ curr_stat++;
+ }
+ if (changeable_stats > 1 && BSScriptRead8(gBattlescriptCurrInstr + 3) & 2)
+ stat_animID = 0x37;
+ else
+ stat_animID = 0x38;
+ }
+ if ((BSScriptRead8(gBattlescriptCurrInstr + 3) & 2 && changeable_stats <= 1)
+ || changeable_stats == 0 || BATTLE_STRUCT->filler2[0] != 0)
+ gBattlescriptCurrInstr += 4;
+ else
+ {
+ EmitBattleAnimation(0, 1, stat_animID);
+ MarkBufferBankForExecution(gActiveBank);
+ if ((BSScriptRead8(gBattlescriptCurrInstr + 3) & 4) && changeable_stats > 1)
+ BATTLE_STRUCT->filler2[0] = 1;
+ gBattlescriptCurrInstr += 4;
+ }
+}
+
+#else
+__attribute__((naked))
+static void atk48_playstatchangeanimation(void)
+{
+ asm(".syntax unified\n\
+push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ movs r7, 0\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ movs r3, 0\n\
+ ldr r5, _08021670 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r5]\n\
+ ldrb r0, [r0, 0x1]\n\
+ str r3, [sp]\n\
+ bl GetBattleBank\n\
+ ldr r2, _08021674 @ =gActiveBank\n\
+ strb r0, [r2]\n\
+ ldr r0, [r5]\n\
+ ldrb r4, [r0, 0x2]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ ldr r3, [sp]\n\
+ cmp r0, 0\n\
+ beq _08021710\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0x15\n\
+ cmp r0, 0\n\
+ beq _0802163C\n\
+ movs r1, 0x2D\n\
+_0802163C:\n\
+ cmp r4, 0\n\
+ beq _080216E4\n\
+ movs r0, 0x1\n\
+ mov r10, r0\n\
+ ldr r0, _08021678 @ =gUnknown_02024A98\n\
+ mov r9, r0\n\
+ lsls r5, r1, 16\n\
+_0802164A:\n\
+ adds r0, r4, 0\n\
+ mov r1, r10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080216D6\n\
+ ldr r0, _08021670 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802167C\n\
+ ldr r0, _08021674 @ =gActiveBank\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r7, r0\n\
+ b _080216C4\n\
+ .align 2, 0\n\
+_08021670: .4byte gBattlescriptCurrInstr\n\
+_08021674: .4byte gActiveBank\n\
+_08021678: .4byte gUnknown_02024A98\n\
+_0802167C:\n\
+ ldr r6, _08021700 @ =gActiveBank\n\
+ ldrb r0, [r6]\n\
+ str r3, [sp]\n\
+ bl GetBankIdentity\n\
+ mov r1, r10\n\
+ ands r1, r0\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldr r1, _08021704 @ =gSideTimer\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ ldr r3, [sp]\n\
+ cmp r0, 0\n\
+ bne _080216D6\n\
+ ldr r0, _08021708 @ =gBattleMons\n\
+ ldrb r2, [r6]\n\
+ movs r1, 0x58\n\
+ muls r2, r1\n\
+ adds r0, r2, r0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1D\n\
+ beq _080216D6\n\
+ cmp r0, 0x49\n\
+ beq _080216D6\n\
+ cmp r0, 0x33\n\
+ bne _080216BA\n\
+ cmp r7, 0x6\n\
+ beq _080216D6\n\
+_080216BA:\n\
+ cmp r0, 0x34\n\
+ bne _080216C2\n\
+ cmp r7, 0x1\n\
+ beq _080216D6\n\
+_080216C2:\n\
+ adds r0, r7, r2\n\
+_080216C4:\n\
+ add r0, r9\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0\n\
+ ble _080216D6\n\
+ lsrs r0, r5, 16\n\
+ mov r8, r0\n\
+ adds r3, 0x1\n\
+_080216D6:\n\
+ lsrs r4, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r5, r1\n\
+ adds r7, 0x1\n\
+ cmp r4, 0\n\
+ bne _0802164A\n\
+_080216E4:\n\
+ ldr r0, _0802170C @ =gBattlescriptCurrInstr\n\
+ mov r9, r0\n\
+ cmp r3, 0x1\n\
+ ble _08021772\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0x39\n\
+ mov r8, r1\n\
+ cmp r0, 0\n\
+ beq _08021772\n\
+ movs r0, 0x3A\n\
+ b _08021770\n\
+ .align 2, 0\n\
+_08021700: .4byte gActiveBank\n\
+_08021704: .4byte gSideTimer\n\
+_08021708: .4byte gBattleMons\n\
+_0802170C: .4byte gBattlescriptCurrInstr\n\
+_08021710:\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0xE\n\
+ cmp r0, 0\n\
+ beq _0802171C\n\
+ movs r1, 0x26\n\
+_0802171C:\n\
+ mov r9, r5\n\
+ cmp r4, 0\n\
+ beq _08021758\n\
+ ldr r6, _0802178C @ =gUnknown_02024A98\n\
+ adds r5, r2, 0\n\
+ lsls r2, r1, 16\n\
+_08021728:\n\
+ movs r0, 0x1\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ beq _0802174A\n\
+ ldrb r1, [r5]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r7, r0\n\
+ adds r0, r6\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0xB\n\
+ bgt _0802174A\n\
+ lsrs r1, r2, 16\n\
+ mov r8, r1\n\
+ adds r3, 0x1\n\
+_0802174A:\n\
+ lsrs r4, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ adds r2, r0\n\
+ adds r7, 0x1\n\
+ cmp r4, 0\n\
+ bne _08021728\n\
+_08021758:\n\
+ cmp r3, 0x1\n\
+ ble _08021772\n\
+ mov r1, r9\n\
+ ldr r0, [r1]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0x37\n\
+ mov r8, r1\n\
+ cmp r0, 0\n\
+ beq _08021772\n\
+ movs r0, 0x38\n\
+_08021770:\n\
+ mov r8, r0\n\
+_08021772:\n\
+ mov r1, r9\n\
+ ldr r2, [r1]\n\
+ ldrb r1, [r2, 0x3]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021790\n\
+ cmp r3, 0x1\n\
+ bgt _08021790\n\
+ adds r0, r2, 0x4\n\
+ mov r1, r9\n\
+ b _080217E6\n\
+ .align 2, 0\n\
+_0802178C: .4byte gUnknown_02024A98\n\
+_08021790:\n\
+ cmp r3, 0\n\
+ beq _080217E0\n\
+ ldr r0, _080217D0 @ =0x02000000\n\
+ ldr r1, _080217D4 @ =0x000160dc\n\
+ adds r4, r0, r1\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080217E0\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ mov r2, r8\n\
+ str r3, [sp]\n\
+ bl EmitBattleAnimation\n\
+ ldr r0, _080217D8 @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, _080217DC @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ ldr r3, [sp]\n\
+ cmp r0, 0\n\
+ beq _080217CC\n\
+ cmp r3, 0x1\n\
+ ble _080217CC\n\
+ movs r0, 0x1\n\
+ strb r0, [r4]\n\
+_080217CC:\n\
+ ldr r1, _080217DC @ =gBattlescriptCurrInstr\n\
+ b _080217E2\n\
+ .align 2, 0\n\
+_080217D0: .4byte 0x02000000\n\
+_080217D4: .4byte 0x000160dc\n\
+_080217D8: .4byte gActiveBank\n\
+_080217DC: .4byte gBattlescriptCurrInstr\n\
+_080217E0:\n\
+ mov r1, r9\n\
+_080217E2:\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x4\n\
+_080217E6:\n\
+ str r0, [r1]\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+#ifdef NONMATCHING
+static void atk49_moveendturn(void)
+{
+ int i;
+ int effect = 0;
+ u16 last_move = 0, *choiced_move_atk;
+ int arg1, arg2, hold_effect_atk, move_type;
+ if (gLastUsedMove != 0xFFFF)
+ last_move = gLastUsedMove;
+
+ arg1 = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ arg2 = BSScriptRead8(gBattlescriptCurrInstr + 2);
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ hold_effect_atk = gEnigmaBerries[gBankAttacker].holdEffect;
+ else
+ hold_effect_atk = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+
+ choiced_move_atk = (u16*)(gBankAttacker * 0x020160e8);
+ if (BATTLE_STRUCT->dynamicMoveType)
+ move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F;
+ else
+ move_type = gBattleMoves[gCurrentMove].type;
+
+ do
+ {
+ switch (BATTLE_STRUCT->cmd49StateTracker)
+ {
+ case 0: //rage check
+ if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE
+ && gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget
+ && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)
+ && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && TARGET_TURN_DAMAGED
+ && gBattleMoves[gCurrentMove].power && gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] <= 0xB)
+ {
+ gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK]++;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = gUnknown_081D9132;
+ effect = 1;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 1: //defrosting check
+ if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE
+ && gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget
+ && gSpecialStatuses[gBankTarget].moveturnLostHP
+ && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && move_type == TYPE_FIRE)
+ {
+ gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE);
+ gActiveBank = gBankTarget;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = gUnknown_081D955D;
+ effect = 1;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 2: //target synchronize
+ if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBankTarget, 0, 0, 0))
+ effect = 1;
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 3: //contact abilities
+ if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBankTarget, 0, 0, 0))
+ effect = 1;
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 4: //status immunities
+ if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0))
+ effect = 1; //it loops through 4 banks, so we increment after its done with all banks
+ else
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 5: //attacker synchronize
+ if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBankAttacker, 0, 0, 0))
+ effect = 1;
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 6: //update choice band move
+ if (gHitMarker & HITMARKER_OBEYS && hold_effect_atk == HOLD_EFFECT_CHOICE_BAND
+ && gLastUsedMove != MOVE_STRUGGLE && (*choiced_move_atk == 0 || *choiced_move_atk == 0xFFF)
+ && gLastUsedMove != MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ *choiced_move_atk = gLastUsedMove;
+ for (i = 0; i < 4 && gBattleMons[gBankAttacker].moves[i] != *choiced_move_atk; i++){}
+ if (i == 4)
+ *choiced_move_atk = 0;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 7: //changed held items
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ #define CHANGED_ITEM (((*u16)(0x020160f0)))
+ if (CHANGED_ITEM(i))
+ gBattleMons[i].item = CHANGED_ITEM(i);
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 8: //make sprite invisible
+ if (gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)
+ && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ gActiveBank = gBankAttacker;
+ EmitSpriteInvisibility(0, 1);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ //sub_8015660 CheckIfMoveFailed
+ case 9: //semi-invlurneable attacker make visible
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ || sub_8015660(gBankAttacker))
+ {
+ gActiveBank = gBankAttacker;
+ EmitSpriteInvisibility(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER);
+ gSpecialStatuses[gBankAttacker].restored_bank_sprite = 1;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 10: //semi-invlurneable target make visible
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ || sub_8015660(gBankTarget))
+ {
+ gActiveBank = gBankTarget;
+ EmitSpriteInvisibility(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER);
+ gSpecialStatuses[gBankTarget].restored_bank_sprite = 1;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 11: //
+ }
+
+ } while (effect == 0)
+}
+#else
+__attribute__((naked))
+static void atk49_moveendturn(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x18\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ ldr r0, _08021834 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x1]\n\
+ str r1, [sp, 0x10]\n\
+ ldrb r0, [r0, 0x2]\n\
+ str r0, [sp, 0x14]\n\
+ ldr r1, _08021838 @ =gBattleMons\n\
+ ldr r0, _0802183C @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r1, r0, r1\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _08021844\n\
+ ldr r1, _08021840 @ =gEnigmaBerries\n\
+ lsls r0, r2, 3\n\
+ subs r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x7]\n\
+ b _0802184E\n\
+ .align 2, 0\n\
+_08021834: .4byte gBattlescriptCurrInstr\n\
+_08021838: .4byte gBattleMons\n\
+_0802183C: .4byte gBankAttacker\n\
+_08021840: .4byte gEnigmaBerries\n\
+_08021844:\n\
+ ldrh r0, [r1, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+_0802184E:\n\
+ str r0, [sp, 0x8]\n\
+ ldr r0, _0802186C @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ lsls r1, 1\n\
+ ldr r0, _08021870 @ =0x020160e8\n\
+ adds r1, r0\n\
+ str r1, [sp, 0xC]\n\
+ subs r0, 0xCC\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080218C0\n\
+ movs r2, 0x3F\n\
+ ands r2, r0\n\
+ str r2, [sp, 0x4]\n\
+ b _080218D2\n\
+ .align 2, 0\n\
+_0802186C: .4byte gBankAttacker\n\
+_08021870: .4byte 0x020160e8\n\
+_08021874:\n\
+ strb r2, [r7]\n\
+ ldr r0, [r5]\n\
+ orrs r0, r6\n\
+ str r0, [r5]\n\
+ ldr r0, _080218AC @ =0x02000000\n\
+ ldr r3, _080218B0 @ =0x0001600c\n\
+ adds r0, r3\n\
+ strb r4, [r0]\n\
+ bl MoveValuesCleanUp\n\
+ ldr r2, _080218B4 @ =gBattleScriptsEffectsTable\n\
+ mov r4, r8\n\
+ ldrh r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ add r0, r9\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _080218B8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080218BC @ =gUnknown_081D9B2D\n\
+ bl _0802229C\n\
+ .align 2, 0\n\
+_080218AC: .4byte 0x02000000\n\
+_080218B0: .4byte 0x0001600c\n\
+_080218B4: .4byte gBattleScriptsEffectsTable\n\
+_080218B8: .4byte gBattlescriptCurrInstr\n\
+_080218BC: .4byte gUnknown_081D9B2D\n\
+_080218C0:\n\
+ ldr r2, _080218D8 @ =gBattleMoves\n\
+ ldr r0, _080218DC @ =gCurrentMove\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0, 0x2]\n\
+ str r0, [sp, 0x4]\n\
+_080218D2:\n\
+ ldr r5, _080218E0 @ =0x02000000\n\
+ mov r12, r5\n\
+ b _080218EE\n\
+ .align 2, 0\n\
+_080218D8: .4byte gBattleMoves\n\
+_080218DC: .4byte gCurrentMove\n\
+_080218E0: .4byte 0x02000000\n\
+_080218E4:\n\
+ mov r0, r10\n\
+ cmp r0, 0\n\
+ beq _080218EE\n\
+ bl _08022286\n\
+_080218EE:\n\
+ ldr r0, _08021908 @ =0x0001600c\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ bls _080218FC\n\
+ bl _0802224E\n\
+_080218FC:\n\
+ lsls r0, 2\n\
+ ldr r1, _0802190C @ =_08021910\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08021908: .4byte 0x0001600c\n\
+_0802190C: .4byte _08021910\n\
+ .align 2, 0\n\
+_08021910:\n\
+ .4byte _08021958\n\
+ .4byte _08021A34\n\
+ .4byte _08021AF0\n\
+ .4byte _08021B20\n\
+ .4byte _08021B44\n\
+ .4byte _08021B78\n\
+ .4byte _08021B9C\n\
+ .4byte _08021C40\n\
+ .4byte _08021C78\n\
+ .4byte _08021CA8\n\
+ .4byte _08021CCC\n\
+ .4byte _08021D18\n\
+ .4byte _08021DAC\n\
+ .4byte _08021E30\n\
+ .4byte _08021E70\n\
+ .4byte _08022068\n\
+ .4byte _080221C0\n\
+ .4byte _0802224E\n\
+_08021958:\n\
+ ldr r5, _08021A08 @ =gBattleMons\n\
+ ldr r2, _08021A0C @ =gBankTarget\n\
+ ldrb r4, [r2]\n\
+ movs r6, 0x58\n\
+ adds r3, r4, 0\n\
+ muls r3, r6\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x50\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 16\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _080219FE\n\
+ adds r0, r3, r5\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _080219FE\n\
+ ldr r0, _08021A10 @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ cmp r1, r4\n\
+ beq _080219FE\n\
+ adds r0, r1, 0\n\
+ bl GetBankSide\n\
+ adds r4, r0, 0\n\
+ ldr r1, _08021A0C @ =gBankTarget\n\
+ ldrb r0, [r1]\n\
+ bl GetBankSide\n\
+ lsls r4, 24\n\
+ lsls r0, 24\n\
+ cmp r4, r0\n\
+ beq _080219FE\n\
+ ldr r0, _08021A14 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080219FE\n\
+ ldr r2, _08021A18 @ =gProtectStructs\n\
+ ldr r4, _08021A0C @ =gBankTarget\n\
+ ldrb r3, [r4]\n\
+ lsls r1, r3, 4\n\
+ adds r0, r2, 0x4\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080219C8\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080219FE\n\
+_080219C8:\n\
+ ldr r2, _08021A1C @ =gBattleMoves\n\
+ ldr r0, _08021A20 @ =gCurrentMove\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0, 0x1]\n\
+ cmp r0, 0\n\
+ beq _080219FE\n\
+ adds r0, r3, 0\n\
+ muls r0, r6\n\
+ adds r1, r0, r5\n\
+ ldrb r2, [r1, 0x19]\n\
+ movs r0, 0x19\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0xB\n\
+ bgt _080219FE\n\
+ adds r0, r2, 0x1\n\
+ strb r0, [r1, 0x19]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08021A24 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08021A28 @ =gUnknown_081D9132\n\
+ str r0, [r1]\n\
+ movs r5, 0x1\n\
+ mov r10, r5\n\
+_080219FE:\n\
+ ldr r2, _08021A2C @ =0x02000000\n\
+ ldr r0, _08021A30 @ =0x0001600c\n\
+ adds r1, r2, r0\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021A08: .4byte gBattleMons\n\
+_08021A0C: .4byte gBankTarget\n\
+_08021A10: .4byte gBankAttacker\n\
+_08021A14: .4byte gBattleMoveFlags\n\
+_08021A18: .4byte gProtectStructs\n\
+_08021A1C: .4byte gBattleMoves\n\
+_08021A20: .4byte gCurrentMove\n\
+_08021A24: .4byte gBattlescriptCurrInstr\n\
+_08021A28: .4byte gUnknown_081D9132\n\
+_08021A2C: .4byte 0x02000000\n\
+_08021A30: .4byte 0x0001600c\n\
+_08021A34:\n\
+ ldr r2, _08021AD0 @ =gBattleMons\n\
+ ldr r1, _08021AD4 @ =gBankTarget\n\
+ ldrb r4, [r1]\n\
+ movs r3, 0x58\n\
+ mov r12, r3\n\
+ mov r3, r12\n\
+ muls r3, r4\n\
+ adds r7, r2, 0\n\
+ adds r7, 0x4C\n\
+ adds r6, r3, r7\n\
+ ldr r5, [r6]\n\
+ movs r0, 0x20\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ bne _08021A54\n\
+ b _08021DFA\n\
+_08021A54:\n\
+ adds r0, r3, r2\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08021A5E\n\
+ b _08021DFA\n\
+_08021A5E:\n\
+ ldr r0, _08021AD8 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r4\n\
+ bne _08021A68\n\
+ b _08021DFA\n\
+_08021A68:\n\
+ ldr r0, _08021ADC @ =gSpecialStatuses\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 2\n\
+ adds r0, 0xC\n\
+ adds r1, r0\n\
+ ldr r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _08021A7C\n\
+ b _08021DFA\n\
+_08021A7C:\n\
+ ldr r0, _08021AE0 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021A8A\n\
+ b _08021DFA\n\
+_08021A8A:\n\
+ ldr r4, [sp, 0x4]\n\
+ cmp r4, 0xA\n\
+ beq _08021A92\n\
+ b _08021DFA\n\
+_08021A92:\n\
+ movs r0, 0x21\n\
+ negs r0, r0\n\
+ ands r5, r0\n\
+ str r5, [r6]\n\
+ ldr r4, _08021AE4 @ =gActiveBank\n\
+ ldr r5, _08021AD4 @ =gBankTarget\n\
+ ldrb r0, [r5]\n\
+ strb r0, [r4]\n\
+ ldrb r0, [r5]\n\
+ mov r1, r12\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, r7\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08021AE8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08021AEC @ =gUnknown_081D955D\n\
+ str r0, [r1]\n\
+ movs r2, 0x1\n\
+ mov r10, r2\n\
+ b _08021DFA\n\
+ .align 2, 0\n\
+_08021AD0: .4byte gBattleMons\n\
+_08021AD4: .4byte gBankTarget\n\
+_08021AD8: .4byte gBankAttacker\n\
+_08021ADC: .4byte gSpecialStatuses\n\
+_08021AE0: .4byte gBattleMoveFlags\n\
+_08021AE4: .4byte gActiveBank\n\
+_08021AE8: .4byte gBattlescriptCurrInstr\n\
+_08021AEC: .4byte gUnknown_081D955D\n\
+_08021AF0:\n\
+ ldr r0, _08021B14 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x7\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021B0C\n\
+ movs r4, 0x1\n\
+ mov r10, r4\n\
+_08021B0C:\n\
+ ldr r2, _08021B18 @ =0x02000000\n\
+ ldr r5, _08021B1C @ =0x0001600c\n\
+ adds r1, r2, r5\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021B14: .4byte gBankTarget\n\
+_08021B18: .4byte 0x02000000\n\
+_08021B1C: .4byte 0x0001600c\n\
+_08021B20:\n\
+ ldr r0, _08021B40 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x4\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08021B3A\n\
+ b _08021DFA\n\
+_08021B3A:\n\
+ movs r0, 0x1\n\
+ mov r10, r0\n\
+ b _08021DFA\n\
+ .align 2, 0\n\
+_08021B40: .4byte gBankTarget\n\
+_08021B44:\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x5\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021B68\n\
+ movs r4, 0x1\n\
+ mov r10, r4\n\
+ ldr r5, _08021B64 @ =0x02000000\n\
+ mov r12, r5\n\
+ b _0802224E\n\
+ .align 2, 0\n\
+_08021B64: .4byte 0x02000000\n\
+_08021B68:\n\
+ ldr r2, _08021B70 @ =0x02000000\n\
+ ldr r0, _08021B74 @ =0x0001600c\n\
+ adds r1, r2, r0\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021B70: .4byte 0x02000000\n\
+_08021B74: .4byte 0x0001600c\n\
+_08021B78:\n\
+ ldr r0, _08021B98 @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x8\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08021B92\n\
+ b _08021DFA\n\
+_08021B92:\n\
+ movs r1, 0x1\n\
+ mov r10, r1\n\
+ b _08021DFA\n\
+ .align 2, 0\n\
+_08021B98: .4byte gBankAttacker\n\
+_08021B9C:\n\
+ ldr r0, _08021C28 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021BE0\n\
+ ldr r4, [sp, 0x8]\n\
+ cmp r4, 0x1D\n\
+ bne _08021BE0\n\
+ ldr r0, _08021C2C @ =gUnknown_02024BE8\n\
+ ldrh r2, [r0]\n\
+ adds r7, r0, 0\n\
+ cmp r2, 0xA5\n\
+ beq _08021BE0\n\
+ ldr r5, [sp, 0xC]\n\
+ ldrh r1, [r5]\n\
+ cmp r1, 0\n\
+ beq _08021BC8\n\
+ ldr r0, _08021C30 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ bne _08021BE0\n\
+_08021BC8:\n\
+ cmp r2, 0xE2\n\
+ bne _08021BDA\n\
+ ldr r0, _08021C34 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021BDA\n\
+ b _08022244\n\
+_08021BDA:\n\
+ ldrh r0, [r7]\n\
+ ldr r1, [sp, 0xC]\n\
+ strh r0, [r1]\n\
+_08021BE0:\n\
+ movs r4, 0\n\
+ ldr r2, _08021C38 @ =gBattleMons\n\
+ ldr r3, _08021C3C @ =gBankAttacker\n\
+ ldrb r1, [r3]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r2, 0xC\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ ldr r5, [sp, 0xC]\n\
+ ldrh r1, [r5]\n\
+ mov r9, r3\n\
+ cmp r0, r1\n\
+ beq _08021C18\n\
+ mov r6, r9\n\
+ movs r3, 0x58\n\
+ adds r5, r1, 0\n\
+_08021C02:\n\
+ adds r4, 0x1\n\
+ cmp r4, 0x3\n\
+ bgt _08021C18\n\
+ lsls r0, r4, 1\n\
+ ldrb r1, [r6]\n\
+ muls r1, r3\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r5\n\
+ bne _08021C02\n\
+_08021C18:\n\
+ cmp r4, 0x4\n\
+ beq _08021C1E\n\
+ b _08022244\n\
+_08021C1E:\n\
+ movs r0, 0\n\
+ ldr r1, [sp, 0xC]\n\
+_08021C22:\n\
+ strh r0, [r1]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08021C28: .4byte gHitMarker\n\
+_08021C2C: .4byte gUnknown_02024BE8\n\
+_08021C30: .4byte 0x0000ffff\n\
+_08021C34: .4byte gBattleMoveFlags\n\
+_08021C38: .4byte gBattleMons\n\
+_08021C3C: .4byte gBankAttacker\n\
+_08021C40:\n\
+ movs r4, 0\n\
+ ldr r0, _08021C6C @ =gNoOfAllBanks\n\
+ ldrb r2, [r0]\n\
+ cmp r4, r2\n\
+ blt _08021C4C\n\
+ b _08022244\n\
+_08021C4C:\n\
+ movs r5, 0\n\
+ ldr r2, _08021C70 @ =0x020160f0\n\
+ ldr r3, _08021C74 @ =gBattleMons\n\
+_08021C52:\n\
+ ldrh r1, [r2]\n\
+ cmp r1, 0\n\
+ beq _08021C5C\n\
+ strh r1, [r3, 0x2E]\n\
+ strh r5, [r2]\n\
+_08021C5C:\n\
+ adds r2, 0x2\n\
+ adds r3, 0x58\n\
+ adds r4, 0x1\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ blt _08021C52\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08021C6C: .4byte gNoOfAllBanks\n\
+_08021C70: .4byte 0x020160f0\n\
+_08021C74: .4byte gBattleMons\n\
+_08021C78:\n\
+ movs r0, 0x3\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ bl ItemBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021C98\n\
+ movs r2, 0x1\n\
+ mov r10, r2\n\
+ ldr r3, _08021C94 @ =0x02000000\n\
+ mov r12, r3\n\
+ b _0802224E\n\
+ .align 2, 0\n\
+_08021C94: .4byte 0x02000000\n\
+_08021C98:\n\
+ ldr r2, _08021CA0 @ =0x02000000\n\
+ ldr r4, _08021CA4 @ =0x0001600c\n\
+ adds r1, r2, r4\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021CA0: .4byte 0x02000000\n\
+_08021CA4: .4byte 0x0001600c\n\
+_08021CA8:\n\
+ movs r0, 0x4\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ bl ItemBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021CBC\n\
+ movs r5, 0x1\n\
+ mov r10, r5\n\
+_08021CBC:\n\
+ ldr r2, _08021CC4 @ =0x02000000\n\
+ ldr r0, _08021CC8 @ =0x0001600c\n\
+ adds r1, r2, r0\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021CC4: .4byte 0x02000000\n\
+_08021CC8: .4byte 0x0001600c\n\
+_08021CCC:\n\
+ ldr r1, _08021D04 @ =gStatuses3\n\
+ ldr r0, _08021D08 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021D0C @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021CE2\n\
+ b _08021DFA\n\
+_08021CE2:\n\
+ ldr r0, _08021D10 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021CF0\n\
+ b _08021DFA\n\
+_08021CF0:\n\
+ ldr r4, _08021D14 @ =gActiveBank\n\
+ strb r2, [r4]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ bl EmitSpriteInvisibility\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08021DFA\n\
+ .align 2, 0\n\
+_08021D04: .4byte gStatuses3\n\
+_08021D08: .4byte gBankAttacker\n\
+_08021D0C: .4byte 0x000400c0\n\
+_08021D10: .4byte gHitMarker\n\
+_08021D14: .4byte gActiveBank\n\
+_08021D18:\n\
+ ldr r0, _08021D88 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021D44\n\
+ ldr r1, _08021D8C @ =gStatuses3\n\
+ ldr r0, _08021D90 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021D94 @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021D44\n\
+ adds r0, r2, 0\n\
+ bl sub_8015660\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021D7E\n\
+_08021D44:\n\
+ ldr r4, _08021D98 @ =gActiveBank\n\
+ ldr r5, _08021D90 @ =gBankAttacker\n\
+ ldrb r0, [r5]\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ bl EmitSpriteInvisibility\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, _08021D8C @ =gStatuses3\n\
+ ldrb r2, [r5]\n\
+ lsls r2, 2\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08021D9C @ =0xfffbff3f\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r2, _08021DA0 @ =gSpecialStatuses\n\
+ ldrb r1, [r5]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x4\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_08021D7E:\n\
+ ldr r2, _08021DA4 @ =0x02000000\n\
+ ldr r4, _08021DA8 @ =0x0001600c\n\
+ adds r1, r2, r4\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021D88: .4byte gBattleMoveFlags\n\
+_08021D8C: .4byte gStatuses3\n\
+_08021D90: .4byte gBankAttacker\n\
+_08021D94: .4byte 0x000400c0\n\
+_08021D98: .4byte gActiveBank\n\
+_08021D9C: .4byte 0xfffbff3f\n\
+_08021DA0: .4byte gSpecialStatuses\n\
+_08021DA4: .4byte 0x02000000\n\
+_08021DA8: .4byte 0x0001600c\n\
+_08021DAC:\n\
+ ldr r2, _08021E0C @ =gSpecialStatuses\n\
+ ldr r1, _08021E10 @ =gBankTarget\n\
+ ldrb r3, [r1]\n\
+ lsls r4, r3, 2\n\
+ adds r0, r4, r3\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 29\n\
+ cmp r0, 0\n\
+ blt _08021DFA\n\
+ ldr r0, _08021E14 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ bcs _08021DFA\n\
+ ldr r5, _08021E18 @ =gStatuses3\n\
+ adds r0, r4, r5\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021E1C @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021DFA\n\
+ ldr r4, _08021E20 @ =gActiveBank\n\
+ strb r3, [r4]\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ bl EmitSpriteInvisibility\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, _08021E10 @ =gBankTarget\n\
+ ldrb r2, [r0]\n\
+ lsls r2, 2\n\
+ adds r2, r5\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08021E24 @ =0xfffbff3f\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+_08021DFA:\n\
+ ldr r2, _08021E28 @ =0x02000000\n\
+ ldr r3, _08021E2C @ =0x0001600c\n\
+ adds r1, r2, r3\n\
+_08021E00:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ mov r12, r2\n\
+ b _0802224E\n\
+ .align 2, 0\n\
+_08021E0C: .4byte gSpecialStatuses\n\
+_08021E10: .4byte gBankTarget\n\
+_08021E14: .4byte gNoOfAllBanks\n\
+_08021E18: .4byte gStatuses3\n\
+_08021E1C: .4byte 0x000400c0\n\
+_08021E20: .4byte gActiveBank\n\
+_08021E24: .4byte 0xfffbff3f\n\
+_08021E28: .4byte 0x02000000\n\
+_08021E2C: .4byte 0x0001600c\n\
+_08021E30:\n\
+ movs r4, 0\n\
+ ldr r0, _08021E60 @ =gNoOfAllBanks\n\
+ ldrb r5, [r0]\n\
+ cmp r4, r5\n\
+ blt _08021E3C\n\
+ b _08022244\n\
+_08021E3C:\n\
+ ldr r2, _08021E64 @ =gDisableStructs\n\
+ ldr r5, _08021E68 @ =0xfeffffff\n\
+ adds r3, r0, 0\n\
+ ldr r1, _08021E6C @ =gUnknown_02024AD0\n\
+_08021E44:\n\
+ ldrb r0, [r2, 0xA]\n\
+ cmp r0, 0\n\
+ bne _08021E50\n\
+ ldr r0, [r1]\n\
+ ands r0, r5\n\
+ str r0, [r1]\n\
+_08021E50:\n\
+ adds r2, 0x1C\n\
+ adds r1, 0x58\n\
+ adds r4, 0x1\n\
+ ldrb r0, [r3]\n\
+ cmp r4, r0\n\
+ blt _08021E44\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08021E60: .4byte gNoOfAllBanks\n\
+_08021E64: .4byte gDisableStructs\n\
+_08021E68: .4byte 0xfeffffff\n\
+_08021E6C: .4byte gUnknown_02024AD0\n\
+_08021E70:\n\
+ ldr r1, _08021F2C @ =gHitMarker\n\
+ ldr r3, [r1]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ ands r0, r3\n\
+ ldr r2, _08021F30 @ =gBankAttacker\n\
+ mov r9, r2\n\
+ adds r5, r1, 0\n\
+ cmp r0, 0\n\
+ beq _08021E9A\n\
+ ldr r0, _08021F34 @ =gActiveBank\n\
+ ldrb r2, [r2]\n\
+ strb r2, [r0]\n\
+ ldr r1, _08021F38 @ =gBankTarget\n\
+ ldrb r0, [r1]\n\
+ mov r4, r9\n\
+ strb r0, [r4]\n\
+ strb r2, [r1]\n\
+ ldr r0, _08021F3C @ =0xffffefff\n\
+ ands r3, r0\n\
+ str r3, [r5]\n\
+_08021E9A:\n\
+ ldr r1, _08021F40 @ =gBattleMoves\n\
+ ldr r2, _08021F44 @ =gUnknown_02024BE8\n\
+ ldrh r3, [r2]\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r8, r1\n\
+ adds r7, r2, 0\n\
+ cmp r0, 0x7F\n\
+ bne _08021EBE\n\
+ ldr r0, _08021F48 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021ECA\n\
+_08021EBE:\n\
+ ldr r1, _08021F4C @ =gUnknown_02024C2C\n\
+ mov r2, r9\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ strh r3, [r0]\n\
+_08021ECA:\n\
+ ldr r0, _08021F50 @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r2, _08021F54 @ =gBitTable\n\
+ mov r3, r9\n\
+ ldrb r4, [r3]\n\
+ lsls r0, r4, 2\n\
+ adds r0, r2\n\
+ ldr r3, [r0]\n\
+ ands r1, r3\n\
+ adds r6, r2, 0\n\
+ cmp r1, 0\n\
+ beq _08021EE4\n\
+ b _08022244\n\
+_08021EE4:\n\
+ ldr r0, _08021F58 @ =0x000160a6\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08021EF2\n\
+ b _08022244\n\
+_08021EF2:\n\
+ ldrh r2, [r7]\n\
+ lsls r0, r2, 1\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x7F\n\
+ bne _08021F04\n\
+ b _08022244\n\
+_08021F04:\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x80\n\
+ lsls r1, 18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021F68\n\
+ ldr r1, _08021F5C @ =gLastUsedMove\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1\n\
+ strh r2, [r0]\n\
+ ldr r0, _08021F60 @ =gUnknown_02024C4C\n\
+ mov r4, r9\n\
+ ldrb r1, [r4]\n\
+ lsls r1, 1\n\
+ adds r1, r0\n\
+ ldr r0, _08021F64 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+ b _08021F82\n\
+ .align 2, 0\n\
+_08021F2C: .4byte gHitMarker\n\
+_08021F30: .4byte gBankAttacker\n\
+_08021F34: .4byte gActiveBank\n\
+_08021F38: .4byte gBankTarget\n\
+_08021F3C: .4byte 0xffffefff\n\
+_08021F40: .4byte gBattleMoves\n\
+_08021F44: .4byte gUnknown_02024BE8\n\
+_08021F48: .4byte gBattleMoveFlags\n\
+_08021F4C: .4byte gUnknown_02024C2C\n\
+_08021F50: .4byte gAbsentBankFlags\n\
+_08021F54: .4byte gBitTable\n\
+_08021F58: .4byte 0x000160a6\n\
+_08021F5C: .4byte gLastUsedMove\n\
+_08021F60: .4byte gUnknown_02024C4C\n\
+_08021F64: .4byte gCurrentMove\n\
+_08021F68:\n\
+ ldr r1, _08021FD0 @ =gLastUsedMove\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1\n\
+ ldr r1, _08021FD4 @ =0x0000ffff\n\
+ strh r1, [r0]\n\
+ ldr r1, _08021FD8 @ =gUnknown_02024C4C\n\
+ mov r2, r9\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ strh r1, [r0]\n\
+_08021F82:\n\
+ ldr r2, _08021FDC @ =gBankTarget\n\
+ ldrb r3, [r2]\n\
+ lsls r0, r3, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ lsls r0, 28\n\
+ ldr r1, [r5]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08021FA0\n\
+ ldr r0, _08021FE0 @ =gUnknown_02024C5C\n\
+ adds r0, r3, r0\n\
+ mov r3, r9\n\
+ ldrb r1, [r3]\n\
+ strb r1, [r0]\n\
+_08021FA0:\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x80\n\
+ lsls r1, 18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802204C\n\
+ ldr r0, _08021FE4 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0802204C\n\
+ ldrh r2, [r7]\n\
+ ldr r0, _08021FD4 @ =0x0000ffff\n\
+ cmp r2, r0\n\
+ bne _08021FEC\n\
+ ldr r1, _08021FE8 @ =gMoveHitWith\n\
+ ldr r4, _08021FDC @ =gBankTarget\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ strh r2, [r0]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08021FD0: .4byte gLastUsedMove\n\
+_08021FD4: .4byte 0x0000ffff\n\
+_08021FD8: .4byte gUnknown_02024C4C\n\
+_08021FDC: .4byte gBankTarget\n\
+_08021FE0: .4byte gUnknown_02024C5C\n\
+_08021FE4: .4byte gBattleMoveFlags\n\
+_08021FE8: .4byte gMoveHitWith\n\
+_08021FEC:\n\
+ ldr r0, _08022014 @ =gMoveHitWith\n\
+ ldr r5, _08022018 @ =gBankTarget\n\
+ ldrb r1, [r5]\n\
+ lsls r1, 1\n\
+ adds r1, r0\n\
+ ldr r4, _0802201C @ =gCurrentMove\n\
+ ldrh r0, [r4]\n\
+ strh r0, [r1]\n\
+ ldr r0, _08022020 @ =0x0001601c\n\
+ add r0, r12\n\
+ ldrb r3, [r0]\n\
+ cmp r3, 0\n\
+ beq _08022028\n\
+ ldr r0, _08022024 @ =gUnknown_02024C44\n\
+ ldrb r1, [r5]\n\
+ lsls r1, 1\n\
+ adds r1, r0\n\
+ movs r0, 0x3F\n\
+ ands r0, r3\n\
+ b _08021C22\n\
+ .align 2, 0\n\
+_08022014: .4byte gMoveHitWith\n\
+_08022018: .4byte gBankTarget\n\
+_0802201C: .4byte gCurrentMove\n\
+_08022020: .4byte 0x0001601c\n\
+_08022024: .4byte gUnknown_02024C44\n\
+_08022028:\n\
+ ldr r0, _08022044 @ =gUnknown_02024C44\n\
+ ldr r1, _08022048 @ =gBankTarget\n\
+ ldrb r2, [r1]\n\
+ lsls r2, 1\n\
+ adds r2, r0\n\
+ ldrh r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ ldrb r0, [r0, 0x2]\n\
+ strh r0, [r2]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08022044: .4byte gUnknown_02024C44\n\
+_08022048: .4byte gBankTarget\n\
+_0802204C:\n\
+ ldr r0, _0802205C @ =gMoveHitWith\n\
+ ldr r2, _08022060 @ =gBankTarget\n\
+ ldrb r1, [r2]\n\
+ lsls r1, 1\n\
+ adds r1, r0\n\
+ ldr r0, _08022064 @ =0x0000ffff\n\
+ b _08021C22\n\
+ .align 2, 0\n\
+_0802205C: .4byte gMoveHitWith\n\
+_08022060: .4byte gBankTarget\n\
+_08022064: .4byte 0x0000ffff\n\
+_08022068:\n\
+ ldr r0, _0802212C @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r6, _08022130 @ =gBitTable\n\
+ ldr r2, _08022134 @ =gBankAttacker\n\
+ ldrb r5, [r2]\n\
+ lsls r0, r5, 2\n\
+ adds r0, r6\n\
+ ldr r4, [r0]\n\
+ ands r1, r4\n\
+ mov r9, r2\n\
+ cmp r1, 0\n\
+ beq _08022082\n\
+ b _08022244\n\
+_08022082:\n\
+ ldr r0, _08022138 @ =0x000160a6\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ beq _08022090\n\
+ b _08022244\n\
+_08022090:\n\
+ ldr r1, _0802213C @ =gBattleMoves\n\
+ ldr r4, _08022140 @ =gUnknown_02024BE8\n\
+ ldrh r3, [r4]\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802215C\n\
+ ldr r0, _08022144 @ =gHitMarker\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802215C\n\
+ ldr r2, _08022148 @ =gBankTarget\n\
+ ldrb r0, [r2]\n\
+ cmp r5, r0\n\
+ bne _080220C0\n\
+ b _08022244\n\
+_080220C0:\n\
+ adds r2, r0, 0\n\
+ lsls r0, r2, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ lsls r0, 28\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0802215C\n\
+ ldr r0, _0802214C @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0802215C\n\
+ lsls r0, r2, 1\n\
+ ldr r5, _08022150 @ =0x000160ac\n\
+ adds r0, r5\n\
+ add r0, r12\n\
+ strb r3, [r0]\n\
+ ldr r0, _08022148 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r1, 1\n\
+ ldr r2, _08022154 @ =0x000160ad\n\
+ adds r1, r2\n\
+ add r1, r12\n\
+ ldrh r0, [r4]\n\
+ lsrs r0, 8\n\
+ strb r0, [r1]\n\
+ ldr r3, _08022148 @ =gBankTarget\n\
+ ldrb r2, [r3]\n\
+ lsls r2, 2\n\
+ mov r5, r9\n\
+ ldrb r0, [r5]\n\
+ lsrs r0, 1\n\
+ lsls r0, 1\n\
+ ldr r1, _08022158 @ =0x00016100\n\
+ adds r0, r1\n\
+ adds r2, r0\n\
+ add r2, r12\n\
+ ldrh r0, [r4]\n\
+ strb r0, [r2]\n\
+ ldrb r2, [r3]\n\
+ lsls r2, 2\n\
+ ldrb r0, [r5]\n\
+ lsrs r0, 1\n\
+ lsls r0, 1\n\
+ adds r1, 0x1\n\
+ adds r0, r1\n\
+ adds r2, r0\n\
+ add r2, r12\n\
+ ldrh r0, [r4]\n\
+ lsrs r0, 8\n\
+ strb r0, [r2]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_0802212C: .4byte gAbsentBankFlags\n\
+_08022130: .4byte gBitTable\n\
+_08022134: .4byte gBankAttacker\n\
+_08022138: .4byte 0x000160a6\n\
+_0802213C: .4byte gBattleMoves\n\
+_08022140: .4byte gUnknown_02024BE8\n\
+_08022144: .4byte gHitMarker\n\
+_08022148: .4byte gBankTarget\n\
+_0802214C: .4byte gBattleMoveFlags\n\
+_08022150: .4byte 0x000160ac\n\
+_08022154: .4byte 0x000160ad\n\
+_08022158: .4byte 0x00016100\n\
+_0802215C:\n\
+ mov r1, r9\n\
+ ldrb r0, [r1]\n\
+ ldr r2, _080221B4 @ =gBankTarget\n\
+ ldrb r2, [r2]\n\
+ cmp r0, r2\n\
+ beq _08022244\n\
+ ldr r3, _080221B4 @ =gBankTarget\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ ldr r4, _080221B8 @ =0x000160ac\n\
+ adds r0, r4\n\
+ add r0, r12\n\
+ movs r3, 0\n\
+ strb r3, [r0]\n\
+ ldr r5, _080221B4 @ =gBankTarget\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ ldr r1, _080221BC @ =0x000160ad\n\
+ adds r0, r1\n\
+ add r0, r12\n\
+ strb r3, [r0]\n\
+ ldrb r2, [r5]\n\
+ lsls r2, 2\n\
+ mov r4, r9\n\
+ ldrb r0, [r4]\n\
+ lsrs r0, 1\n\
+ lsls r0, 1\n\
+ adds r1, 0x53\n\
+ adds r0, r1\n\
+ adds r2, r0\n\
+ add r2, r12\n\
+ strb r3, [r2]\n\
+ ldrb r2, [r5]\n\
+ lsls r2, 2\n\
+ ldrb r0, [r4]\n\
+ lsrs r0, 1\n\
+ lsls r0, 1\n\
+ adds r1, 0x1\n\
+ adds r0, r1\n\
+ adds r2, r0\n\
+ add r2, r12\n\
+ strb r3, [r2]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_080221B4: .4byte gBankTarget\n\
+_080221B8: .4byte 0x000160ac\n\
+_080221BC: .4byte 0x000160ad\n\
+_080221C0:\n\
+ ldr r5, _080222B0 @ =gHitMarker\n\
+ ldr r2, [r5]\n\
+ movs r0, 0x80\n\
+ lsls r0, 12\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _08022244\n\
+ ldr r0, _080222B4 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08022244\n\
+ ldr r1, _080222B8 @ =gProtectStructs\n\
+ ldr r0, _080222BC @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 29\n\
+ cmp r0, 0\n\
+ blt _08022244\n\
+ ldr r0, _080222C0 @ =gBattleMoves\n\
+ mov r9, r0\n\
+ ldr r1, _080222C4 @ =gCurrentMove\n\
+ mov r8, r1\n\
+ ldrh r0, [r1]\n\
+ lsls r1, r0, 1\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ add r1, r9\n\
+ ldrb r0, [r1, 0x6]\n\
+ cmp r0, 0x8\n\
+ bne _08022244\n\
+ movs r6, 0x80\n\
+ lsls r6, 2\n\
+ adds r4, r6, 0\n\
+ ands r4, r2\n\
+ cmp r4, 0\n\
+ bne _08022244\n\
+ ldr r7, _080222C8 @ =gBankTarget\n\
+ ldrb r0, [r7]\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x2\n\
+ eors r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankByPlayerAI\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r1, _080222CC @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _0802223A\n\
+ bl _08021874\n\
+_0802223A:\n\
+ ldr r0, [r5]\n\
+ orrs r0, r6\n\
+ str r0, [r5]\n\
+ ldr r2, _080222D0 @ =0x02000000\n\
+ mov r12, r2\n\
+_08022244:\n\
+ ldr r1, _080222D4 @ =0x0001600c\n\
+ add r1, r12\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+_0802224E:\n\
+ ldr r3, [sp, 0x10]\n\
+ cmp r3, 0x1\n\
+ bne _08022262\n\
+ mov r4, r10\n\
+ cmp r4, 0\n\
+ bne _08022262\n\
+ ldr r1, _080222D4 @ =0x0001600c\n\
+ add r1, r12\n\
+ movs r0, 0x11\n\
+ strb r0, [r1]\n\
+_08022262:\n\
+ ldr r5, [sp, 0x10]\n\
+ cmp r5, 0x2\n\
+ bne _08022278\n\
+ ldr r1, _080222D4 @ =0x0001600c\n\
+ add r1, r12\n\
+ ldr r0, [sp, 0x14]\n\
+ ldrb r2, [r1]\n\
+ cmp r0, r2\n\
+ bne _08022278\n\
+ movs r0, 0x11\n\
+ strb r0, [r1]\n\
+_08022278:\n\
+ ldr r0, _080222D4 @ =0x0001600c\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ beq _08022286\n\
+ bl _080218E4\n\
+_08022286:\n\
+ ldr r0, _080222D4 @ =0x0001600c\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ bne _0802229E\n\
+ mov r3, r10\n\
+ cmp r3, 0\n\
+ bne _0802229E\n\
+ ldr r1, _080222D8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x3\n\
+_0802229C:\n\
+ str r0, [r1]\n\
+_0802229E:\n\
+ add sp, 0x18\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080222B0: .4byte gHitMarker\n\
+_080222B4: .4byte gBattleTypeFlags\n\
+_080222B8: .4byte gProtectStructs\n\
+_080222BC: .4byte gBankAttacker\n\
+_080222C0: .4byte gBattleMoves\n\
+_080222C4: .4byte gCurrentMove\n\
+_080222C8: .4byte gBankTarget\n\
+_080222CC: .4byte gBattleMons\n\
+_080222D0: .4byte 0x02000000\n\
+_080222D4: .4byte 0x0001600c\n\
+_080222D8: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided"
+ );
+}
+#endif // NONMATCHING
+
+static void atk4A_typecalc2(void)
+{
+ u8 flags = 0;
+ int i = 0;
+ u8 move_type = gBattleMoves[gCurrentMove].type;
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
+ {
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ gMoveHitWith[gBankTarget] = 0;
+ gBattleCommunication[6] = move_type;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ else
+ {
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) {break;}
+ else {i += 3; continue;}
+ }
+
+ if (gTypeEffectiveness[i] == move_type)
+ {
+ //check type1
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1)
+ {
+ if (gTypeEffectiveness[i + 2] == 0)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ break;
+ }
+ if (gTypeEffectiveness[i + 2] == 5)
+ flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ if (gTypeEffectiveness[i + 2] == 20)
+ flags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ //check type2
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2)
+ {
+ if (gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ && gTypeEffectiveness[i + 2] == 0)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ break;
+ }
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 5)
+ flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2
+ && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 20)
+ flags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ }
+ i += 3;
+ }
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_NOEFFECT) && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 &&
+ (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) &&
+ gBattleMoves[gCurrentMove].power)
+ {
+ gLastUsedAbility = ABILITY_WONDER_GUARD;
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveHitWith[gBankTarget] = 0;
+ gBattleCommunication[6] = 3;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ gProtectStructs[gBankAttacker].notEffective = 1;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk4B_return_atk_to_ball(void)
+{
+ gActiveBank = gBankAttacker;
+ if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank)))
+ {
+ EmitReturnPokeToBall(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk4C_copy_poke_data(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+
+ gBattlePartyID[gActiveBank] = unk_2000000[0x16068 + gActiveBank];
+
+ EmitGetAttributes(0, 0, gBitTable[gBattlePartyID[gActiveBank]]);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static inline u8 get_knocked_off_byte(u8 bank)
+{
+ register u32 side asm("r2") = GetBankSide(bank);
+ register struct WishFutureKnock* dummy = &gWishFutureKnock;
+ register u8* aa = ((u8*)((u8*)(dummy)));
+ register u8* bb = aa + 0x29;
+ register u8* cc asm("r0") = side + bb;
+ return *cc;
+}
+
+static void atk4D_switch_data_update(void)
+{
+ struct BattlePokemon OldData;
+ int i;
+ u8 *monData;
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ OldData = gBattleMons[gActiveBank];
+ monData = (u8*)(&gBattleMons[gActiveBank]);
+ for (i = 0; i < sizeof(struct BattlePokemon); i++)
+ {
+ monData[i] = gBattleBufferB[gActiveBank][4 + i];
+ }
+
+ gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1;
+ gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2;
+ gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility);
+ //check knocked off item
+ if (get_knocked_off_byte(gActiveBank) & gBitTable[gBattlePartyID[gActiveBank]])
+ {
+ gBattleMons[gActiveBank].item = 0;
+ }
+
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
+ {
+ for (i = 0; i < 8; i++)
+ {
+ gBattleMons[gActiveBank].statStages[i] = OldData.statStages[i];
+ }
+ gBattleMons[gActiveBank].status2 = OldData.status2;
+ }
+ SwitchInClearStructs();
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 7;
+ gBattleTextBuff1[2] = gActiveBank;
+ gBattleTextBuff1[3] = gBattlePartyID[gActiveBank];
+ gBattleTextBuff1[4] = 0xFF;
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk4E_switchin_anim(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)))
+ {
+ GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2);
+ }
+ gAbsentBankFlags &= ~(gBitTable[gActiveBank]);
+ EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], BSScriptRead8(gBattlescriptCurrInstr + 2));
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk4F_jump_if_cannot_switch(void)
+{
+ int val, to_cmp;
+ register struct Pokemon *party;
+ u8 r7;
+ //0x80 byte is used as a way of telling the function whether to not check status2/status3
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1) & 0x7F);
+ if (!(BSScriptRead8(gBattlescriptCurrInstr + 1) & 0x80)
+ && ((gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ || (gStatuses3[gActiveBank] & STATUS3_ROOTED)))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ return;
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (GetBankSide(gActiveBank) == 1)
+ party = gEnemyParty;
+ else
+ party = gPlayerParty;
+ val = 0;
+ if (sub_803FBFC(sub_803FC34(gActiveBank)) == 1)
+ val = 3;
+ for (to_cmp = val + 3; val < to_cmp; val++)
+ {
+ if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&party[val], MON_DATA_IS_EGG)
+ && GetMonData(&party[val], MON_DATA_HP) != 0
+ && gBattlePartyID[gActiveBank] != val)
+ break;
+ }
+ if (val == to_cmp)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ }
+ else
+ {
+ if (GetBankSide(gActiveBank) == 1)
+ {
+ r7 = GetBankByPlayerAI(1);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ to_cmp = GetBankByPlayerAI(3);
+ else
+ to_cmp = r7;
+ party = gEnemyParty;
+ }
+ else
+ {
+ r7 = GetBankByPlayerAI(0);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ to_cmp = GetBankByPlayerAI(2);
+ else
+ to_cmp = r7;
+ party = gPlayerParty;
+ }
+ for (val = 0; val < 6; val++)
+ {
+ if (GetMonData(&party[val], MON_DATA_HP) != 0
+ && GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&party[val], MON_DATA_IS_EGG)
+ && val != gBattlePartyID[r7] && val != gBattlePartyID[to_cmp])
+ break;
+ }
+ if (val == 6)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ }
+}
+
+void sub_8022A3C(u8 unkown)
+{
+ //BATTLE_STRUCT->unk16064[gActiveBank] = gBattlePartyID[gActiveBank];
+ ewram[gActiveBank + 0x16064] = gBattlePartyID[gActiveBank];
+ EmitChoosePokemon(0, 1, unkown, 0, BATTLE_STRUCT->unk1606C[gActiveBank]);
+ MarkBufferBankForExecution(gActiveBank);
+}
+
+/*
+static void atk50_openpartyscreen(void)
+{
+ int i = 0;
+ int r9 = 0;
+ u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5)
+ {
+ if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
+ {
+ for (gActiveBank = i; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank)))
+ {
+ EmitLinkStandbyMsg(0, 2);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (sub_8018018(gActiveBank, 6, 6) == 0
+ && !gSpecialStatuses[gActiveBank].flag40)
+ {
+ sub_8022A3C(6);
+ gSpecialStatuses[gActiveBank].flag40 = 1;
+ }
+ else
+ {
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= (~HITMARKER_FAINTED(gActiveBank));
+ EmitLinkStandbyMsg(0, 2);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (!(gHitMarker >> 0x1C & gBitTable[0]))
+ {
+
+ }
+ else if (sub_8018018(gActiveBank, 6, 6) == 0
+ && !gSpecialStatuses[gActiveBank].flag40)
+ {
+
+ }
+ else
+ {
+
+ }
+ }
+ }
+}
+*/
+
+__attribute__((naked))
+static void atk50_openpartyscreen(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x4\n\
+ movs r7, 0\n\
+ movs r0, 0\n\
+ mov r9, r0\n\
+ ldr r6, _08022B44 @ =gBattlescriptCurrInstr\n\
+ ldr r1, [r6]\n\
+ ldrb r2, [r1, 0x2]\n\
+ ldrb r0, [r1, 0x3]\n\
+ lsls r0, 8\n\
+ orrs r2, r0\n\
+ ldrb r0, [r1, 0x4]\n\
+ lsls r0, 16\n\
+ orrs r2, r0\n\
+ ldrb r0, [r1, 0x5]\n\
+ lsls r0, 24\n\
+ orrs r2, r0\n\
+ mov r8, r2\n\
+ ldrb r2, [r1, 0x1]\n\
+ adds r0, r2, 0\n\
+ mov r12, r6\n\
+ cmp r0, 0x5\n\
+ beq _08022ACE\n\
+ b _08022F74\n\
+_08022ACE:\n\
+ ldr r0, _08022B48 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ movs r1, 0x41\n\
+ ands r1, r0\n\
+ cmp r1, 0x1\n\
+ beq _08022BBC\n\
+ ldr r1, _08022B4C @ =gActiveBank\n\
+ strb r7, [r1]\n\
+ ldr r0, _08022B50 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r7, r0\n\
+ bcc _08022AE8\n\
+ b _08022F62\n\
+_08022AE8:\n\
+ ldr r7, _08022B54 @ =gHitMarker\n\
+ ldr r6, _08022B58 @ =gBitTable\n\
+ adds r4, r1, 0\n\
+ ldr r0, _08022B5C @ =gAbsentBankFlags\n\
+ mov r8, r0\n\
+_08022AF2:\n\
+ ldrb r2, [r4]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r7]\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08022B94\n\
+ adds r0, r2, 0\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022B60\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r7]\n\
+ bics r0, r1\n\
+ str r0, [r7]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022BA2\n\
+ .align 2, 0\n\
+_08022B44: .4byte gBattlescriptCurrInstr\n\
+_08022B48: .4byte gBattleTypeFlags\n\
+_08022B4C: .4byte gActiveBank\n\
+_08022B50: .4byte gNoOfAllBanks\n\
+_08022B54: .4byte gHitMarker\n\
+_08022B58: .4byte gBitTable\n\
+_08022B5C: .4byte gAbsentBankFlags\n\
+_08022B60:\n\
+ ldr r5, _08022B90 @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r5\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022BA2\n\
+ movs r0, 0x6\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022BA2\n\
+ .align 2, 0\n\
+_08022B90: .4byte gSpecialStatuses\n\
+_08022B94:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08022BA2:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldr r1, _08022BB8 @ =gNoOfAllBanks\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08022AF2\n\
+ b _08022F62\n\
+ .align 2, 0\n\
+_08022BB8: .4byte gNoOfAllBanks\n\
+_08022BBC:\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08022BC4\n\
+ b _08022F62\n\
+_08022BC4:\n\
+ ldr r0, _08022C1C @ =gHitMarker\n\
+ mov r8, r0\n\
+ ldr r0, [r0]\n\
+ lsrs r5, r0, 28\n\
+ ldr r6, _08022C20 @ =gBitTable\n\
+ ldr r0, [r6]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08022C7E\n\
+ ldr r4, _08022C24 @ =gActiveBank\n\
+ strb r7, [r4]\n\
+ movs r0, 0\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022C2C\n\
+ ldr r2, _08022C28 @ =gAbsentBankFlags\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ mov r2, r8\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022C7E\n\
+ .align 2, 0\n\
+_08022C1C: .4byte gHitMarker\n\
+_08022C20: .4byte gBitTable\n\
+_08022C24: .4byte gActiveBank\n\
+_08022C28: .4byte gAbsentBankFlags\n\
+_08022C2C:\n\
+ ldr r6, _08022C60 @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r6\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022C6C\n\
+ ldr r0, _08022C64 @ =0x02000000\n\
+ ldr r1, _08022C68 @ =0x0001606a\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022C7E\n\
+ .align 2, 0\n\
+_08022C60: .4byte gSpecialStatuses\n\
+_08022C64: .4byte 0x02000000\n\
+_08022C68: .4byte 0x0001606a\n\
+_08022C6C:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ movs r2, 0x1\n\
+ mov r9, r2\n\
+_08022C7E:\n\
+ ldr r6, _08022CD8 @ =gBitTable\n\
+ ldr r0, [r6, 0x8]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08022D40\n\
+ ldr r0, [r6]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ bne _08022D40\n\
+ ldr r4, _08022CDC @ =gActiveBank\n\
+ movs r0, 0x2\n\
+ strb r0, [r4]\n\
+ movs r0, 0x2\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022CE8\n\
+ ldr r2, _08022CE0 @ =gAbsentBankFlags\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, _08022CE4 @ =gHitMarker\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022D40\n\
+ .align 2, 0\n\
+_08022CD8: .4byte gBitTable\n\
+_08022CDC: .4byte gActiveBank\n\
+_08022CE0: .4byte gAbsentBankFlags\n\
+_08022CE4: .4byte gHitMarker\n\
+_08022CE8:\n\
+ ldr r6, _08022D1C @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r6\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022D28\n\
+ ldr r0, _08022D20 @ =0x02000000\n\
+ ldr r1, _08022D24 @ =0x00016068\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022D40\n\
+ .align 2, 0\n\
+_08022D1C: .4byte gSpecialStatuses\n\
+_08022D20: .4byte 0x02000000\n\
+_08022D24: .4byte 0x00016068\n\
+_08022D28:\n\
+ movs r0, 0x1\n\
+ mov r2, r9\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _08022D40\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08022D40:\n\
+ ldr r6, _08022D90 @ =gBitTable\n\
+ ldr r0, [r6, 0x4]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08022DF6\n\
+ ldr r4, _08022D94 @ =gActiveBank\n\
+ movs r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r0, 0x1\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022DA0\n\
+ ldr r2, _08022D98 @ =gAbsentBankFlags\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, _08022D9C @ =gHitMarker\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022DF6\n\
+ .align 2, 0\n\
+_08022D90: .4byte gBitTable\n\
+_08022D94: .4byte gActiveBank\n\
+_08022D98: .4byte gAbsentBankFlags\n\
+_08022D9C: .4byte gHitMarker\n\
+_08022DA0:\n\
+ ldr r6, _08022DD4 @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r6\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022DE0\n\
+ ldr r0, _08022DD8 @ =0x02000000\n\
+ ldr r1, _08022DDC @ =0x0001606b\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022DF6\n\
+ .align 2, 0\n\
+_08022DD4: .4byte gSpecialStatuses\n\
+_08022DD8: .4byte 0x02000000\n\
+_08022DDC: .4byte 0x0001606b\n\
+_08022DE0:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ movs r0, 0x2\n\
+ mov r2, r9\n\
+ orrs r2, r0\n\
+ mov r9, r2\n\
+_08022DF6:\n\
+ ldr r6, _08022E50 @ =gBitTable\n\
+ ldr r0, [r6, 0xC]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08022EB8\n\
+ ldr r0, [r6, 0x4]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ bne _08022EB8\n\
+ ldr r4, _08022E54 @ =gActiveBank\n\
+ movs r0, 0x3\n\
+ strb r0, [r4]\n\
+ movs r0, 0x3\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022E60\n\
+ ldr r2, _08022E58 @ =gAbsentBankFlags\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, _08022E5C @ =gHitMarker\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022EB8\n\
+ .align 2, 0\n\
+_08022E50: .4byte gBitTable\n\
+_08022E54: .4byte gActiveBank\n\
+_08022E58: .4byte gAbsentBankFlags\n\
+_08022E5C: .4byte gHitMarker\n\
+_08022E60:\n\
+ ldr r6, _08022E94 @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r6\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022EA0\n\
+ ldr r0, _08022E98 @ =0x02000000\n\
+ ldr r1, _08022E9C @ =0x00016069\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022EB8\n\
+ .align 2, 0\n\
+_08022E94: .4byte gSpecialStatuses\n\
+_08022E98: .4byte 0x02000000\n\
+_08022E9C: .4byte 0x00016069\n\
+_08022EA0:\n\
+ movs r0, 0x2\n\
+ mov r2, r9\n\
+ ands r2, r0\n\
+ cmp r2, 0\n\
+ bne _08022EB8\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08022EB8:\n\
+ ldr r1, _08022EE8 @ =gSpecialStatuses\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022F0C\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x28\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022F0C\n\
+ cmp r5, 0\n\
+ beq _08022F0C\n\
+ ldr r0, _08022EEC @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r0, _08022EF0 @ =gBitTable\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _08022EF8\n\
+ ldr r1, _08022EF4 @ =gActiveBank\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ b _08022EFC\n\
+ .align 2, 0\n\
+_08022EE8: .4byte gSpecialStatuses\n\
+_08022EEC: .4byte gAbsentBankFlags\n\
+_08022EF0: .4byte gBitTable\n\
+_08022EF4: .4byte gActiveBank\n\
+_08022EF8:\n\
+ ldr r0, _08022F3C @ =gActiveBank\n\
+ strb r1, [r0]\n\
+_08022EFC:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldr r0, _08022F3C @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+_08022F0C:\n\
+ ldr r1, _08022F40 @ =gSpecialStatuses\n\
+ ldrb r0, [r1, 0x14]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022F62\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x3C\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022F62\n\
+ cmp r5, 0\n\
+ beq _08022F62\n\
+ ldr r0, _08022F44 @ =gAbsentBankFlags\n\
+ ldrb r0, [r0]\n\
+ ldr r1, _08022F48 @ =gBitTable\n\
+ ldr r1, [r1, 0x4]\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08022F4C\n\
+ ldr r1, _08022F3C @ =gActiveBank\n\
+ movs r0, 0x3\n\
+ b _08022F50\n\
+ .align 2, 0\n\
+_08022F3C: .4byte gActiveBank\n\
+_08022F40: .4byte gSpecialStatuses\n\
+_08022F44: .4byte gAbsentBankFlags\n\
+_08022F48: .4byte gBitTable\n\
+_08022F4C:\n\
+ ldr r1, _08022F6C @ =gActiveBank\n\
+ movs r0, 0x1\n\
+_08022F50:\n\
+ strb r0, [r1]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldr r0, _08022F6C @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+_08022F62:\n\
+ ldr r1, _08022F70 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x6\n\
+ str r0, [r1]\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_08022F6C: .4byte gActiveBank\n\
+_08022F70: .4byte gBattlescriptCurrInstr\n\
+_08022F74:\n\
+ cmp r0, 0x6\n\
+ beq _08022F7A\n\
+ b _08023170\n\
+_08022F7A:\n\
+ ldr r0, _08022FF0 @ =gBattleTypeFlags\n\
+ ldrh r2, [r0]\n\
+ movs r0, 0x40\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _08022F88\n\
+ b _0802310C\n\
+_08022F88:\n\
+ movs r0, 0x1\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _08022F92\n\
+ b _0802310C\n\
+_08022F92:\n\
+ ldr r7, _08022FF4 @ =gHitMarker\n\
+ ldr r0, [r7]\n\
+ lsrs r5, r0, 28\n\
+ ldr r4, _08022FF8 @ =gBitTable\n\
+ ldr r0, [r4, 0x8]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _0802303A\n\
+ ldr r0, [r4]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _0802303A\n\
+ ldr r6, _08022FFC @ =gActiveBank\n\
+ movs r0, 0x2\n\
+ strb r0, [r6]\n\
+ ldr r0, _08023000 @ =gBattleBufferB\n\
+ ldrb r1, [r0, 0x1]\n\
+ movs r0, 0x2\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08023008\n\
+ ldr r2, _08023004 @ =gAbsentBankFlags\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r7]\n\
+ bics r0, r1\n\
+ str r0, [r7]\n\
+ movs r0, 0\n\
+ bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ ldrb r0, [r6]\n\
+ bl MarkBufferBankForExecution\n\
+ b _0802303A\n\
+ .align 2, 0\n\
+_08022FF0: .4byte gBattleTypeFlags\n\
+_08022FF4: .4byte gHitMarker\n\
+_08022FF8: .4byte gBitTable\n\
+_08022FFC: .4byte gActiveBank\n\
+_08023000: .4byte gBattleBufferB\n\
+_08023004: .4byte gAbsentBankFlags\n\
+_08023008:\n\
+ ldr r4, _08023098 @ =gSpecialStatuses\n\
+ ldrb r0, [r6]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r4\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _0802303A\n\
+ ldr r0, _0802309C @ =0x02000000\n\
+ ldr r1, _080230A0 @ =0x00016068\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r6]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_0802303A:\n\
+ ldr r4, _080230A4 @ =gBitTable\n\
+ ldr r0, [r4, 0xC]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _080230EE\n\
+ ldr r0, [r4, 0x4]\n\
+ ands r5, r0\n\
+ cmp r5, 0\n\
+ beq _080230EE\n\
+ ldr r5, _080230A8 @ =gActiveBank\n\
+ movs r0, 0x3\n\
+ strb r0, [r5]\n\
+ ldr r0, _080230AC @ =gBattleBufferB\n\
+ ldr r2, _080230B0 @ =0x00000201\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x3\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080230BC\n\
+ ldr r2, _080230B4 @ =gAbsentBankFlags\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, _080230B8 @ =gHitMarker\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ ldrb r0, [r5]\n\
+ bl MarkBufferBankForExecution\n\
+ b _080230EE\n\
+ .align 2, 0\n\
+_08023098: .4byte gSpecialStatuses\n\
+_0802309C: .4byte 0x02000000\n\
+_080230A0: .4byte 0x00016068\n\
+_080230A4: .4byte gBitTable\n\
+_080230A8: .4byte gActiveBank\n\
+_080230AC: .4byte gBattleBufferB\n\
+_080230B0: .4byte 0x00000201\n\
+_080230B4: .4byte gAbsentBankFlags\n\
+_080230B8: .4byte gHitMarker\n\
+_080230BC:\n\
+ ldr r4, _080230FC @ =gSpecialStatuses\n\
+ ldrb r0, [r5]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r4\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _080230EE\n\
+ ldr r0, _08023100 @ =0x02000000\n\
+ ldr r1, _08023104 @ =0x00016069\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r5]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_080230EE:\n\
+ ldr r1, _08023108 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x6\n\
+ str r0, [r1]\n\
+ mov r12, r1\n\
+ b _08023110\n\
+ .align 2, 0\n\
+_080230FC: .4byte gSpecialStatuses\n\
+_08023100: .4byte 0x02000000\n\
+_08023104: .4byte 0x00016069\n\
+_08023108: .4byte gBattlescriptCurrInstr\n\
+_0802310C:\n\
+ adds r0, r1, 0x6\n\
+ str r0, [r6]\n\
+_08023110:\n\
+ ldr r0, _08023160 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ lsrs r5, r0, 28\n\
+ ldr r1, _08023164 @ =gBank1\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+ ldr r4, _08023168 @ =gBitTable\n\
+ ldr r2, [r4]\n\
+ ands r2, r5\n\
+ ldr r6, _0802316C @ =gNoOfAllBanks\n\
+ cmp r2, 0\n\
+ bne _0802314C\n\
+ adds r7, r6, 0\n\
+ ldrb r0, [r6]\n\
+ cmp r2, r0\n\
+ bcs _0802314C\n\
+ adds r3, r1, 0\n\
+_08023132:\n\
+ ldrb r0, [r3]\n\
+ adds r0, 0x1\n\
+ strb r0, [r3]\n\
+ ldrb r2, [r3]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ bne _0802314C\n\
+ ldrb r0, [r7]\n\
+ cmp r2, r0\n\
+ bcc _08023132\n\
+_0802314C:\n\
+ ldrb r0, [r1]\n\
+ ldrb r6, [r6]\n\
+ cmp r0, r6\n\
+ beq _08023156\n\
+ b _08023302\n\
+_08023156:\n\
+ mov r1, r8\n\
+ mov r2, r12\n\
+ str r1, [r2]\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_08023160: .4byte gHitMarker\n\
+_08023164: .4byte gBank1\n\
+_08023168: .4byte gBitTable\n\
+_0802316C: .4byte gNoOfAllBanks\n\
+_08023170:\n\
+ movs r0, 0x80\n\
+ ands r0, r2\n\
+ movs r5, 0x1\n\
+ cmp r0, 0\n\
+ beq _0802317C\n\
+ movs r5, 0\n\
+_0802317C:\n\
+ movs r0, 0x7F\n\
+ ands r0, r2\n\
+ bl GetBattleBank\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r1, _080231A4 @ =gSpecialStatuses\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ bge _080231A8\n\
+ ldr r0, [r6]\n\
+ adds r0, 0x6\n\
+ str r0, [r6]\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_080231A4: .4byte gSpecialStatuses\n\
+_080231A8:\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080231F8\n\
+ ldr r2, _080231E8 @ =gActiveBank\n\
+ strb r7, [r2]\n\
+ ldr r3, _080231EC @ =gAbsentBankFlags\n\
+ ldr r4, _080231F0 @ =gBitTable\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r3]\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ ldr r3, _080231F4 @ =gHitMarker\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r3]\n\
+ bics r0, r1\n\
+ str r0, [r3]\n\
+ mov r0, r8\n\
+ str r0, [r6]\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_080231E8: .4byte gActiveBank\n\
+_080231EC: .4byte gAbsentBankFlags\n\
+_080231F0: .4byte gBitTable\n\
+_080231F4: .4byte gHitMarker\n\
+_080231F8:\n\
+ ldr r4, _080232A0 @ =gActiveBank\n\
+ strb r7, [r4]\n\
+ ldr r3, _080232A4 @ =0x02000000\n\
+ ldrb r0, [r4]\n\
+ ldr r2, _080232A8 @ =0x00016064\n\
+ adds r1, r0, r2\n\
+ adds r1, r3\n\
+ ldr r2, _080232AC @ =gBattlePartyID\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x2\n\
+ eors r0, r1\n\
+ ldr r1, _080232B0 @ =0x00016068\n\
+ adds r0, r1\n\
+ adds r0, r3\n\
+ ldrb r2, [r0]\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ ldr r1, _080232B4 @ =0x0001606c\n\
+ adds r3, r1\n\
+ adds r0, r3\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ adds r1, r5, 0\n\
+ movs r3, 0\n\
+ bl EmitChoosePokemon\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, [r6]\n\
+ adds r0, 0x6\n\
+ str r0, [r6]\n\
+ ldrb r0, [r4]\n\
+ bl GetBankIdentity\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0802325A\n\
+ ldr r1, _080232B8 @ =gBattleResults\n\
+ ldrb r0, [r1, 0x2]\n\
+ cmp r0, 0xFE\n\
+ bhi _0802325A\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x2]\n\
+_0802325A:\n\
+ ldr r0, _080232BC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080232C4\n\
+ ldr r1, _080232A0 @ =gActiveBank\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+ ldr r0, _080232C0 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08023302\n\
+ adds r4, r1, 0\n\
+_08023276:\n\
+ ldrb r0, [r4]\n\
+ cmp r0, r7\n\
+ beq _0802328A\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_0802328A:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldr r1, _080232C0 @ =gNoOfAllBanks\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08023276\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_080232A0: .4byte gActiveBank\n\
+_080232A4: .4byte 0x02000000\n\
+_080232A8: .4byte 0x00016064\n\
+_080232AC: .4byte gBattlePartyID\n\
+_080232B0: .4byte 0x00016068\n\
+_080232B4: .4byte 0x0001606c\n\
+_080232B8: .4byte gBattleResults\n\
+_080232BC: .4byte gBattleTypeFlags\n\
+_080232C0: .4byte gNoOfAllBanks\n\
+_080232C4:\n\
+ adds r0, r7, 0\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ eors r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankByPlayerAI\n\
+ ldr r4, _08023310 @ =gActiveBank\n\
+ strb r0, [r4]\n\
+ ldr r0, _08023314 @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r2, _08023318 @ =gBitTable\n\
+ ldrb r3, [r4]\n\
+ lsls r0, r3, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _080232F4\n\
+ movs r0, 0x2\n\
+ eors r3, r0\n\
+ strb r3, [r4]\n\
+_080232F4:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08023302:\n\
+ add sp, 0x4\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08023310: .4byte gActiveBank\n\
+_08023314: .4byte gAbsentBankFlags\n\
+_08023318: .4byte gBitTable\n\
+ .syntax divided");
+}
+
+static void atk51_switch_handle_order(void)
+{
+ int i;
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 2))
+ {
+ case 0:
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleBufferB[i][0] == 0x22)
+ ewram[i + 0x16068] = gBattleBufferB[i][1];
+ }
+ break;
+ case 1:
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ sub_8012258(gActiveBank);
+ break;
+ case 2:
+ gBattleCommunication[0] = gBattleBufferB[gActiveBank][1];
+ ewram[gActiveBank + 0x16068] = gBattleBufferB[gActiveBank][1];
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+
+ ewram[(gActiveBank) * 3 + (0x1606C + 0)] &= 0xF;
+ ewram[(gActiveBank) * 3 + (0x1606C + 0)] |= (gBattleBufferB[gActiveBank][2] & 0xF0);
+ ewram[(gActiveBank) * 3 + (0x1606C + 1)] = gBattleBufferB[gActiveBank][3];
+
+ ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 0)] &= (0xF0);
+ ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 0)] |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4;
+ ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 2)] = gBattleBufferB[gActiveBank][3];
+ }
+ else
+ sub_8012258(gActiveBank);
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 6;
+ gBattleTextBuff1[2] = gBattleMons[gBankAttacker].species;
+ gBattleTextBuff1[3] = gBattleMons[gBankAttacker].species >> 8;
+ gBattleTextBuff1[4] = 0xFF;
+
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 7;
+ gBattleTextBuff2[2] = gActiveBank;
+ gBattleTextBuff2[3] = gBattleBufferB[gActiveBank][1];
+ gBattleTextBuff2[4] = 0xFF;
+ break;
+ }
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk52_switch_in_effects(void)
+{
+ int i;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ sub_80157C4(gActiveBank);
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ gSpecialStatuses[gActiveBank].flag40 = 0;
+
+ if (!(gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES)
+ && gBattleMons[gActiveBank].type1 != TYPE_FLYING && gBattleMons[gActiveBank].type2 != TYPE_FLYING && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE)
+ {
+ u8 spikesDmg;
+
+ gSideAffecting[GetBankSide(gActiveBank)] |= SIDE_STATUS_SPIKES_DAMAGED;
+
+ spikesDmg = (5 - gSideTimer[GetBankSide(gActiveBank)].spikesAmount) * 2;
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / (spikesDmg);
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ b_movescr_stack_push_cursor();
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0)
+ gBattlescriptCurrInstr = gUnknown_081D919F;
+ else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1)
+ gBattlescriptCurrInstr = gUnknown_081D9171;
+ else
+ gBattlescriptCurrInstr = gUnknown_081D91CD;
+ }
+ else
+ {
+ if (gBattleMons[gActiveBank].ability == ABILITY_TRUANT)
+ {
+ gDisableStructs[gActiveBank].truantCounter = 1;
+ }
+
+ if (AbilityBattleEffects(0, gActiveBank, 0, 0, 0) == 0 && ItemBattleEffects(0, gActiveBank, 0) == 0)
+ {
+ gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gTurnOrder[i] == gActiveBank)
+ gUnknown_02024A76[i] = 0xC;
+ }
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ *(HP_ON_SWITCHOUT + GetBankSide(i)) = gBattleMons[i].hp;
+ }
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5)
+ {
+ u32 hitmark = gHitMarker >> 0x1C;
+ gBank1++;
+ while (1)
+ {
+ if (hitmark & gBitTable[gBank1] && !(gAbsentBankFlags & gBitTable[gBank1]))
+ break;
+ if (gBank1 >= gNoOfAllBanks)
+ break;
+ gBank1++;
+ }
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+ }
+}
+
+static void atk53_trainer_slide(void)
+{
+ if (!BSScriptRead8(gBattlescriptCurrInstr + 1))
+ gActiveBank = GetBankByPlayerAI(0);
+ else
+ gActiveBank = GetBankByPlayerAI(1);
+
+ EmitTrainerSlide(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk54_effectiveness_sound(void)
+{
+ gActiveBank = gBankAttacker;
+ EmitEffectivenessSound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk55_play_sound(void)
+{
+ gActiveBank = gBankAttacker;
+ EmitPlaySound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk56_fainting_cry(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ EmitFaintingCry(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk57(void)
+{
+ gActiveBank = GetBankByPlayerAI(0);
+ dp01_build_cmdbuf_x37_a(0, gBattleOutcome);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 1;
+}
+
+static void atk58_return_to_ball(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ EmitReturnPokeToBall(0, 1);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+void atk59_learnmove_inbattle(void)
+{
+ u8* loc1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* loc2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
+
+ u16 ret = sub_803B7C8(&gPlayerParty[BATTLE_STRUCT->expGetterID], BSScriptRead8(gBattlescriptCurrInstr + 9));
+ while (ret == 0xFFFE)
+ ret = sub_803B7C8(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0);
+
+ if (ret == 0)
+ {
+ gBattlescriptCurrInstr = loc2;
+ }
+ else if (ret == 0xFFFF)
+ {
+ gBattlescriptCurrInstr += 10;
+ }
+ else
+ {
+ gActiveBank = GetBankByPlayerAI(0);
+ if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) //what is else if
+ {
+ gActiveBank = GetBankByPlayerAI(2);
+ if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ }
+ gBattlescriptCurrInstr = loc1;
+ }
+}
+
+void sub_8023A80(void)
+{
+ sub_802BBD4(0x18, 8, 0x1D, 0xD, 0);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D7A, 0x100, 0x19, 0x9);
+ sub_8002F44(&gUnknown_03004210);
+ sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20);
+}
+
+void sub_8023AD8(void)
+{
+ sub_802BBD4(0x18, 8, 0x1D, 0xD, 1);
+ DestroyMenuCursor();
+}
+
+static void atk5A(void)
+{
+ gActiveBank = 0;
+ switch (BATTLE_STRUCT->atk5A_StateTracker)
+ {
+ case 0:
+ sub_8023A80();
+ BATTLE_STRUCT->atk5A_StateTracker++;
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[1] == 0)
+ {
+ sub_8023AD8();
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BATTLE_STRUCT->atk5A_StateTracker++;
+ return;
+ }
+ goto state_tracker_4;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ state_tracker_4:
+ BATTLE_STRUCT->atk5A_StateTracker = 4;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, word_2024E82);
+ BATTLE_STRUCT->atk5A_StateTracker++;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active && gMain.callback2 == sub_800F808)
+ {
+ u8 move_pos = sub_809FA30();
+ if (move_pos == 4)
+ {
+ BATTLE_STRUCT->atk5A_StateTracker = 4;
+ }
+ else
+ {
+ u16 move = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MOVE1 + move_pos);
+ if (IsHMMove2(move))
+ {
+ PrepareStringBattle(0x13F, gActiveBank);
+ BATTLE_STRUCT->atk5A_StateTracker = 5;
+ }
+ else
+ {
+ u8 *ptr;
+
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ ptr = gBattleTextBuff2;
+ {
+ ptr[0] = 0xFD;
+ ptr[1] = 2;
+ ptr[2] = move;
+ ptr[3] = ((move & 0xFF00) >> 8);
+ ptr += 4;
+ }
+ ptr[0] = 0xFF;
+ RemoveMonPPBonus(&gPlayerParty[BATTLE_STRUCT->expGetterID], move_pos);
+ SetMonMoveSlot(&gPlayerParty[BATTLE_STRUCT->expGetterID], word_2024E82, move_pos);
+ if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[0].unk18_b & gBitTable[move_pos]))
+ {
+ RemoveBattleMonPPBonus(&gBattleMons[0], move_pos);
+ SetBattleMonMoveSlot(&gBattleMons[0], word_2024E82, move_pos);
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[2].unk18_b & gBitTable[move_pos]))
+ {
+ RemoveBattleMonPPBonus(&gBattleMons[2], move_pos);
+ SetBattleMonMoveSlot(&gBattleMons[2], word_2024E82, move_pos);
+ }
+ }
+ }
+ }
+ break;
+ case 4:
+ sub_8023AD8();
+ gBattlescriptCurrInstr += 5;
+ break;
+ case 5:
+ if (gBattleExecBuffer == 0)
+ {
+ BATTLE_STRUCT->atk5A_StateTracker = 2;
+ }
+ break;
+ }
+}
+
+static void atk5B_80256E0(void)
+{
+ switch (BATTLE_STRUCT->atk5A_StateTracker)
+ {
+ case 0:
+ sub_8023A80();
+ BATTLE_STRUCT->atk5A_StateTracker++;
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[1] != 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+ sub_8023AD8();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ sub_8023AD8();
+ }
+ }
+}
+
+static void atk5C_hitanimation(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ gBattlescriptCurrInstr += 2;
+ else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBank].substituteHP == 0)
+ {
+ EmitHitAnimation(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+ }
+ else
+ gBattlescriptCurrInstr += 2;
+}
+
+#define MONEY_UNKNOWN ((*(u8*)(0x02017000 + 0x94)))
+
+#ifdef NONMATCHING
+static void atk5D_getmoneyreward(void)
+{
+ int i = 0;
+ u8 r5 = 0;
+ u32 money_to_give;
+ if (gTrainerBattleOpponent == 0x400)
+ {
+ money_to_give = 2 * BATTLE_STRUCT->moneyMultiplier * MONEY_UNKNOWN;
+ }
+ else
+ {
+ switch(gTrainers[gTrainerBattleOpponent].partyFlags)
+ {
+ case 0:
+ {
+ const struct PokeTrainerData1 *data = &gTrainers[gTrainerBattleOpponent].party->noItemNoMoves;
+ r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl;
+ }
+ break;
+ case 2:
+ {
+ const struct PokeTrainerData2 *data = &gTrainers[gTrainerBattleOpponent].party->itemNoMoves;
+ r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl;
+ }
+ break;
+ case 1:
+ case 3:
+ {
+ const struct PokeTrainerData3 *data = &gTrainers[gTrainerBattleOpponent].party->itemMoves;
+ r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl;
+ }
+ break;
+ }
+ for (; gTrainerMoney[i * 4] != 0xFF && gTrainerMoney[i * 4 + 1] != gTrainers[gTrainerBattleOpponent].trainerClass ; i++) {}
+
+ money_to_give = (r5 << 2) * BATTLE_STRUCT->moneyMultiplier;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ money_to_give = 2 * gTrainerMoney[i * 4 + 1] * money_to_give;
+ else
+ money_to_give = 1 * gTrainerMoney[i * 4 + 1] * money_to_give;
+ }
+
+ sub_80B79B8(&gSaveBlock1.money, money_to_give);
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 1;
+ gBattleTextBuff1[2] = 4;
+ gBattleTextBuff1[3] = 5;
+ gBattleTextBuff1[4] = BYTE0(money_to_give);
+ gBattleTextBuff1[5] = BYTE1(money_to_give);
+ gBattleTextBuff1[6] = BYTE2(money_to_give);
+ gBattleTextBuff1[7] = BYTE3(money_to_give);
+ gBattleTextBuff1[8] = 0xFF;
+
+ gBattlescriptCurrInstr += 1;
+}
+#else
+__attribute__((naked))
+static void atk5D_getmoneyreward(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ movs r6, 0\n\
+ movs r5, 0\n\
+ ldr r0, _08024048 @ =gTrainerBattleOpponent\n\
+ ldrh r2, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 3\n\
+ cmp r2, r1\n\
+ bne _08024058\n\
+ ldr r0, _0802404C @ =0x02017000\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x94\n\
+ ldrb r2, [r1]\n\
+ ldr r1, _08024050 @ =0xfffff056\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r4, r2, 0\n\
+ muls r4, r0\n\
+ ldr r0, _08024054 @ =gSaveBlock1 + 0x490\n\
+ mov r8, r0\n\
+ b _08024140\n\
+ .align 2, 0\n\
+_08024048: .4byte gTrainerBattleOpponent\n\
+_0802404C: .4byte 0x02017000\n\
+_08024050: .4byte 0xfffff056\n\
+_08024054: .4byte gSaveBlock1 + 0x490\n\
+_08024058:\n\
+ ldr r2, _08024074 @ =gTrainers\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r3, r0, 3\n\
+ adds r4, r3, r2\n\
+ ldrb r1, [r4]\n\
+ cmp r1, 0x1\n\
+ beq _080240AE\n\
+ cmp r1, 0x1\n\
+ bgt _08024078\n\
+ cmp r1, 0\n\
+ beq _08024082\n\
+ b _080240C4\n\
+ .align 2, 0\n\
+_08024074: .4byte gTrainers\n\
+_08024078:\n\
+ cmp r1, 0x2\n\
+ beq _08024098\n\
+ cmp r1, 0x3\n\
+ beq _080240AE\n\
+ b _080240C4\n\
+_08024082:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x24\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ subs r0, 0x8\n\
+ b _080240C2\n\
+_08024098:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x24\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ subs r0, 0x8\n\
+ b _080240C2\n\
+_080240AE:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x24\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ subs r0, 0x10\n\
+_080240C2:\n\
+ ldrb r5, [r0, 0x2]\n\
+_080240C4:\n\
+ ldr r0, _08024120 @ =gTrainerMoney\n\
+ lsls r1, r6, 2\n\
+ adds r3, r1, r0\n\
+ ldrb r1, [r3]\n\
+ mov r12, r0\n\
+ lsls r4, r5, 2\n\
+ ldr r5, _08024124 @ =0x02000000\n\
+ ldr r7, _08024128 @ =gBattleTypeFlags\n\
+ ldr r0, _0802412C @ =gSaveBlock1 + 0x490\n\
+ mov r8, r0\n\
+ cmp r1, 0xFF\n\
+ beq _080240FE\n\
+ ldr r2, _08024130 @ =gTrainers\n\
+ ldr r0, _08024134 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r2\n\
+ ldrb r2, [r0, 0x1]\n\
+ adds r1, r3, 0\n\
+_080240EE:\n\
+ ldrb r0, [r1]\n\
+ cmp r0, r2\n\
+ beq _080240FE\n\
+ adds r1, 0x4\n\
+ adds r6, 0x1\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xFF\n\
+ bne _080240EE\n\
+_080240FE:\n\
+ ldr r1, _08024138 @ =0x00016056\n\
+ adds r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ adds r3, r4, 0\n\
+ muls r3, r0\n\
+ lsls r0, r6, 2\n\
+ add r0, r12\n\
+ ldrb r2, [r0, 0x1]\n\
+ ldrh r1, [r7]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802413C\n\
+ lsls r0, r2, 1\n\
+ adds r4, r3, 0\n\
+ muls r4, r0\n\
+ b _08024140\n\
+ .align 2, 0\n\
+_08024120: .4byte gTrainerMoney\n\
+_08024124: .4byte 0x02000000\n\
+_08024128: .4byte gBattleTypeFlags\n\
+_0802412C: .4byte gSaveBlock1 + 0x490\n\
+_08024130: .4byte gTrainers\n\
+_08024134: .4byte gTrainerBattleOpponent\n\
+_08024138: .4byte 0x00016056\n\
+_0802413C:\n\
+ adds r4, r3, 0\n\
+ muls r4, r2\n\
+_08024140:\n\
+ mov r0, r8\n\
+ adds r1, r4, 0\n\
+ bl sub_80B79B8\n\
+ ldr r1, _0802418C @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x1]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x2]\n\
+ movs r0, 0x5\n\
+ strb r0, [r1, 0x3]\n\
+ strb r4, [r1, 0x4]\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r4\n\
+ lsrs r0, 8\n\
+ strb r0, [r1, 0x5]\n\
+ movs r0, 0xFF\n\
+ lsls r0, 16\n\
+ ands r0, r4\n\
+ lsrs r0, 16\n\
+ strb r0, [r1, 0x6]\n\
+ lsrs r0, r4, 24\n\
+ strb r0, [r1, 0x7]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x8]\n\
+ ldr r1, _08024190 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x1\n\
+ str r0, [r1]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0802418C: .4byte gBattleTextBuff1\n\
+_08024190: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+#endif //NONMATCHING
+
+static void atk5E_8025A70(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ EmitGetAttributes(0, REQUEST_ALL_BATTLE, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleCommunication[0]++;
+ break;
+ case 1:
+ if (gBattleExecBuffer == 0)
+ {
+ int i;
+ struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBank][4];
+ for (i = 0; i < 4; i++)
+ {
+ gBattleMons[gActiveBank].moves[i] = bufferPoke->moves[i];
+ gBattleMons[gActiveBank].pp[i] = bufferPoke->pp[i];
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+ break;
+ }
+}
+
+static void atk5F_8025B24(void)
+{
+ gActiveBank = gBankAttacker;
+ gBankAttacker = gBankTarget;
+ gBankTarget = gActiveBank;
+ //what is xor...
+ if (gHitMarker & HITMARKER_PURSUIT_TRAP)
+ gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
+ else
+ gHitMarker |= HITMARKER_PURSUIT_TRAP;
+ gBattlescriptCurrInstr++;
+}
+
+static void atk60_increment_gamestat(void)
+{
+ if (GetBankSide(gBankAttacker) == 0)
+ {
+ IncrementGameStat(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ }
+ gBattlescriptCurrInstr += 2;
+}
+
+struct hp_status
+{
+ u16 hp;
+ u32 status;
+};
+
+static void atk61_8025BA4(void)
+{
+ int i;
+ struct Pokemon* party;
+ struct hp_status hpStatus[6];
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (GetBankSide(gActiveBank) == 0)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == 0 || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ hpStatus[i].hp = 0xFFFF;
+ hpStatus[i].status = 0;
+ }
+ else
+ {
+ hpStatus[i].hp = GetMonData(&party[i], MON_DATA_HP);
+ hpStatus[i].status = GetMonData(&party[i], MON_DATA_STATUS);
+ }
+ }
+ dp01_build_cmdbuf_x30_TODO(0, (u8*)(hpStatus), 1);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk62_08025C6C(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ dp01_build_cmdbuf_x31_31_31_31(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk63_jumptorandomattack(void)
+{
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1))
+ gCurrentMove = gRandomMove;
+ else
+ gUnknown_02024BE8 = gCurrentMove = gRandomMove;
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+}
+
+static void atk64_statusanimation(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ EmitStatusAnimation(0, 0, gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk65_status2animation(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u32 possible_to_anim;
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ possible_to_anim = BSScriptRead32(gBattlescriptCurrInstr + 2);
+ if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ EmitStatusAnimation(0, 1, gBattleMons[gActiveBank].status2 & possible_to_anim);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 6;
+ }
+}
+
+static void atk66_chosenstatusanimation(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u32 status;
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ status = BSScriptRead32(gBattlescriptCurrInstr + 3);
+ if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ EmitStatusAnimation(0, BSScriptRead8(gBattlescriptCurrInstr + 2), status);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 7;
+ }
+}
+
+static void atk67_8025ECC(void)
+{
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ sub_8023A80();
+ gBattleCommunication[0]++;
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gBattleCommunication[1] = 1;
+ PlaySE(SE_SELECT);
+ sub_8023AD8();
+ gBattlescriptCurrInstr++;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8023AD8();
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ }
+}
+
+static void atk68_80246A0(void)
+{
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ gUnknown_02024A76[i] = 0xC;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk69_dmg_adjustment2(void) //literally a copy of atk07 except theres no rand dmg modifier...
+{
+ u8 hold_effect, quality;
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemBattle(gBankTarget, hold_effect);
+ gSpecialStatuses[gBankTarget].focusBanded = 1;
+ }
+ if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ goto END;
+ if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured
+ && !gSpecialStatuses[gBankTarget].focusBanded)
+ goto END;
+ if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ goto END;
+
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+
+ if (gProtectStructs[gBankTarget].endured)
+ {
+ gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ goto END;
+ }
+ if (gSpecialStatuses[gBankTarget].focusBanded)
+ {
+ gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ }
+
+ END:
+ gBattlescriptCurrInstr++;
+}
+
+void atk6A_removeitem(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ #define USED_HELD_ITEMS(bank) (*(u16 *)&ewram[0x160CC + 2 * (bank)])
+ USED_HELD_ITEMS(gActiveBank) = gBattleMons[gActiveBank].item;
+
+ gBattleMons[gActiveBank].item = 0;
+ EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk6B_atknameinbuff1(void)
+{
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 7;
+ gBattleTextBuff1[2] = gBankAttacker;
+ gBattleTextBuff1[3] = gBattlePartyID[gBankAttacker];
+ gBattleTextBuff1[4] = 0xFF;
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NONMATCHING
+static void atk6C_lvlbox_display(void)
+{
+ u8 r1 = 0;
+ u8 r7 = 0;
+ switch (BATTLE_STRUCT->atk6C_statetracker)
+ {
+ case 0:
+ sub_802BBD4(0xB, 0, 0x1D, 0x7, r1);
+ StringCopy(gStringVar4, gUnknown_08400D9F);
+
+ }
+}
+
+#else
+__attribute__((naked))
+static void atk6C_lvlbox_display(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ movs r1, 0\n\
+ movs r7, 0\n\
+ ldr r0, _08024928 @ =0x02000000\n\
+ mov r10, r0\n\
+ ldr r4, _0802492C @ =0x0001609c\n\
+ add r4, r10\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x1\n\
+ bne _0802491C\n\
+ b _08024AF4\n\
+_0802491C:\n\
+ cmp r0, 0x1\n\
+ bgt _08024930\n\
+ cmp r0, 0\n\
+ beq _0802493E\n\
+ b _08024C38\n\
+ .align 2, 0\n\
+_08024928: .4byte 0x02000000\n\
+_0802492C: .4byte 0x0001609c\n\
+_08024930:\n\
+ cmp r0, 0x2\n\
+ bne _08024936\n\
+ b _08024C04\n\
+_08024936:\n\
+ cmp r0, 0x3\n\
+ bne _0802493C\n\
+ b _08024C30\n\
+_0802493C:\n\
+ b _08024C38\n\
+_0802493E:\n\
+ str r1, [sp]\n\
+ movs r0, 0xB\n\
+ movs r1, 0\n\
+ movs r2, 0x1D\n\
+ movs r3, 0x7\n\
+ bl sub_802BBD4\n\
+ ldr r0, _0802499C @ =gStringVar4\n\
+ ldr r1, _080249A0 @ =gUnknown_08400D9F\n\
+ bl StringCopy\n\
+ adds r5, r0, 0\n\
+ movs r1, 0\n\
+ mov r8, r1\n\
+_0802495A:\n\
+ movs r2, 0\n\
+ mov r9, r2\n\
+ ldr r0, _080249A4 @ =gUnknown_0840165C\n\
+ mov r1, r8\n\
+ lsls r4, r1, 2\n\
+ adds r0, r4, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl StringAppend\n\
+ adds r5, r0, 0\n\
+ ldr r0, _080249A8 @ =0x02000000\n\
+ ldr r2, _080249AC @ =0x00016018\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _080249B0 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ ldr r1, _080249B4 @ =gLevelUpStatBoxStats\n\
+ add r1, r8\n\
+ ldrb r1, [r1]\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ mov r0, r8\n\
+ cmp r0, 0x5\n\
+ bhi _08024A1A\n\
+ ldr r0, _080249B8 @ =_080249BC\n\
+ adds r0, r4, r0\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0802499C: .4byte gStringVar4\n\
+_080249A0: .4byte gUnknown_08400D9F\n\
+_080249A4: .4byte gUnknown_0840165C\n\
+_080249A8: .4byte 0x02000000\n\
+_080249AC: .4byte 0x00016018\n\
+_080249B0: .4byte gPlayerParty\n\
+_080249B4: .4byte gLevelUpStatBoxStats\n\
+_080249B8: .4byte _080249BC\n\
+ .align 2, 0\n\
+_080249BC:\n\
+ .4byte _080249D4\n\
+ .4byte _080249E0\n\
+ .4byte _080249EC\n\
+ .4byte _080249F8\n\
+ .4byte _08024A04\n\
+ .4byte _08024A10\n\
+_080249D4:\n\
+ ldr r0, _080249DC @ =0x02017180\n\
+ ldrh r0, [r0]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_080249DC: .4byte 0x02017180\n\
+_080249E0:\n\
+ ldr r0, _080249E8 @ =0x02017180\n\
+ ldrh r0, [r0, 0x8]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_080249E8: .4byte 0x02017180\n\
+_080249EC:\n\
+ ldr r0, _080249F4 @ =0x02017180\n\
+ ldrh r0, [r0, 0x2]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_080249F4: .4byte 0x02017180\n\
+_080249F8:\n\
+ ldr r0, _08024A00 @ =0x02017180\n\
+ ldrh r0, [r0, 0xA]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_08024A00: .4byte 0x02017180\n\
+_08024A04:\n\
+ ldr r0, _08024A0C @ =0x02017180\n\
+ ldrh r0, [r0, 0x4]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_08024A0C: .4byte 0x02017180\n\
+_08024A10:\n\
+ ldr r0, _08024A54 @ =0x02017180\n\
+ ldrh r0, [r0, 0x6]\n\
+_08024A14:\n\
+ subs r0, r1, r0\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+_08024A1A:\n\
+ lsls r0, r7, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0\n\
+ bge _08024A2C\n\
+ negs r0, r0\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ movs r1, 0x1\n\
+ add r9, r1\n\
+_08024A2C:\n\
+ movs r0, 0xFC\n\
+ strb r0, [r5]\n\
+ movs r0, 0x13\n\
+ strb r0, [r5, 0x1]\n\
+ movs r1, 0x1\n\
+ mov r2, r8\n\
+ ands r1, r2\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ adds r0, 0x5\n\
+ lsls r0, 3\n\
+ adds r0, 0x6\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ beq _08024A5C\n\
+ ldr r1, _08024A58 @ =gUnknown_08400DAC\n\
+ b _08024A5E\n\
+ .align 2, 0\n\
+_08024A54: .4byte 0x02017180\n\
+_08024A58: .4byte gUnknown_08400DAC\n\
+_08024A5C:\n\
+ ldr r1, _08024AA4 @ =gUnknown_08400DAA\n\
+_08024A5E:\n\
+ adds r0, r5, 0\n\
+ bl StringCopy\n\
+ adds r5, r0, 0\n\
+ movs r6, 0xFC\n\
+ strb r6, [r5]\n\
+ movs r4, 0x14\n\
+ strb r4, [r5, 0x1]\n\
+ movs r0, 0x6\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ lsls r1, r7, 16\n\
+ asrs r1, 16\n\
+ adds r0, r5, 0\n\
+ movs r2, 0x1\n\
+ movs r3, 0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ adds r5, r0, 0\n\
+ strb r6, [r5]\n\
+ strb r4, [r5, 0x1]\n\
+ movs r0, 0\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ movs r0, 0x1\n\
+ mov r1, r8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08024AA8\n\
+ movs r0, 0xFE\n\
+ strb r0, [r5]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r5, 0x1]\n\
+ adds r5, 0x1\n\
+ b _08024AB8\n\
+ .align 2, 0\n\
+_08024AA4: .4byte gUnknown_08400DAA\n\
+_08024AA8:\n\
+ strb r6, [r5]\n\
+ movs r0, 0x11\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x8\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ movs r0, 0xFF\n\
+ strb r0, [r5]\n\
+_08024AB8:\n\
+ movs r2, 0x1\n\
+ add r8, r2\n\
+ mov r0, r8\n\
+ cmp r0, 0x5\n\
+ bgt _08024AC4\n\
+ b _0802495A\n\
+_08024AC4:\n\
+ ldr r4, _08024AE4 @ =gUnknown_03004210\n\
+ ldr r1, _08024AE8 @ =gStringVar4\n\
+ adds r2, 0xFF\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r3, 0xC\n\
+ bl InitWindow\n\
+ adds r0, r4, 0\n\
+ bl sub_8002F44\n\
+ ldr r1, _08024AEC @ =0x02000000\n\
+ ldr r2, _08024AF0 @ =0x0001609c\n\
+ adds r1, r2\n\
+ b _08024BEA\n\
+ .align 2, 0\n\
+_08024AE4: .4byte gUnknown_03004210\n\
+_08024AE8: .4byte gStringVar4\n\
+_08024AEC: .4byte 0x02000000\n\
+_08024AF0: .4byte 0x0001609c\n\
+_08024AF4:\n\
+ ldr r0, _08024B94 @ =gMain\n\
+ ldrh r0, [r0, 0x2E]\n\
+ cmp r0, 0\n\
+ bne _08024AFE\n\
+ b _08024C38\n\
+_08024AFE:\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ ldr r0, _08024B98 @ =gStringVar4\n\
+ ldr r1, _08024B9C @ =gUnknown_08400D9F\n\
+ bl StringCopy\n\
+ adds r5, r0, 0\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ mov r9, r0\n\
+ movs r6, 0xFC\n\
+ movs r7, 0x14\n\
+ ldr r1, _08024BA0 @ =0x00016018\n\
+ add r10, r1\n\
+_08024B1C:\n\
+ ldr r1, _08024BA4 @ =gUnknown_0840165C\n\
+ mov r2, r8\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl StringAppend\n\
+ adds r5, r0, 0\n\
+ mov r0, r10\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08024BA8 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ ldr r1, _08024BAC @ =gLevelUpStatBoxStats\n\
+ add r1, r8\n\
+ ldrb r1, [r1]\n\
+ bl GetMonData\n\
+ adds r1, r0, 0\n\
+ strb r6, [r5]\n\
+ movs r0, 0x13\n\
+ strb r0, [r5, 0x1]\n\
+ movs r4, 0x1\n\
+ mov r2, r8\n\
+ ands r4, r2\n\
+ lsls r0, r4, 3\n\
+ adds r0, r4\n\
+ adds r0, 0x5\n\
+ lsls r0, 3\n\
+ adds r0, 0x6\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ strb r6, [r5]\n\
+ strb r7, [r5, 0x1]\n\
+ movs r0, 0x6\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ lsls r1, 16\n\
+ asrs r1, 16\n\
+ adds r0, r5, 0\n\
+ movs r2, 0x1\n\
+ movs r3, 0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ adds r5, r0, 0\n\
+ strb r6, [r5]\n\
+ strb r7, [r5, 0x1]\n\
+ mov r0, r9\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ cmp r4, 0\n\
+ beq _08024BB0\n\
+ movs r0, 0xFE\n\
+ strb r0, [r5]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r5, 0x1]\n\
+ adds r5, 0x1\n\
+ b _08024BC0\n\
+ .align 2, 0\n\
+_08024B94: .4byte gMain\n\
+_08024B98: .4byte gStringVar4\n\
+_08024B9C: .4byte gUnknown_08400D9F\n\
+_08024BA0: .4byte 0x00016018\n\
+_08024BA4: .4byte gUnknown_0840165C\n\
+_08024BA8: .4byte gPlayerParty\n\
+_08024BAC: .4byte gLevelUpStatBoxStats\n\
+_08024BB0:\n\
+ strb r6, [r5]\n\
+ movs r0, 0x11\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x8\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ movs r0, 0xFF\n\
+ strb r0, [r5]\n\
+_08024BC0:\n\
+ movs r1, 0x1\n\
+ add r8, r1\n\
+ mov r2, r8\n\
+ cmp r2, 0x5\n\
+ ble _08024B1C\n\
+ ldr r4, _08024BF4 @ =gUnknown_03004210\n\
+ ldr r1, _08024BF8 @ =gStringVar4\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r3, 0xC\n\
+ bl InitWindow\n\
+ adds r0, r4, 0\n\
+ bl sub_8002F44\n\
+ ldr r1, _08024BFC @ =0x02000000\n\
+ ldr r0, _08024C00 @ =0x0001609c\n\
+ adds r1, r0\n\
+_08024BEA:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _08024C38\n\
+ .align 2, 0\n\
+_08024BF4: .4byte gUnknown_03004210\n\
+_08024BF8: .4byte gStringVar4\n\
+_08024BFC: .4byte 0x02000000\n\
+_08024C00: .4byte 0x0001609c\n\
+_08024C04:\n\
+ ldr r0, _08024C2C @ =gMain\n\
+ ldrh r0, [r0, 0x2E]\n\
+ cmp r0, 0\n\
+ beq _08024C38\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ movs r0, 0xB\n\
+ movs r1, 0\n\
+ movs r2, 0x1D\n\
+ movs r3, 0x7\n\
+ bl sub_802BBD4\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ b _08024C38\n\
+ .align 2, 0\n\
+_08024C2C: .4byte gMain\n\
+_08024C30:\n\
+ ldr r1, _08024C48 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x1\n\
+ str r0, [r1]\n\
+_08024C38:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08024C48: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+
+#endif
+
+static void atk6D_set_sentpokes_values(void)
+{
+ sub_80156DC();
+ gBattlescriptCurrInstr++;
+}
+
+static void atk6E_set_atk_to_player0(void)
+{
+ gBankAttacker = GetBankByPlayerAI(0);
+ gBattlescriptCurrInstr++;
+}
+
+static void atk6F_set_visible(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ EmitSpriteInvisibility(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk70_record_ability(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gBattlescriptCurrInstr += 1; //buggy, should be += 2, one byte for command, one byte for argument...
+}
+
+void sub_8024CEC(void)
+{
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 2;
+ gBattleTextBuff2[2] = (word_2024E82);
+ gBattleTextBuff2[3] = uBYTE1_16(word_2024E82);
+ gBattleTextBuff2[4] = 0xFF;
+}
+
+static void atk71_buffer_move_to_learn(void)
+{
+ sub_8024CEC();
+ gBattlescriptCurrInstr++;
+}
+
+static void atk72_jump_if_can_run_frombattle(void)
+{
+ if (sub_8014AB8(gBank1))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atk73_hp_thresholds(void)
+{
+ u8 opposing_bank;
+ s32 result;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ opposing_bank = gActiveBank ^ 1;
+
+ result = gBattleMons[opposing_bank].hp * 100 / gBattleMons[opposing_bank].maxHP;
+ if (result == 0)
+ result = 1;
+
+ if (result > 69 || !gBattleMons[opposing_bank].hp)
+ BATTLE_STRUCT->hpScale = 0;
+ else if (result > 39)
+ BATTLE_STRUCT->hpScale = 1;
+ else if (result > 9)
+ BATTLE_STRUCT->hpScale = 2;
+ else
+ BATTLE_STRUCT->hpScale = 3;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk74_hp_thresholds2(void)
+{
+ u8 opposing_bank;
+ u8 hp_switchout;
+ s32 result;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ opposing_bank = gActiveBank ^ 1;
+ hp_switchout = ewram[2 * GetBankSide(opposing_bank) + 0x160bc]; //BATTLE_STRUCT->HP_OnSwitchout[GetBankSide(opposing_bank)];
+ result = (hp_switchout - gBattleMons[opposing_bank].hp) * 100 / hp_switchout;
+
+ if (gBattleMons[opposing_bank].hp >= hp_switchout)
+ BATTLE_STRUCT->hpScale = 0;
+ else if (result <= 29)
+ BATTLE_STRUCT->hpScale = 1;
+ else if (result <= 69)
+ BATTLE_STRUCT->hpScale = 2;
+ else
+ BATTLE_STRUCT->hpScale = 3;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk75_8026A58(void)
+{
+ gBankInMenu = gBankAttacker;
+ sub_803E1B0(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1);
+ gBattlescriptCurrInstr += 1;
+}
+
+static void atk76_various(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 2))
+ {
+ case 0:
+ CancelMultiTurnMoves(gActiveBank);
+ break;
+ case 1:
+ {
+ u8 side;
+ gBankAttacker = gBankTarget;
+ side = GetBankSide(gBankAttacker) ^ 1;
+ if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp)
+ gBankTarget = gSideTimer[side].followmeTarget;
+ else
+ gBankTarget = gActiveBank;
+ }
+ break;
+ case 2:
+ gBattleCommunication[0] = CanRunFromBattle();
+ break;
+ case 3:
+ gBankTarget = sub_801B5C0(gCurrentMove, 0);
+ break;
+ case 4:
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ gBattleCommunication[0] = 1;
+ else
+ gBattleCommunication[0] = 0;
+ break;
+ case 5:
+ gSpecialStatuses[gActiveBank].intimidatedPoke = 0;
+ gSpecialStatuses[gActiveBank].traced = 0;
+ break;
+ case 6:
+ {
+ int i;
+ u16* choiced_move;
+ if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID)
+ goto ACTIVE_0;
+ if (gBattlePartyID[2] != BATTLE_STRUCT->expGetterID)
+ break;
+ if (gBattlePartyID[0] == gBattlePartyID[2])
+ {
+ ACTIVE_0:
+ gActiveBank = 0;
+ }
+ else
+ gActiveBank = 2;
+
+ choiced_move = (u16*)(&ewram[gActiveBank * 2 + 0x160e8]);
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gActiveBank].moves[i] == *choiced_move)
+ break;
+ }
+ if (i == 4)
+ *choiced_move = 0;
+ }
+ break;
+ }
+
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk77_setprotect(void) //protect and endure
+{
+ bool8 not_last_turn = 1;
+ u16 last_move = gUnknown_02024C4C[gBankAttacker];
+
+ if (last_move != MOVE_PROTECT && last_move != MOVE_DETECT && last_move != MOVE_ENDURE)
+ gDisableStructs[gBankAttacker].protectUses = 0;
+ if (gCurrentMoveTurn == (gNoOfAllBanks - 1))
+ not_last_turn = 0;
+
+ if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] > Random() && not_last_turn)
+ {
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT)
+ {
+ gProtectStructs[gBankAttacker].protected = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE) //what is else if
+ {
+ gProtectStructs[gBankAttacker].endured = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ gDisableStructs[gBankAttacker].protectUses++;
+ }
+ else
+ {
+ gDisableStructs[gBankAttacker].protectUses = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk78_faintifabilitynotdamp(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (gBattleMons[gBankTarget].ability == ABILITY_DAMP)
+ break;
+ }
+
+ if (gBankTarget == gNoOfAllBanks)
+ {
+ gActiveBank = gBankAttacker;
+ gBattleMoveDamage = gBattleMons[gActiveBank].hp;
+ EmitHealthBarUpdate(0, 0x7FFF);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr++;
+
+ for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (gBankTarget == gBankAttacker)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ break;
+ }
+ }
+ else
+ {
+ gLastUsedAbility = ABILITY_DAMP;
+ RecordAbilityBattle(gBankTarget, gBattleMons[gBankTarget].ability);
+ gBattlescriptCurrInstr = gUnknown_081D9834;
+ }
+}
+
+static void atk79_setatkhptozero(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = gBankAttacker;
+ gBattleMons[gActiveBank].hp = 0;
+ EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk7A_jumpwhiletargetvalid(void) //used by intimidate to loop through all targets
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ for (gBankTarget++; ; gBankTarget++)
+ {
+ if (gBankTarget == gBankAttacker)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ break;
+ }
+
+ if (gBankTarget >= gNoOfAllBanks)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = jump_loc;
+ }
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atk7B_healhalfHP_if_possible(void)
+{
+ u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 5) == 1)
+ gBankTarget = gBankAttacker;
+
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+
+ if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ gBattlescriptCurrInstr = fail_loc;
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk7C_8025508(void)
+{
+ u16 r7 = ewram[gBankAttacker * 2 + 0x160ac] | (ewram[gBankAttacker * 2 + 0x160ad] << 8);
+ u16 r6 = ewram[gBankAttacker * 4 + 0x16100] | (ewram[gBankAttacker * 4 + 0x16101] << 8);
+ u16 r5 = ewram[gBankAttacker * 4 + 0x16102] | (ewram[gBankAttacker * 4 + 0x16103] << 8);
+
+ if (r7 !=0 && r7 != 0xFFFF)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = r7;
+ gBankTarget = sub_801B5C0(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ }
+ else if (r6 != 0 && r5 != 0 && r6 != 0xFFFF && r5 != 0xFFFF)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ if (Random() & 1)
+ gCurrentMove = r6;
+ else
+ gCurrentMove = r5;
+ gBankTarget = sub_801B5C0(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ }
+ else if (r6 != 0 && r6 != 0xFFFF)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = r6;
+ gBankTarget = sub_801B5C0(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ }
+ else if (r5 != 0 && r5 != 0xFFFF)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = r5;
+ gBankTarget = sub_801B5C0(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ }
+ else
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atk7D_set_rain(void)
+{
+ if (gBattleWeather & WEATHER_RAIN_ANY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gBattleWeather = WEATHER_RAIN_TEMPORARY;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gWishFutureKnock.weatherDuration = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk7E_setreflect(void)
+{
+ if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_REFLECT)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_REFLECT;
+ gSideTimer[GetBankIdentity(gBankAttacker) & 1].reflectTimer = 5;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk7F_setseeded(void)
+{
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT || gStatuses3[gBankTarget] & STATUS3_LEECHSEED)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else if (gBattleMons[gBankTarget].type1 == TYPE_GRASS || gBattleMons[gBankTarget].type2 == TYPE_GRASS)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gStatuses3[gBankTarget] |= gBankAttacker;
+ gStatuses3[gBankTarget] |= STATUS3_LEECHSEED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk80_manipulatedamage(void)
+{
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 1))
+ {
+ case 0:
+ gBattleMoveDamage *= -1;
+ break;
+ case 1:
+ gBattleMoveDamage /= 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if ((gBattleMons[gBankTarget].maxHP / 2) < gBattleMoveDamage)
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ break;
+ case 2:
+ gBattleMoveDamage *= 2;
+ break;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk81_setrest(void)
+{
+ u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ gActiveBank = gBankTarget = gBankAttacker;
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1);
+ if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ gBattlescriptCurrInstr = fail_loc;
+ else
+ {
+ if (gBattleMons[gBankTarget].status1 & ((u8)(~STATUS_SLEEP)))
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+
+ gBattleMons[gBankTarget].status1 = 3;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk82_jumpifnotfirstturn(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (gDisableStructs[gBankAttacker].isFirstTurn)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = jump_loc;
+}
+
+static void atk83_nop(void)
+{
+ gBattlescriptCurrInstr++;
+}
+
+bool8 sub_8025A44(u8 bank) //uproar wakeup check
+{
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF) //wtf gamefreak, you should check this only once, not every time in a loop...
+ continue;
+ BATTLE_STRUCT->scriptingActive = i;
+ if (gBankTarget == 0xFF)
+ gBankTarget = i;
+ else if (gBankTarget == i)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ break;
+ }
+ if (i == gNoOfAllBanks)
+ return 0;
+ else
+ return 1;
+}
+
+static void atk84_jump_if_cant_sleep(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ if (sub_8025A44(gBankTarget))
+ gBattlescriptCurrInstr = jump_loc;
+ else if (gBattleMons[gBankTarget].ability == ABILITY_INSOMNIA || gBattleMons[gBankTarget].ability == ABILITY_VITAL_SPIRIT)
+ {
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattlescriptCurrInstr = jump_loc;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk85_stockpile(void)
+{
+ if (gDisableStructs[gBankAttacker].stockpileCounter == 3)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gDisableStructs[gBankAttacker].stockpileCounter++;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 1;
+ gBattleTextBuff1[2] = 1;
+ gBattleTextBuff1[3] = 1;
+ gBattleTextBuff1[4] = gDisableStructs[gBankAttacker].stockpileCounter;
+ gBattleTextBuff1[5] = 0xFF;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk86_stockpiletobasedamage(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ if (gDisableStructs[gBankAttacker].stockpileCounter == 0)
+ {
+ gBattlescriptCurrInstr = jump_loc;
+ }
+ else
+ {
+ if (gBattleCommunication[6] != 1)
+ {
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0,
+ 0, gBankAttacker, gBankTarget)
+ * gDisableStructs[gBankAttacker].stockpileCounter;
+ BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter;
+
+ if (gProtectStructs[gBankAttacker].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+ }
+ gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk87_stockpiletohpheal(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ if (gDisableStructs[gBankAttacker].stockpileCounter == 0)
+ {
+ gBattlescriptCurrInstr = jump_loc;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else if (gBattleMons[gBankAttacker].maxHP == gBattleMons[gBankAttacker].hp)
+ {
+ gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattlescriptCurrInstr = jump_loc;
+ gBankTarget = gBankAttacker;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / (1 << (3 - gDisableStructs[gBankAttacker].stockpileCounter));
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter;
+ gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattlescriptCurrInstr += 5;
+ gBankTarget = gBankAttacker;
+ }
+}
+
+static void atk88_negativedamage(void)
+{
+ gBattleMoveDamage = -(gHP_dealt / 2);
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = -1;
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NONMATCHING
+u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr)
+{
+ u8 r9 = 0;
+ u8 r10 = 0;
+ u8 index;
+ if (flags & 0x40)
+ gActiveBank = gBankAttacker;
+ else
+ gActiveBank = gBankTarget;
+ flags &= ~(0x40);
+ if (flags & 0x80)
+ r9++;
+ flags &= ~(0x80);
+ if (flags & 0x20)
+ r10++;
+ flags &= ~(0x20);
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 5;
+ gBattleTextBuff1[2] = stat;
+ gBattleTextBuff1[3] = 0xFF;
+
+ if ((statchanger << 0x18) < 0) //stat decrease
+ {
+ if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer && !r9 && gCurrentMove != MOVE_CURSE)
+ {
+ if (flags == 1)
+ {
+ if (gSpecialStatuses[gActiveBank].statloweringflag)
+ gBattlescriptCurrInstr = bs_ptr;
+ else
+ {
+ b_movescr_stack_push(bs_ptr);
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_MistProtected;
+ gSpecialStatuses[gActiveBank].statloweringflag = 1;
+ }
+ }
+ return 1;
+ }
+ else if (gCurrentMove != MOVE_CURSE && r10 != 1 && JumpIfMoveAffectedByProtect(0))
+ {
+ gBattlescriptCurrInstr = BattleScript_ButItFailed;
+ return 1;
+ }
+ else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE) && !r9 && gCurrentMove != MOVE_CURSE)
+ {
+ if (flags == 1)
+ {
+ if (gSpecialStatuses[gActiveBank].statloweringflag)
+ gBattlescriptCurrInstr = bs_ptr;
+ else
+ {
+ b_movescr_stack_push(bs_ptr);
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gSpecialStatuses[gActiveBank].statloweringflag = 1;
+ }
+ }
+ return 1;
+ }
+ else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && !r9 && stat == STAT_STAGE_ACC)
+ {
+ if (flags == 1)
+ {
+ b_movescr_stack_push(bs_ptr);
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ }
+ return 1;
+ }
+ else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && !r9 && stat == STAT_STAGE_ATK)
+ {
+ if (flags == 1)
+ {
+ b_movescr_stack_push(bs_ptr);
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ }
+ return 1;
+ }
+ else if (gBattleMons[gActiveBank].ability == ABILITY_SHIELD_DUST && flags == 0)
+ return 1;
+ else //decrease
+ {
+ statchanger = -((statchanger >> 4) & (7));
+ gBattleTextBuff2[0] = 0xFD;
+ index = 1;
+ if (statchanger == -2)
+ {
+ gBattleTextBuff2[1] = 0;
+ gBattleTextBuff2[2] = 0xD3; //harshly
+ gBattleTextBuff2[3] = 0x0;
+ index = 4;
+ }
+ gBattleTextBuff2[index] = 0;
+ index++;
+ gBattleTextBuff2[index] = 0xD4; //fell
+ index++;
+ gBattleTextBuff2[index] = 0;
+ index++;
+ gBattleTextBuff2[index] = 0xFF;
+
+ if (gBattleMons[gActiveBank].statStages[stat] == 0)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ u8 stringID = 0;
+ if (gBankTarget == gActiveBank)
+ stringID = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = stringID;
+ }
+ }
+ }
+ else //stat increase
+ {
+ statchanger = (statchanger >> 4) & (7);
+ gBattleTextBuff2[0] = 0xFD;
+ index = 1;
+ if (statchanger == 2)
+ {
+ gBattleTextBuff2[1] = 0;
+ gBattleTextBuff2[2] = 0xD1; //sharply
+ gBattleTextBuff2[3] = 0x0;
+ index = 4;
+ }
+ gBattleTextBuff2[index] = 0;
+ index++;
+ gBattleTextBuff2[index] = 0xD2; //rose
+ index++;
+ gBattleTextBuff2[index] = 0;
+ index++;
+ gBattleTextBuff2[index] = 0xFF;
+
+ if (gBattleMons[gActiveBank].statStages[stat] == 0xC)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ u8 stringID = 0;
+ if (gBankTarget == gActiveBank)
+ stringID = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = stringID;
+ }
+ }
+
+ gBattleMons[gActiveBank].statStages[stat] += statchanger;
+ if (gBattleMons[gActiveBank].statStages[stat] < 0)
+ gBattleMons[gActiveBank].statStages[stat] = 0;
+ if (gBattleMons[gActiveBank].statStages[stat] > 0xC)
+ gBattleMons[gActiveBank].statStages[stat] = 0xC;
+
+ if (gBattleCommunication[MULTISTRING_CHOOSER] == 2)
+ {
+ if (flags & 1)
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & 1)) //what the actual fuck gamefreak...
+ return 1;
+ }
+ return 0;
+}
+
+#else
+__attribute__((naked))
+u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ mov r8, r3\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r7, r1, 24\n\
+ lsls r2, 24\n\
+ lsrs r5, r2, 24\n\
+ movs r0, 0\n\
+ mov r9, r0\n\
+ mov r10, r0\n\
+ movs r0, 0x40\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08025E54\n\
+ ldr r0, _08025E4C @ =gActiveBank\n\
+ ldr r1, _08025E50 @ =gBankAttacker\n\
+ b _08025E58\n\
+ .align 2, 0\n\
+_08025E4C: .4byte gActiveBank\n\
+_08025E50: .4byte gBankAttacker\n\
+_08025E54:\n\
+ ldr r0, _08025EF8 @ =gActiveBank\n\
+ ldr r1, _08025EFC @ =gBankTarget\n\
+_08025E58:\n\
+ ldrb r1, [r1]\n\
+ strb r1, [r0]\n\
+ movs r0, 0xBF\n\
+ ands r5, r0\n\
+ movs r0, 0x80\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08025E72\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08025E72:\n\
+ movs r0, 0x7F\n\
+ ands r5, r0\n\
+ movs r0, 0x20\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08025E88\n\
+ mov r0, r10\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+_08025E88:\n\
+ movs r0, 0xDF\n\
+ ands r5, r0\n\
+ ldr r1, _08025F00 @ =gBattleTextBuff1\n\
+ movs r4, 0\n\
+ movs r2, 0xFD\n\
+ strb r2, [r1]\n\
+ movs r0, 0x5\n\
+ strb r0, [r1, 0x1]\n\
+ strb r7, [r1, 0x2]\n\
+ movs r3, 0x1\n\
+ negs r3, r3\n\
+ mov r12, r3\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x3]\n\
+ lsls r0, r6, 24\n\
+ cmp r0, 0\n\
+ blt _08025EAC\n\
+ b _080261B0\n\
+_08025EAC:\n\
+ ldr r4, _08025F04 @ =gSideTimer\n\
+ ldr r1, _08025EF8 @ =gActiveBank\n\
+ ldrb r0, [r1]\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r0, [r0, 0x2]\n\
+ cmp r0, 0\n\
+ beq _08025F54\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _08025F54\n\
+ ldr r0, _08025F08 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0xAE\n\
+ beq _08025F84\n\
+ cmp r5, 0x1\n\
+ bne _08025F74\n\
+ ldr r4, _08025F0C @ =gSpecialStatuses\n\
+ ldr r3, _08025EF8 @ =gActiveBank\n\
+ ldrb r0, [r3]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r4\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08025F14\n\
+ ldr r0, _08025F10 @ =gBattlescriptCurrInstr\n\
+ mov r4, r8\n\
+ str r4, [r0]\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08025EF8: .4byte gActiveBank\n\
+_08025EFC: .4byte gBankTarget\n\
+_08025F00: .4byte gBattleTextBuff1\n\
+_08025F04: .4byte gSideTimer\n\
+_08025F08: .4byte gCurrentMove\n\
+_08025F0C: .4byte gSpecialStatuses\n\
+_08025F10: .4byte gBattlescriptCurrInstr\n\
+_08025F14:\n\
+ mov r0, r8\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08025F40 @ =0x02000000\n\
+ ldr r6, _08025F44 @ =gActiveBank\n\
+ ldrb r1, [r6]\n\
+ ldr r2, _08025F48 @ =0x00016003\n\
+ adds r0, r2\n\
+ strb r1, [r0]\n\
+ ldr r1, _08025F4C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08025F50 @ =BattleScript_MistProtected\n\
+ str r0, [r1]\n\
+ ldrb r1, [r6]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x1\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08025F40: .4byte 0x02000000\n\
+_08025F44: .4byte gActiveBank\n\
+_08025F48: .4byte 0x00016003\n\
+_08025F4C: .4byte gBattlescriptCurrInstr\n\
+_08025F50: .4byte BattleScript_MistProtected\n\
+_08025F54:\n\
+ ldr r0, _08025F78 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0xAE\n\
+ beq _08025F84\n\
+ mov r3, r10\n\
+ cmp r3, 0x1\n\
+ beq _08025F84\n\
+ movs r0, 0\n\
+ bl JumpIfMoveAffectedByProtect\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08025F84\n\
+ ldr r1, _08025F7C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08025F80 @ =BattleScript_ButItFailed\n\
+ str r0, [r1]\n\
+_08025F74:\n\
+ movs r0, 0x1\n\
+ b _080262A4\n\
+ .align 2, 0\n\
+_08025F78: .4byte gCurrentMove\n\
+_08025F7C: .4byte gBattlescriptCurrInstr\n\
+_08025F80: .4byte BattleScript_ButItFailed\n\
+_08025F84:\n\
+ ldr r2, _08025FCC @ =gBattleMons\n\
+ ldr r1, _08025FD0 @ =gActiveBank\n\
+ ldrb r3, [r1]\n\
+ movs r4, 0x58\n\
+ adds r0, r3, 0\n\
+ muls r0, r4\n\
+ adds r0, r2\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ mov r10, r2\n\
+ cmp r0, 0x1D\n\
+ beq _08025FA0\n\
+ cmp r0, 0x49\n\
+ bne _08026040\n\
+_08025FA0:\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ bne _08026040\n\
+ ldr r0, _08025FD4 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0xAE\n\
+ beq _08026040\n\
+ cmp r5, 0x1\n\
+ bne _08025F74\n\
+ ldr r4, _08025FD8 @ =gSpecialStatuses\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08025FE0\n\
+ ldr r0, _08025FDC @ =gBattlescriptCurrInstr\n\
+ mov r1, r8\n\
+ str r1, [r0]\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08025FCC: .4byte gBattleMons\n\
+_08025FD0: .4byte gActiveBank\n\
+_08025FD4: .4byte gCurrentMove\n\
+_08025FD8: .4byte gSpecialStatuses\n\
+_08025FDC: .4byte gBattlescriptCurrInstr\n\
+_08025FE0:\n\
+ mov r0, r8\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08026028 @ =0x02000000\n\
+ ldr r2, _0802602C @ =gActiveBank\n\
+ ldrb r1, [r2]\n\
+ ldr r3, _08026030 @ =0x00016003\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+ ldr r1, _08026034 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08026038 @ =BattleScript_AbilityNoStatLoss\n\
+ str r0, [r1]\n\
+ ldr r1, _0802603C @ =gLastUsedAbility\n\
+ ldrb r0, [r2]\n\
+ movs r6, 0x58\n\
+ muls r0, r6\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ ldr r0, _0802602C @ =gActiveBank\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x1\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08026028: .4byte 0x02000000\n\
+_0802602C: .4byte gActiveBank\n\
+_08026030: .4byte 0x00016003\n\
+_08026034: .4byte gBattlescriptCurrInstr\n\
+_08026038: .4byte BattleScript_AbilityNoStatLoss\n\
+_0802603C: .4byte gLastUsedAbility\n\
+_08026040:\n\
+ ldr r1, _08026090 @ =gActiveBank\n\
+ ldrb r0, [r1]\n\
+ movs r4, 0x58\n\
+ muls r0, r4\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x33\n\
+ bne _080260A8\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _080260A8\n\
+ cmp r7, 0x6\n\
+ bne _080260A8\n\
+ cmp r5, 0x1\n\
+ bne _08025F74\n\
+ mov r0, r8\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08026094 @ =0x02000000\n\
+ ldr r3, _08026090 @ =gActiveBank\n\
+ ldrb r1, [r3]\n\
+ ldr r6, _08026098 @ =0x00016003\n\
+ adds r0, r6\n\
+ strb r1, [r0]\n\
+ ldr r1, _0802609C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080260A0 @ =BattleScript_AbilityNoSpecificStatLoss\n\
+ str r0, [r1]\n\
+ ldr r1, _080260A4 @ =gLastUsedAbility\n\
+ ldrb r0, [r3]\n\
+ muls r0, r4\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08026090: .4byte gActiveBank\n\
+_08026094: .4byte 0x02000000\n\
+_08026098: .4byte 0x00016003\n\
+_0802609C: .4byte gBattlescriptCurrInstr\n\
+_080260A0: .4byte BattleScript_AbilityNoSpecificStatLoss\n\
+_080260A4: .4byte gLastUsedAbility\n\
+_080260A8:\n\
+ ldr r1, _080260FC @ =gActiveBank\n\
+ ldrb r0, [r1]\n\
+ movs r4, 0x58\n\
+ muls r0, r4\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x34\n\
+ bne _08026114\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _08026114\n\
+ cmp r7, 0x1\n\
+ bne _08026114\n\
+ cmp r5, 0x1\n\
+ beq _080260CA\n\
+ b _08025F74\n\
+_080260CA:\n\
+ mov r0, r8\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08026100 @ =0x02000000\n\
+ ldr r3, _080260FC @ =gActiveBank\n\
+ ldrb r1, [r3]\n\
+ ldr r6, _08026104 @ =0x00016003\n\
+ adds r0, r6\n\
+ strb r1, [r0]\n\
+ ldr r1, _08026108 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0802610C @ =BattleScript_AbilityNoSpecificStatLoss\n\
+ str r0, [r1]\n\
+ ldr r1, _08026110 @ =gLastUsedAbility\n\
+ ldrb r0, [r3]\n\
+ muls r0, r4\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_080260FC: .4byte gActiveBank\n\
+_08026100: .4byte 0x02000000\n\
+_08026104: .4byte 0x00016003\n\
+_08026108: .4byte gBattlescriptCurrInstr\n\
+_0802610C: .4byte BattleScript_AbilityNoSpecificStatLoss\n\
+_08026110: .4byte gLastUsedAbility\n\
+_08026114:\n\
+ ldr r0, _080261A0 @ =gActiveBank\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x13\n\
+ bne _0802612C\n\
+ cmp r5, 0\n\
+ bne _0802612C\n\
+ b _08025F74\n\
+_0802612C:\n\
+ lsls r0, r6, 24\n\
+ asrs r0, 28\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ negs r0, r0\n\
+ lsls r0, 24\n\
+ ldr r3, _080261A4 @ =gBattleTextBuff2\n\
+ movs r4, 0\n\
+ movs r1, 0xFD\n\
+ strb r1, [r3]\n\
+ movs r2, 0x1\n\
+ lsrs r6, r0, 24\n\
+ asrs r0, 24\n\
+ subs r1, 0xFF\n\
+ cmp r0, r1\n\
+ bne _08026156\n\
+ strb r4, [r3, 0x1]\n\
+ movs r0, 0xD3\n\
+ strb r0, [r3, 0x2]\n\
+ strb r4, [r3, 0x3]\n\
+ movs r2, 0x4\n\
+_08026156:\n\
+ adds r0, r2, r3\n\
+ strb r4, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2, r3\n\
+ movs r0, 0xD4\n\
+ strb r0, [r1]\n\
+ adds r2, 0x1\n\
+ adds r0, r2, r3\n\
+ strb r4, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2, r3\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1]\n\
+ ldr r1, _080261A0 @ =gActiveBank\n\
+ ldrb r2, [r1]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r7, r0\n\
+ mov r1, r10\n\
+ adds r1, 0x18\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0\n\
+ beq _08026206\n\
+ movs r1, 0\n\
+ ldr r0, _080261A8 @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ ldr r3, _080261AC @ =gBattleCommunication\n\
+ mov r8, r3\n\
+ cmp r0, r2\n\
+ bne _0802619A\n\
+ movs r1, 0x1\n\
+_0802619A:\n\
+ mov r4, r8\n\
+ strb r1, [r4, 0x5]\n\
+ b _08026234\n\
+ .align 2, 0\n\
+_080261A0: .4byte gActiveBank\n\
+_080261A4: .4byte gBattleTextBuff2\n\
+_080261A8: .4byte gBankTarget\n\
+_080261AC: .4byte gBattleCommunication\n\
+_080261B0:\n\
+ asrs r6, r0, 28\n\
+ movs r0, 0x7\n\
+ ands r6, r0\n\
+ ldr r3, _08026210 @ =gBattleTextBuff2\n\
+ strb r2, [r3]\n\
+ movs r2, 0x1\n\
+ cmp r6, 0x2\n\
+ bne _080261CA\n\
+ strb r4, [r3, 0x1]\n\
+ movs r0, 0xD1\n\
+ strb r0, [r3, 0x2]\n\
+ strb r4, [r3, 0x3]\n\
+ movs r2, 0x4\n\
+_080261CA:\n\
+ adds r0, r2, r3\n\
+ strb r4, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2, r3\n\
+ movs r0, 0xD2\n\
+ strb r0, [r1]\n\
+ adds r2, 0x1\n\
+ adds r0, r2, r3\n\
+ strb r4, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2, r3\n\
+ ldrb r0, [r1]\n\
+ mov r2, r12\n\
+ orrs r0, r2\n\
+ strb r0, [r1]\n\
+ ldr r2, _08026214 @ =gBattleMons\n\
+ ldr r4, _08026218 @ =gActiveBank\n\
+ ldrb r3, [r4]\n\
+ movs r0, 0x58\n\
+ muls r0, r3\n\
+ adds r0, r7, r0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x18\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ mov r10, r2\n\
+ cmp r0, 0xC\n\
+ bne _08026220\n\
+_08026206:\n\
+ ldr r1, _0802621C @ =gBattleCommunication\n\
+ movs r0, 0x2\n\
+ strb r0, [r1, 0x5]\n\
+ mov r8, r1\n\
+ b _08026234\n\
+ .align 2, 0\n\
+_08026210: .4byte gBattleTextBuff2\n\
+_08026214: .4byte gBattleMons\n\
+_08026218: .4byte gActiveBank\n\
+_0802621C: .4byte gBattleCommunication\n\
+_08026220:\n\
+ movs r1, 0\n\
+ ldr r0, _080262B4 @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ ldr r2, _080262B8 @ =gBattleCommunication\n\
+ mov r8, r2\n\
+ cmp r0, r3\n\
+ bne _08026230\n\
+ movs r1, 0x1\n\
+_08026230:\n\
+ mov r3, r8\n\
+ strb r1, [r3, 0x5]\n\
+_08026234:\n\
+ ldr r2, _080262BC @ =gActiveBank\n\
+ ldrb r0, [r2]\n\
+ movs r4, 0x58\n\
+ adds r1, r0, 0\n\
+ muls r1, r4\n\
+ adds r1, r7, r1\n\
+ mov r3, r10\n\
+ adds r3, 0x18\n\
+ adds r1, r3\n\
+ lsls r0, r6, 24\n\
+ asrs r0, 24\n\
+ ldrb r6, [r1]\n\
+ adds r0, r6\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r2]\n\
+ muls r0, r4\n\
+ adds r0, r7, r0\n\
+ adds r1, r0, r3\n\
+ movs r0, 0\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0\n\
+ bge _08026264\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+_08026264:\n\
+ ldr r1, _080262BC @ =gActiveBank\n\
+ ldrb r0, [r1]\n\
+ muls r0, r4\n\
+ adds r0, r7, r0\n\
+ adds r1, r0, r3\n\
+ movs r0, 0\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0xC\n\
+ ble _0802627A\n\
+ movs r0, 0xC\n\
+ strb r0, [r1]\n\
+_0802627A:\n\
+ mov r2, r8\n\
+ ldrb r0, [r2, 0x5]\n\
+ cmp r0, 0x2\n\
+ bne _080262A2\n\
+ movs r3, 0x1\n\
+ ands r3, r5\n\
+ cmp r3, 0\n\
+ beq _08026294\n\
+ ldr r0, _080262C0 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x1\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_08026294:\n\
+ mov r4, r8\n\
+ ldrb r0, [r4, 0x5]\n\
+ cmp r0, 0x2\n\
+ bne _080262A2\n\
+ cmp r3, 0\n\
+ bne _080262A2\n\
+ b _08025F74\n\
+_080262A2:\n\
+ movs r0, 0\n\
+_080262A4:\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080262B4: .4byte gBankTarget\n\
+_080262B8: .4byte gBattleCommunication\n\
+_080262BC: .4byte gActiveBank\n\
+_080262C0: .4byte gBattleMoveFlags\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atk89_statbuffchange(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ if (ChangeStatBuffs(BATTLE_STRUCT->statChanger & 0xF0, BATTLE_STRUCT->statChanger & 0xF, BSScriptRead8(gBattlescriptCurrInstr + 1), jump_loc) == 0)
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk8A_normalisebuffs(void) //haze
+{
+ int i, j;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ gBattleMons[i].statStages[j] = 6;
+ }
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk8B_setbide(void)
+{
+ gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gBankAttacker] = gCurrentMove;
+ gTakenDmg[gBankAttacker] = 0;
+ gBattleMons[gBankAttacker].status2 |= (STATUS2_BIDE - 0x100); //2 turns
+ gBattlescriptCurrInstr++;
+}
+
+static void atk8C_confuseifrepeatingattackends(void)
+{
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_LOCK_CONFUSE))
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x75;
+ gBattlescriptCurrInstr++;
+}
+
+static void atk8D_setmultihit_counter(void)
+{
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1))
+ gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gMultiHitCounter = Random() & 3;
+ if (gMultiHitCounter > 1)
+ gMultiHitCounter = (Random() & 3) + 2;
+ else
+ gMultiHitCounter += 2;
+ }
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk8E_prepare_multihit(void)
+{
+ ewram[0x160e0] = 0xFD;
+ ewram[0x160e1] = 1;
+ ewram[0x160e2] = 1;
+ ewram[0x160e3] = 1;
+ ewram[0x160e4] = 0;
+ ewram[0x160e5] = 0xFF;
+ gBattlescriptCurrInstr++;
+}
+
+static bool8 sub_80264C0(void)
+{
+ if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ {
+ ewram[gBankTarget + 0x16064] = gBattlePartyID[gBankTarget];
+ }
+ else
+ {
+ u16 random = Random() & 0xFF;
+ if ((u32)((random * (gBattleMons[gBankAttacker].level + gBattleMons[gBankTarget].level) >> 8) + 1) <= (gBattleMons[gBankTarget].level / 4))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ return 0;
+ }
+ ewram[gBankTarget + 0x16064] = gBattlePartyID[gBankTarget];
+ }
+ gBattlescriptCurrInstr = gUnknown_081D90FC;
+ return 1;
+}
+
+static void atk8F_forcerandomswitch(void)
+{
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER))
+ {
+ u8 i;
+ struct Pokemon* party;
+ u8 valid;
+ u8 val;
+ if (!GetBankSide(gBankTarget))
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ valid = 0;
+ val = 0;
+ if (sub_803FBFC(sub_803FC34(gBankTarget)) == 1)
+ val = 3;
+ for (i = val; i < val + 3; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&party[i], MON_DATA_IS_EGG)
+ && GetMonData(&party[i], MON_DATA_HP) != 0)
+ valid++;
+ }
+ }
+ else
+ {
+ valid = 0;
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&party[i], MON_DATA_IS_EGG)
+ && GetMonData(&party[i], MON_DATA_HP) != 0)
+ valid++;
+ }
+ }
+
+ if ((valid < 2 && (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
+ || (valid < 3 && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else if (sub_80264C0())
+ {
+#define MON_CAN_BATTLE(mon) (((GetMonData(mon, MON_DATA_SPECIES) && GetMonData(mon, MON_DATA_IS_EGG) != 1 && GetMonData(mon, MON_DATA_HP))))
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ do
+ {
+ val = Random() % 3;
+ if (sub_803FBFC(sub_803FC34(gBankTarget)) == 1)
+ i = val + 3;
+ else
+ i = val;
+ } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i]));
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ do
+ {
+ i = Random() % 6;
+ } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i]));
+ }
+ else
+ {
+ do
+ {
+ i = Random() % 6;
+ } while (i == gBattlePartyID[gBankTarget] || !MON_CAN_BATTLE(&party[i]));
+ }
+ }
+ ewram[gBankTarget + 0x16068] = i;
+ if (!IsLinkDoubleBattle())
+ sub_8012258(gBankTarget);
+ sub_8094B6C(gBankTarget, i, 0);
+ sub_8094B6C(gBankTarget ^ 2, i, 1);
+#undef MON_CAN_BATTLE
+ }
+ }
+ else
+ {
+ sub_80264C0();
+ }
+}
+
+static void atk90_conversion_type_change(void)
+{
+ //randomly changes user's type to one of its moves' type
+ u8 valid_moves = 0;
+ u8 checked_move;
+ u8 move_type;
+ while (valid_moves < 4)
+ {
+ if (gBattleMons[gBankAttacker].moves[valid_moves] == 0)
+ break;
+ valid_moves++;
+ }
+
+ for (checked_move = 0; checked_move < valid_moves; checked_move++)
+ {
+ move_type = gBattleMoves[gBattleMons[gBankAttacker].moves[checked_move]].type;
+ if (move_type == TYPE_MYSTERY)
+ {
+ if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)
+ move_type = TYPE_GHOST;
+ else
+ move_type = TYPE_NORMAL;
+ }
+ if (move_type != gBattleMons[gBankAttacker].type1 && move_type != gBattleMons[gBankAttacker].type2)
+ break;
+ }
+
+ if (checked_move == valid_moves)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ do
+ {
+
+ while ((checked_move = Random() & 3) >= valid_moves);
+
+ move_type = gBattleMoves[gBattleMons[gBankAttacker].moves[checked_move]].type;
+ if (move_type == TYPE_MYSTERY)
+ {
+ if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)
+ move_type = TYPE_GHOST;
+ else
+ move_type = TYPE_NORMAL;
+ }
+ } while (move_type == gBattleMons[gBankAttacker].type1 || move_type == gBattleMons[gBankAttacker].type2);
+
+ gBattleMons[gBankAttacker].type1 = move_type;
+ gBattleMons[gBankAttacker].type2 = move_type;
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 3;
+ gBattleTextBuff1[2] = move_type;
+ gBattleTextBuff1[3] = 0xFF;
+
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk91_givepaydaymoney(void)
+{
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gPaydayMoney)
+ {
+ sub_80B79B8(&gSaveBlock1.money, gPaydayMoney * BATTLE_STRUCT->moneyMultiplier);
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 1;
+ gBattleTextBuff1[2] = 2;
+ gBattleTextBuff1[3] = 5;
+ gBattleTextBuff1[4] = gPaydayMoney;
+ gBattleTextBuff1[5] = uBYTE1_16(gPaydayMoney);
+ gBattleTextBuff1[6] = 0xFF;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gUnknown_081D95DB;
+ }
+ else
+ gBattlescriptCurrInstr++;
+}
+
+static void atk92_setlightscreen(void)
+{
+ if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN;
+ gSideTimer[GetBankIdentity(gBankAttacker) & 1].lightscreenTimer = 5;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NOTMATCHING
+static void atk93_ko_move(void)
+{
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemBattle(gBankTarget, hold_effect);
+ gSpecialStatuses[gBankTarget].focusBanded = 1;
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_STURDY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gLastUsedAbility = ABILITY_STURDY;
+ gBattlescriptCurrInstr = x;
+ RecordAbilityBattle(gBankTarget, ABILITY_STURDY);
+ return;
+ }
+
+ if (!(gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS))
+ {
+ u16 to_cmp = gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level + gBattleMoves[gCurrentMove].accuracy;
+ if (Random() % 0x64 + 1 < to_cmp || gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level)
+ {
+ goto MOVESTATUS_MISSED_LABEL;
+ }
+ }
+ else
+ {
+ if (gDisableStructs[gBankTarget].bankWithSureHit != gBankAttacker || gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level)
+ {
+
+ }
+ }
+
+MOVESTATUS_MISSED_LABEL:
+ gBattleTypeFlags |= MOVESTATUS_MISSED;
+ if (gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#else
+__attribute((naked))
+static void atk93_ko_move(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ ldr r7, _08026BA8 @ =gBattleMons\n\
+ ldr r6, _08026BAC @ =gBankTarget\n\
+ ldrb r2, [r6]\n\
+ movs r5, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r5\n\
+ adds r1, r0, r7\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _08026BB4\n\
+ ldr r1, _08026BB0 @ =gEnigmaBerries\n\
+ lsls r0, r2, 3\n\
+ subs r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r4, [r0, 0x7]\n\
+ ldrb r6, [r0, 0x1A]\n\
+ b _08026BCE\n\
+ .align 2, 0\n\
+_08026BA8: .4byte gBattleMons\n\
+_08026BAC: .4byte gBankTarget\n\
+_08026BB0: .4byte gEnigmaBerries\n\
+_08026BB4:\n\
+ ldrh r0, [r1, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ ldrb r0, [r6]\n\
+ muls r0, r5\n\
+ adds r0, r7\n\
+ ldrh r0, [r0, 0x2E]\n\
+ bl ItemId_GetHoldEffectParam\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+_08026BCE:\n\
+ ldr r1, _08026C4C @ =gStringBank\n\
+ ldr r5, _08026C50 @ =gBankTarget\n\
+ ldrb r0, [r5]\n\
+ strb r0, [r1]\n\
+ cmp r4, 0x27\n\
+ bne _08026C0C\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x64\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, r6\n\
+ bcs _08026C0C\n\
+ ldrb r0, [r5]\n\
+ movs r1, 0x27\n\
+ bl RecordItemBattle\n\
+ ldr r2, _08026C54 @ =gSpecialStatuses\n\
+ ldrb r1, [r5]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x80\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_08026C0C:\n\
+ ldr r0, _08026C58 @ =gBattleMons\n\
+ mov r8, r0\n\
+ ldr r1, _08026C50 @ =gBankTarget\n\
+ ldrb r2, [r1]\n\
+ movs r6, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r6\n\
+ mov r3, r8\n\
+ adds r5, r0, r3\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x20\n\
+ ldrb r3, [r0]\n\
+ mov r10, r8\n\
+ cmp r3, 0x5\n\
+ bne _08026C6C\n\
+ ldr r2, _08026C5C @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r0, _08026C60 @ =gLastUsedAbility\n\
+ strb r3, [r0]\n\
+ ldr r1, _08026C64 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08026C68 @ =gUnknown_081D9826\n\
+ str r0, [r1]\n\
+ ldr r1, _08026C50 @ =gBankTarget\n\
+ ldrb r0, [r1]\n\
+ movs r1, 0x5\n\
+ bl RecordAbilityBattle\n\
+ b _08026E40\n\
+ .align 2, 0\n\
+_08026C4C: .4byte gStringBank\n\
+_08026C50: .4byte gBankTarget\n\
+_08026C54: .4byte gSpecialStatuses\n\
+_08026C58: .4byte gBattleMons\n\
+_08026C5C: .4byte gBattleMoveFlags\n\
+_08026C60: .4byte gLastUsedAbility\n\
+_08026C64: .4byte gBattlescriptCurrInstr\n\
+_08026C68: .4byte gUnknown_081D9826\n\
+_08026C6C:\n\
+ ldr r1, _08026CE0 @ =gStatuses3\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08026CF4\n\
+ ldr r1, _08026CE4 @ =gBattleMoves\n\
+ ldr r0, _08026CE8 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ lsls r2, r0, 1\n\
+ adds r2, r0\n\
+ lsls r2, 2\n\
+ adds r2, r1\n\
+ ldr r7, _08026CEC @ =gBankAttacker\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ add r0, r10\n\
+ adds r0, 0x2A\n\
+ ldrb r0, [r0]\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ ldrb r1, [r1]\n\
+ subs r0, r1\n\
+ ldrb r2, [r2, 0x3]\n\
+ adds r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x64\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ adds r0, 0x1\n\
+ cmp r0, r4\n\
+ bge _08026CDC\n\
+ ldrb r0, [r7]\n\
+ adds r1, r0, 0\n\
+ muls r1, r6\n\
+ add r1, r10\n\
+ adds r1, 0x2A\n\
+ ldr r2, _08026CF0 @ =gBankTarget\n\
+ ldrb r0, [r2]\n\
+ muls r0, r6\n\
+ add r0, r10\n\
+ adds r0, 0x2A\n\
+ ldrb r1, [r1]\n\
+ movs r4, 0x1\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bcs _08026D20\n\
+_08026CDC:\n\
+ mov r10, r8\n\
+ b _08026DE0\n\
+ .align 2, 0\n\
+_08026CE0: .4byte gStatuses3\n\
+_08026CE4: .4byte gBattleMoves\n\
+_08026CE8: .4byte gCurrentMove\n\
+_08026CEC: .4byte gBankAttacker\n\
+_08026CF0: .4byte gBankTarget\n\
+_08026CF4:\n\
+ ldr r0, _08026D4C @ =gDisableStructs\n\
+ lsls r1, r2, 3\n\
+ subs r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldr r2, _08026D50 @ =gBankAttacker\n\
+ ldrb r0, [r1, 0x15]\n\
+ movs r4, 0\n\
+ ldrb r3, [r2]\n\
+ cmp r0, r3\n\
+ bne _08026D20\n\
+ ldrb r0, [r2]\n\
+ muls r0, r6\n\
+ add r0, r10\n\
+ adds r0, 0x2A\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ ldrb r0, [r0]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08026D20\n\
+ movs r4, 0x1\n\
+_08026D20:\n\
+ cmp r4, 0\n\
+ beq _08026DE0\n\
+ ldr r0, _08026D54 @ =gProtectStructs\n\
+ ldr r1, _08026D58 @ =gBankTarget\n\
+ ldrb r2, [r1]\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 30\n\
+ cmp r0, 0\n\
+ bge _08026D64\n\
+ ldr r1, _08026D5C @ =gBattleMoveDamage\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ add r0, r10\n\
+ ldrh r0, [r0, 0x28]\n\
+ subs r0, 0x1\n\
+ str r0, [r1]\n\
+ ldr r2, _08026D60 @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x40\n\
+ b _08026DC6\n\
+ .align 2, 0\n\
+_08026D4C: .4byte gDisableStructs\n\
+_08026D50: .4byte gBankAttacker\n\
+_08026D54: .4byte gProtectStructs\n\
+_08026D58: .4byte gBankTarget\n\
+_08026D5C: .4byte gBattleMoveDamage\n\
+_08026D60: .4byte gBattleMoveFlags\n\
+_08026D64:\n\
+ ldr r0, _08026DA0 @ =gSpecialStatuses\n\
+ lsls r1, r2, 2\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1]\n\
+ lsrs r0, 7\n\
+ cmp r0, 0\n\
+ beq _08026DB4\n\
+ ldr r1, _08026DA4 @ =gBattleMoveDamage\n\
+ movs r3, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r3\n\
+ add r0, r10\n\
+ ldrh r0, [r0, 0x28]\n\
+ subs r0, 0x1\n\
+ str r0, [r1]\n\
+ ldr r2, _08026DA8 @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x80\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r1, _08026DAC @ =gLastUsedItem\n\
+ ldr r2, _08026DB0 @ =gBankTarget\n\
+ ldrb r0, [r2]\n\
+ muls r0, r3\n\
+ add r0, r10\n\
+ ldrh r0, [r0, 0x2E]\n\
+ strh r0, [r1]\n\
+ b _08026DCA\n\
+ .align 2, 0\n\
+_08026DA0: .4byte gSpecialStatuses\n\
+_08026DA4: .4byte gBattleMoveDamage\n\
+_08026DA8: .4byte gBattleMoveFlags\n\
+_08026DAC: .4byte gLastUsedItem\n\
+_08026DB0: .4byte gBankTarget\n\
+_08026DB4:\n\
+ ldr r1, _08026DD4 @ =gBattleMoveDamage\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ add r0, r10\n\
+ ldrh r0, [r0, 0x28]\n\
+ str r0, [r1]\n\
+ ldr r2, _08026DD8 @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x10\n\
+_08026DC6:\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+_08026DCA:\n\
+ ldr r1, _08026DDC @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ b _08026E40\n\
+ .align 2, 0\n\
+_08026DD4: .4byte gBattleMoveDamage\n\
+_08026DD8: .4byte gBattleMoveFlags\n\
+_08026DDC: .4byte gBattlescriptCurrInstr\n\
+_08026DE0:\n\
+ ldr r2, _08026E10 @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r0, _08026E14 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ movs r2, 0x58\n\
+ adds r1, r0, 0\n\
+ muls r1, r2\n\
+ add r1, r10\n\
+ adds r1, 0x2A\n\
+ ldr r3, _08026E18 @ =gBankTarget\n\
+ ldrb r0, [r3]\n\
+ muls r0, r2\n\
+ add r0, r10\n\
+ adds r0, 0x2A\n\
+ ldrb r1, [r1]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bcc _08026E20\n\
+ ldr r1, _08026E1C @ =gBattleCommunication\n\
+ movs r0, 0\n\
+ b _08026E24\n\
+ .align 2, 0\n\
+_08026E10: .4byte gBattleMoveFlags\n\
+_08026E14: .4byte gBankAttacker\n\
+_08026E18: .4byte gBankTarget\n\
+_08026E1C: .4byte gBattleCommunication\n\
+_08026E20:\n\
+ ldr r1, _08026E50 @ =gBattleCommunication\n\
+ movs r0, 0x1\n\
+_08026E24:\n\
+ strb r0, [r1, 0x5]\n\
+ ldr r3, _08026E54 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+_08026E40:\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08026E50: .4byte gBattleCommunication\n\
+_08026E54: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+#endif // NOTMATCHING
+
+static void atk94_gethalfcurrentenemyhp(void) //super fang
+{
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattlescriptCurrInstr++;
+}
+
+static void atk95_setsandstorm(void)
+{
+ if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gBattleWeather = WEATHER_SANDSTORM_TEMPORARY;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ gWishFutureKnock.weatherDuration = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk96_weatherdamage(void)
+{
+ if (WEATHER_HAS_EFFECT)
+ {
+ if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ {
+ if (gBattleMons[gBankAttacker].type1 != TYPE_ROCK && gBattleMons[gBankAttacker].type1 != TYPE_STEEL && gBattleMons[gBankAttacker].type1 != TYPE_GROUND
+ && gBattleMons[gBankAttacker].type2 != TYPE_ROCK && gBattleMons[gBankAttacker].type2 != TYPE_STEEL && gBattleMons[gBankAttacker].type2 != TYPE_GROUND
+ && gBattleMons[gBankAttacker].ability != ABILITY_SAND_VEIL && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER))
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ }
+ else
+ {
+ gBattleMoveDamage = 0;
+ }
+ }
+ if (gBattleWeather & WEATHER_HAIL)
+ {
+ if (gBattleMons[gBankAttacker].type1 != TYPE_ICE && gBattleMons[gBankAttacker].type2 != TYPE_ICE && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER))
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ }
+ else
+ {
+ gBattleMoveDamage = 0;
+ }
+ }
+ }
+ else
+ gBattleMoveDamage = 0;
+
+ if (gAbsentBankFlags & gBitTable[gBankAttacker])
+ gBattleMoveDamage = 0;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk97_try_infatuation(void)
+{
+ struct Pokemon *attacker, *target;
+ u16 atk_species, def_species;
+ u32 atk_pid, def_pid;
+ if (!GetBankSide(gBankAttacker))
+ attacker = &gPlayerParty[gBattlePartyID[gBankAttacker]];
+ else
+ attacker = &gEnemyParty[gBattlePartyID[gBankAttacker]];
+
+ if (!GetBankSide(gBankTarget))
+ target = &gPlayerParty[gBattlePartyID[gBankTarget]];
+ else
+ target = &gEnemyParty[gBattlePartyID[gBankTarget]];
+
+ atk_species = GetMonData(attacker, MON_DATA_SPECIES);
+ atk_pid = GetMonData(attacker, MON_DATA_PERSONALITY);
+
+ def_species = GetMonData(target, MON_DATA_SPECIES);
+ def_pid = GetMonData(target, MON_DATA_PERSONALITY);
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_OBLIVIOUS)
+ {
+ gBattlescriptCurrInstr = BattleScript_ObliviousPreventsAttraction;
+ gLastUsedAbility = ABILITY_OBLIVIOUS;
+ RecordAbilityBattle(gBankTarget, ABILITY_OBLIVIOUS);
+ }
+ else
+ {
+ if (GetGenderFromSpeciesAndPersonality(atk_species, atk_pid) == GetGenderFromSpeciesAndPersonality(def_species, def_pid)
+ || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE || gBattleMons[gBankTarget].status2 & STATUS2_INFATUATION || GetGenderFromSpeciesAndPersonality(atk_species, atk_pid) == 0xFF
+ || GetGenderFromSpeciesAndPersonality(def_species, def_pid) == 0xFF)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gBattleMons[gBankTarget].status2 |= (gBitTable[gBankAttacker] << 16);
+ gBattlescriptCurrInstr += 5;
+ }
+ }
+}
+
+static void atk98_status_icon_update(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) != 4)
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+ }
+ else
+ {
+ gActiveBank = gBankAttacker;
+ if (!(gAbsentBankFlags & gBitTable[gActiveBank]))
+ {
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (!(gAbsentBankFlags & gBitTable[gActiveBank]))
+ {
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk99_setmist(void)
+{
+ if (gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer)
+ {
+ gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer = 5;
+ gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_MIST;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk9A_set_focusenergy(void)
+{
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gBattleMons[gBankAttacker].status2 |= STATUS2_FOCUS_ENERGY;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk9B_transformdataexecution(void)
+{
+ gUnknown_02024BE8 = 0xFFFF;
+ gBattlescriptCurrInstr++;
+ if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
+ {
+ gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ u32 i; s32 j;
+ u8 *atk_data, *def_data;
+ gBattleMons[gBankAttacker].status2 |= STATUS2_TRANSFORMED;
+ gDisableStructs[gBankAttacker].disabledMove = 0;
+ gDisableStructs[gBankAttacker].disableTimer1 = 0;
+ gDisableStructs[gBankAttacker].unk0 = gBattleMons[gBankTarget].personality;
+ gDisableStructs[gBankAttacker].unk18_b = 0;
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 6;
+ gBattleTextBuff1[2] = (gBattleMons[gBankTarget].species);
+ gBattleTextBuff1[3] = uBYTE1_16(gBattleMons[gBankTarget].species);
+ gBattleTextBuff1[4] = 0xFF;
+
+ atk_data = (u8*)(&gBattleMons[gBankAttacker]);
+ def_data = (u8*)(&gBattleMons[gBankTarget]);
+
+ for (i = 0; i < 0x24; i++)
+ atk_data[i] = def_data[i];
+
+ for (j = 0; j < 4; j++)
+ {
+ if (gBattleMoves[gBattleMons[gBankAttacker].moves[j]].pp < 5)
+ gBattleMons[gBankAttacker].pp[j] = gBattleMoves[gBattleMons[gBankAttacker].moves[j]].pp;
+ else
+ gBattleMons[gBankAttacker].pp[j] = 5;
+ }
+
+ gActiveBank = gBankAttacker;
+ EmitResetActionMoveSelection(0, 2);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+}
+
+static void atk9C_set_substitute(void)
+{
+ u32 hp = gBattleMons[gBankAttacker].maxHP / 4;
+ if (gBattleMons[gBankAttacker].maxHP / 4 == 0)
+ hp = 1;
+ if (gBattleMons[gBankAttacker].hp <= hp)
+ {
+ gBattleMoveDamage = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMons[gBankAttacker].status2 |= STATUS2_SUBSTITUTE;
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED);
+ gDisableStructs[gBankAttacker].substituteHP = gBattleMoveDamage;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static bool8 IsMoveUncopyable(u16 move)
+{
+ int i;
+ for (i = 0; sUnknown_081FACFE[i] != 0xFFFE && sUnknown_081FACFE[i] != move; i++) {}
+ return (sUnknown_081FACFE[i] != 0xFFFE);
+}
+
+static void atk9D_copyattack(void)
+{
+ gUnknown_02024BE8 = 0xFFFF;
+ if (IsMoveUncopyable(gLastUsedMove[gBankTarget]) || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED
+ || gLastUsedMove[gBankTarget] == 0 || gLastUsedMove[gBankTarget] == 0xFFFF)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankAttacker].moves[i] == gLastUsedMove[gBankTarget])
+ break;
+ }
+ if (i == 4)
+ {
+ gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastUsedMove[gBankTarget];
+ if (gBattleMoves[gLastUsedMove[gBankTarget]].pp < 5)
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMove[gBankTarget]].pp;
+ else
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5;
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = gLastUsedMove[gBankTarget];
+ gBattleTextBuff1[3] = uBYTE1_16(gLastUsedMove[gBankTarget]);
+ gBattleTextBuff1[4] = 0xFF;
+
+ gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos];
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+#ifdef NONMATCHING
+static void atk9E_metronome(void)
+{
+ // sUnknown_081FACFE
+ int i;
+ do
+ {
+ while ((gCurrentMove = (Random() & 0x1FF) + 1) > 0x162);
+ for (i = 0; sUnknown_081FACFE[i] != gCurrentMove && sUnknown_081FACFE[i] != 0xFFFF; i++);
+ } while (sUnknown_081FACFE[i] != 0xFFFF);
+
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ gBankTarget = sub_801B5C0(gCurrentMove, 0);
+}
+
+#else
+__attribute__((naked))
+static void atk9E_metronome(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r7, _08027938 @ =gCurrentMove\n\
+ movs r6, 0xB1\n\
+ lsls r6, 1\n\
+ ldr r5, _0802793C @ =sUnknown_081FACFE\n\
+ ldr r0, _08027940 @ =gBattlescriptCurrInstr\n\
+ mov r8, r0\n\
+_080278CA:\n\
+ bl Random\n\
+ ldr r2, _08027944 @ =0x000001ff\n\
+ adds r1, r2, 0\n\
+ ands r0, r1\n\
+ adds r0, 0x1\n\
+ strh r0, [r7]\n\
+ cmp r0, r6\n\
+ bhi _080278CA\n\
+ movs r0, 0x3\n\
+_080278DE:\n\
+ subs r0, 0x1\n\
+ cmp r0, 0\n\
+ bge _080278DE\n\
+ ldr r4, _08027938 @ =gCurrentMove\n\
+ ldrh r2, [r4]\n\
+ ldr r3, _08027948 @ =0x0000ffff\n\
+ subs r0, r5, 0x2\n\
+_080278EC:\n\
+ adds r0, 0x2\n\
+ ldrh r1, [r0]\n\
+ cmp r1, r2\n\
+ beq _080278F8\n\
+ cmp r1, r3\n\
+ bne _080278EC\n\
+_080278F8:\n\
+ ldr r0, _08027948 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ bne _080278CA\n\
+ ldr r2, _0802794C @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08027950 @ =0xfffffbff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r3, _08027954 @ =gBattleScriptsEffectsTable\n\
+ ldr r2, _08027958 @ =gBattleMoves\n\
+ ldrh r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ ldrh r0, [r4]\n\
+ movs r1, 0\n\
+ bl sub_801B5C0\n\
+ ldr r1, _0802795C @ =gBankTarget\n\
+ strb r0, [r1]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08027938: .4byte gCurrentMove\n\
+_0802793C: .4byte sUnknown_081FACFE\n\
+_08027940: .4byte gBattlescriptCurrInstr\n\
+_08027944: .4byte 0x000001ff\n\
+_08027948: .4byte 0x0000ffff\n\
+_0802794C: .4byte gHitMarker\n\
+_08027950: .4byte 0xfffffbff\n\
+_08027954: .4byte gBattleScriptsEffectsTable\n\
+_08027958: .4byte gBattleMoves\n\
+_0802795C: .4byte gBankTarget\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atk9F_dmgtolevel(void)
+{
+ gBattleMoveDamage = gBattleMons[gBankAttacker].level;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkA0_psywavedamageeffect(void)
+{
+ s32 rand_dmg;
+ while ((rand_dmg = (Random() & 0xF)) > 0xA);
+ rand_dmg *= 10;
+ gBattleMoveDamage = gBattleMons[gBankAttacker].level * (rand_dmg + 50) / 100;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkA1_counterdamagecalculator(void)
+{
+ u8 atk_side = GetBankSide(gBankAttacker);
+ u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].physicalBank);
+ if (gProtectStructs[gBankAttacker].physicalDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].physicalBank].hp)
+ {
+ gBattleMoveDamage = gProtectStructs[gBankAttacker].physicalDmg * 2;
+ if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp)
+ gBankTarget = gSideTimer[def_side].followmeTarget;
+ else
+ gBankTarget = gProtectStructs[gBankAttacker].physicalBank;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA2_mirrorcoatdamagecalculator(void) //a copy of atkA1 with the physical -> special field changes
+{
+ u8 atk_side = GetBankSide(gBankAttacker);
+ u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].specialBank);
+ if (gProtectStructs[gBankAttacker].specialDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].specialBank].hp)
+ {
+ gBattleMoveDamage = gProtectStructs[gBankAttacker].specialDmg * 2;
+ if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp)
+ gBankTarget = gSideTimer[def_side].followmeTarget;
+ else
+ gBankTarget = gProtectStructs[gBankAttacker].specialBank;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA3_disablelastusedattack(void)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankTarget].moves[i] == gLastUsedMove[gBankTarget])
+ break;
+ }
+ if (gDisableStructs[gBankTarget].disabledMove == 0 && i != 4 && gBattleMons[gBankTarget].pp[i] != 0)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = gBattleMons[gBankTarget].moves[i];
+ gBattleTextBuff1[3] = uBYTE1_16(gBattleMons[gBankTarget].moves[i]);
+ gBattleTextBuff1[4] = 0xFF;
+
+ gDisableStructs[gBankTarget].disabledMove = gBattleMons[gBankTarget].moves[i];
+ gDisableStructs[gBankTarget].disableTimer1 = (Random() & 3) + 2;
+ gDisableStructs[gBankTarget].disableTimer2 = gDisableStructs[gBankTarget].disableTimer1; //that's interesting
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA4_setencore(void)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankTarget].moves[i] == gLastUsedMove[gBankTarget])
+ break;
+ }
+ if (gLastUsedMove[gBankTarget] == MOVE_STRUGGLE || gLastUsedMove[gBankTarget] == MOVE_ENCORE || gLastUsedMove[gBankTarget] == MOVE_MIRROR_MOVE)
+ i = 4;
+ if (gDisableStructs[gBankTarget].encoredMove == 0 && i != 4 && gBattleMons[gBankTarget].pp[i] != 0)
+ {
+ gDisableStructs[gBankTarget].encoredMove = gBattleMons[gBankTarget].moves[i];
+ gDisableStructs[gBankTarget].encoredMovePos = i;
+ gDisableStructs[gBankTarget].encoreTimer1 = (Random() & 3) + 3;
+ gDisableStructs[gBankTarget].encoreTimer2 = gDisableStructs[gBankTarget].encoreTimer1;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA5_painsplitdmgcalc(void)
+{
+ if (!(gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE))
+ {
+ s32 hp_diff = (gBattleMons[gBankAttacker].hp + gBattleMons[gBankTarget].hp) / 2;
+ s32 to_store = gBattleMoveDamage = gBattleMons[gBankTarget].hp - hp_diff;
+ BATTLE_STRUCT->unk16014 = sBYTE0_32(to_store);
+ BATTLE_STRUCT->unk16015 = sBYTE1_32(to_store);
+ BATTLE_STRUCT->unk16016 = sBYTE2_32(to_store);
+ BATTLE_STRUCT->unk16017 = sBYTE3_32(to_store);
+
+ gBattleMoveDamage = gBattleMons[gBankAttacker].hp - hp_diff;
+ gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF;
+
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#ifdef NONMATCHING
+static void atkA6_settypetorandomresistance(void)
+{
+ if (gMoveHitWith[gBankAttacker] == 0 || gMoveHitWith[gBankAttacker] == 0xFFFF || (IsTwoTurnsMove(gMoveHitWith[gBankAttacker]) && !gProtectStructs[gBankAttacker].physicalDmg && !gProtectStructs[gBankAttacker].specialDmg))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ int type = 0, rands = 0;
+ do
+ {
+ while (((type = (Random() & 0x7F)) > 0x70));
+ type *= 3;
+ if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1])
+ {
+ gBattleMons[gBankAttacker].type1 = type;
+ gBattleMons[gBankAttacker].type2 = type;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 3;
+ gBattleTextBuff1[2] = type;
+ gBattleTextBuff1[3] = 0xFF;
+ gBattlescriptCurrInstr += 5;
+ return;
+ }
+ rands++;
+ } while (rands <= 999);
+
+ type = 0, rands = 0;
+ do
+ {
+ if (gTypeEffectiveness[type] == 0xFE || gTypeEffectiveness[type] != 0xFF)
+ {
+ if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1])
+ {
+ gBattleMons[gBankAttacker].type1 = gTypeEffectiveness[rands + 1];
+ gBattleMons[gBankAttacker].type2 = gTypeEffectiveness[rands + 1];
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 3;
+ gBattleTextBuff1[2] = gTypeEffectiveness[rands + 1];
+ gBattleTextBuff1[3] = 0xFF;
+ gBattlescriptCurrInstr += 5;
+ return;
+ }
+ }
+ type += 3, rands += 3;
+ } while (rands < 336);
+
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+#else
+__attribute__((naked))
+static void atkA6_settypetorandomresistance(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ ldr r1, _08027FA8 @ =gMoveHitWith\n\
+ ldr r4, _08027FAC @ =gBankAttacker\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r2, r0, r1\n\
+ ldrh r1, [r2]\n\
+ cmp r1, 0\n\
+ beq _08027F8C\n\
+ ldr r0, _08027FB0 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ beq _08027F8C\n\
+ ldrh r0, [r2]\n\
+ bl IsTwoTurnsMove\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08028024\n\
+ ldr r2, _08027FB4 @ =gProtectStructs\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 4\n\
+ adds r0, r2, 0x4\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08028024\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08028024\n\
+_08027F8C:\n\
+ ldr r3, _08027FB8 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+ b _08028110\n\
+ .align 2, 0\n\
+_08027FA8: .4byte gMoveHitWith\n\
+_08027FAC: .4byte gBankAttacker\n\
+_08027FB0: .4byte 0x0000ffff\n\
+_08027FB4: .4byte gProtectStructs\n\
+_08027FB8: .4byte gBattlescriptCurrInstr\n\
+_08027FBC:\n\
+ mov r0, r12\n\
+ strb r5, [r0]\n\
+ mov r1, r10\n\
+ ldrb r0, [r1]\n\
+ muls r0, r2\n\
+ adds r0, r7\n\
+ adds r0, 0x22\n\
+ strb r5, [r0]\n\
+ ldr r1, _08027FE0 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x3\n\
+ strb r0, [r1, 0x1]\n\
+ strb r5, [r1, 0x2]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x3]\n\
+ ldr r1, _08027FE4 @ =gBattlescriptCurrInstr\n\
+ b _08028012\n\
+ .align 2, 0\n\
+_08027FE0: .4byte gBattleTextBuff1\n\
+_08027FE4: .4byte gBattlescriptCurrInstr\n\
+_08027FE8:\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ adds r0, r3\n\
+ ldrb r2, [r0]\n\
+ strb r2, [r4]\n\
+ mov r4, r10\n\
+ ldrb r0, [r4]\n\
+ muls r0, r6\n\
+ ldr r7, _0802801C @ =gBattleMons\n\
+ adds r0, r7\n\
+ adds r0, 0x22\n\
+ strb r2, [r0]\n\
+ ldr r1, _08028020 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x3\n\
+ strb r0, [r1, 0x1]\n\
+ strb r2, [r1, 0x2]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x3]\n\
+ mov r1, r12\n\
+_08028012:\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ b _08028110\n\
+ .align 2, 0\n\
+_0802801C: .4byte gBattleMons\n\
+_08028020: .4byte gBattleTextBuff1\n\
+_08028024:\n\
+ movs r4, 0\n\
+ mov r8, r4\n\
+ movs r7, 0x7F\n\
+ mov r9, r7\n\
+_0802802C:\n\
+ bl Random\n\
+ mov r4, r9\n\
+ ands r4, r0\n\
+ cmp r4, 0x70\n\
+ bhi _0802802C\n\
+ lsls r0, r4, 1\n\
+ adds r4, r0, r4\n\
+ ldr r6, _08028120 @ =gTypeEffectiveness\n\
+ adds r3, r4, r6\n\
+ ldr r1, _08028124 @ =gUnknown_02024C44\n\
+ ldr r2, _08028128 @ =gBankAttacker\n\
+ ldrb r5, [r2]\n\
+ lsls r0, r5, 1\n\
+ adds r0, r1\n\
+ ldrb r1, [r3]\n\
+ mov r10, r2\n\
+ ldrh r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _08028088\n\
+ adds r0, r4, 0x2\n\
+ adds r0, r6\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x5\n\
+ bhi _08028088\n\
+ ldr r7, _0802812C @ =gBattleMons\n\
+ movs r2, 0x58\n\
+ adds r0, r5, 0\n\
+ muls r0, r2\n\
+ adds r3, r0, r7\n\
+ movs r0, 0x21\n\
+ adds r0, r3\n\
+ mov r12, r0\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r6\n\
+ ldrb r5, [r0]\n\
+ mov r1, r12\n\
+ ldrb r0, [r1]\n\
+ adds r1, r5, 0\n\
+ cmp r0, r1\n\
+ beq _08028088\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r1\n\
+ bne _08027FBC\n\
+_08028088:\n\
+ movs r7, 0x1\n\
+ add r8, r7\n\
+ ldr r0, _08028130 @ =0x000003e7\n\
+ cmp r8, r0\n\
+ ble _0802802C\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ ldr r1, _08028134 @ =gBattlescriptCurrInstr\n\
+ mov r12, r1\n\
+ ldr r3, _08028120 @ =gTypeEffectiveness\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r3\n\
+ mov r9, r0\n\
+ adds r5, r3, 0\n\
+_080280A4:\n\
+ ldrb r1, [r5]\n\
+ cmp r1, 0xFF\n\
+ bgt _080280AE\n\
+ cmp r1, 0xFE\n\
+ bge _080280E8\n\
+_080280AE:\n\
+ mov r4, r10\n\
+ ldrb r2, [r4]\n\
+ lsls r0, r2, 1\n\
+ ldr r7, _08028124 @ =gUnknown_02024C44\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _080280E8\n\
+ ldrb r0, [r5, 0x2]\n\
+ cmp r0, 0x5\n\
+ bhi _080280E8\n\
+ movs r6, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r6\n\
+ ldr r1, _0802812C @ =gBattleMons\n\
+ adds r2, r0, r1\n\
+ adds r4, r2, 0\n\
+ adds r4, 0x21\n\
+ ldrb r0, [r4]\n\
+ mov r7, r9\n\
+ ldrb r1, [r7]\n\
+ cmp r0, r1\n\
+ beq _080280E8\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r1\n\
+ beq _080280E8\n\
+ b _08027FE8\n\
+_080280E8:\n\
+ adds r5, 0x3\n\
+ movs r0, 0x3\n\
+ add r8, r0\n\
+ ldr r0, _08028138 @ =0x0000014f\n\
+ cmp r8, r0\n\
+ bls _080280A4\n\
+ mov r1, r12\n\
+ ldr r2, [r1]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ mov r4, r12\n\
+ str r1, [r4]\n\
+_08028110:\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08028120: .4byte gTypeEffectiveness\n\
+_08028124: .4byte gUnknown_02024C44\n\
+_08028128: .4byte gBankAttacker\n\
+_0802812C: .4byte gBattleMons\n\
+_08028130: .4byte 0x000003e7\n\
+_08028134: .4byte gBattlescriptCurrInstr\n\
+_08028138: .4byte 0x0000014f\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atkA7_setalwayshitflag(void)
+{
+ gStatuses3[gBankTarget] &= ~(STATUS3_ALWAYS_HITS);
+ gStatuses3[gBankTarget] |= 0x10;
+ gDisableStructs[gBankTarget].bankWithSureHit = gBankAttacker;
+ gBattlescriptCurrInstr++;
+}
+
+struct move_pp
+{
+ u16 move[4];
+ u8 pp[4];
+ u8 ppBonuses;
+};
+
+static void atkA8_copymovepermanently(void)
+{
+ gUnknown_02024BE8 = 0xFFFF;
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) && gUnknown_02024C2C[gBankTarget] != MOVE_STRUGGLE && gUnknown_02024C2C[gBankTarget] != 0 && gUnknown_02024C2C[gBankTarget] != 0xFFFF && gUnknown_02024C2C[gBankTarget] != MOVE_SKETCH)
+ {
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH)
+ continue;
+ if (gBattleMons[gBankAttacker].moves[i] == gUnknown_02024C2C[gBankTarget])
+ break;
+ }
+ if (i != 4) //sketch fail
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else //sketch worked
+ {
+ struct move_pp moves_data;
+ gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknown_02024C2C[gBankTarget];
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknown_02024C2C[gBankTarget]].pp;
+ gActiveBank = gBankAttacker;
+ for (i = 0; i < 4; i++)
+ {
+ moves_data.move[i] = gBattleMons[gBankAttacker].moves[i];
+ moves_data.pp[i] = gBattleMons[gBankAttacker].pp[i];
+ }
+ moves_data.ppBonuses = gBattleMons[gBankAttacker].ppBonuses;
+ EmitSetAttributes(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct move_pp), &moves_data);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = gUnknown_02024C2C[gBankTarget];
+ gBattleTextBuff1[3] = gUnknown_02024C2C[gBankTarget] >> 8;
+ gBattleTextBuff1[4] = 0xFF;
+ gBattlescriptCurrInstr += 5;
+ }
+ }
+ else //sketch fail
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static bool8 IsTwoTurnsMove(u16 move)
+{
+ u8 effect = gBattleMoves[move].effect;
+ if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE)
+ return 1;
+ else
+ return 0;
+}
+
+static bool8 IsMoveUnchoosable(u16 move)
+{
+ if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME)
+ return 1;
+ else
+ return 0;
+}
+
+static u8 AttacksThisTurn(u8 bank, u16 move) //Note: returns 1 if it's a charging turn, otherwise 2
+{
+ //first argument is unused
+ u8 effect;
+ if (gBattleMoves[move].effect == EFFECT_SOLARBEAM && (gBattleWeather & WEATHER_SUN_ANY))
+ return 2;
+ effect = gBattleMoves[move].effect;
+ if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE)
+ {
+ if ((gHitMarker & HITMARKER_x8000000))
+ return 1;
+ }
+ return 2;
+}
+
+static void atkA9_sleeptalk_choose_move(void)
+{
+ u8 unusable_moves = 0;
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (IsMoveUnchoosable(gBattleMons[gBankAttacker].moves[i]) || gBattleMons[gBankAttacker].moves[i] == MOVE_FOCUS_PUNCH
+ || gBattleMons[gBankAttacker].moves[i] == MOVE_UPROAR || IsTwoTurnsMove(gBattleMons[gBankAttacker].moves[i]))
+ unusable_moves |= gBitTable[i];
+ }
+ unusable_moves = sub_8015A98(gBankAttacker, unusable_moves, 0xFD);
+ if (unusable_moves == 0xF) //all 4 moves cannot be chosen
+ gBattlescriptCurrInstr += 5;
+ else //at least one move can be chosen
+ {
+ u32 random_pos;
+ do
+ {
+ random_pos = Random() & 3;
+ } while ((gBitTable[random_pos] & unusable_moves));
+
+ gRandomMove = gBattleMons[gBankAttacker].moves[random_pos];
+ gCurrMovePos = random_pos;
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gBankTarget = sub_801B5C0(gRandomMove, 0);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkAA_set_destinybond(void)
+{
+ gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND;
+ gBattlescriptCurrInstr++;
+}
+
+static void DestinyBondFlagUpdate(void)
+{
+ u8 atk_side = GetBankSide(gBankAttacker);
+ u8 def_side = GetBankSide(gBankTarget);
+ if (gBattleMons[gBankTarget].status2 & STATUS2_DESTINY_BOND && atk_side != def_side && !(gHitMarker & HITMARKER_GRUDGE))
+ gHitMarker |= HITMARKER_DESTINYBOND;
+}
+
+static void atkAB_DestinyBondFlagUpdate(void)
+{
+ DestinyBondFlagUpdate();
+ gBattlescriptCurrInstr++;
+}
+
+static void atkAC_remaininghptopower(void)
+{
+ s32 hp_fraction = GetScaledHPFraction(gBattleMons[gBankAttacker].hp, gBattleMons[gBankAttacker].maxHP, 48);
+ int i;
+ for (i = 0; i < 12; i += 2)
+ {
+ if (hp_fraction <= sUnknown_081FAD26[i])
+ break;
+ }
+ gDynamicBasePower = sUnknown_081FAD26[i + 1];
+ gBattlescriptCurrInstr++;
+}
+
+static void atkAD_spite_ppreduce(void)
+{
+ if (gLastUsedMove[gBankTarget] != 0 && gLastUsedMove[gBankTarget] != 0xFFFF && !(gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE))
+ {
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gLastUsedMove[gBankTarget] == gBattleMons[gBankTarget].moves[i])
+ break;
+ }
+ if (i != 4 && gBattleMons[gBankTarget].pp[i] > 1)
+ {
+ s32 lost_pp = (Random() & 3) + 2;
+ if (gBattleMons[gBankTarget].pp[i] < lost_pp)
+ lost_pp = gBattleMons[gBankTarget].pp[i];
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = gLastUsedMove[gBankTarget];
+ gBattleTextBuff1[3] = gLastUsedMove[gBankTarget] >> 8;
+ gBattleTextBuff1[4] = 0xFF;
+ ConvertIntToDecimalStringN(gBattleTextBuff2, lost_pp, 0, 1);
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 1;
+ gBattleTextBuff2[2] = 1;
+ gBattleTextBuff2[3] = 1;
+ gBattleTextBuff2[4] = lost_pp;
+ gBattleTextBuff2[5] = 0xFF;
+
+ gBattleMons[gBankTarget].pp[i] -= lost_pp;
+ gActiveBank = gBankTarget;
+ if (!(gDisableStructs[gActiveBank].unk18_b & gBitTable[i])
+ && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ {
+ EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 5;
+ if (gBattleMons[gBankTarget].pp[i] == 0)
+ CancelMultiTurnMoves(gBankTarget);
+ return;
+ }
+ }
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkAE_heal_party_status(void)
+{
+ register u32 zero2 asm("r4") = 0;
+ u32 zero = zero2;
+ u8 to_heal = 0;
+ if (gCurrentMove == MOVE_HEAL_BELL)
+ {
+ struct Pokemon* party;
+ int i;
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ if (GetBankSide(gBankAttacker) == 0)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF)
+ {
+ gBattleMons[gBankAttacker].status1 = 0;
+ }
+ else
+ {
+ RecordAbilityBattle(gBankAttacker, gBattleMons[gBankAttacker].ability);
+ gBattleCommunication[MULTISTRING_CHOOSER] |= 1;
+ }
+
+ gActiveBank = BATTLE_STRUCT->scriptingActive = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ {
+ if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF)
+ {
+ gBattleMons[gActiveBank].status1 = 0;
+ }
+ else
+ {
+ RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability);
+ gBattleCommunication[MULTISTRING_CHOOSER] |= 2;
+ }
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&party[i], MON_DATA_SPECIES2);
+ u8 abilityBit = GetMonData(&party[i], MON_DATA_ALT_ABILITY);
+ if (species != 0 && species != SPECIES_EGG)
+ {
+ u8 ability;
+ if (gBattlePartyID[gBankAttacker] == i)
+ ability = gBattleMons[gBankAttacker].ability;
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[gActiveBank] == i && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ ability = gBattleMons[gActiveBank].ability;
+ else
+ ability = GetAbilityBySpecies(species, abilityBit);
+ if (ability != ABILITY_SOUNDPROOF)
+ to_heal |= (1 << i);
+ }
+ }
+ }
+ else //Aromatherapy
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ to_heal = 0x3F;
+ gBattleMons[gBankAttacker].status1 = zero2;
+
+ gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ gBattleMons[gActiveBank].status1 = 0;
+
+ }
+ //missing check?
+ gActiveBank = gBankAttacker;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, to_heal, 4, &zero);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkAF_cursetarget(void)
+{
+ if (gBattleMons[gBankTarget].status2 & STATUS2_CURSED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gBattleMons[gBankTarget].status2 |= STATUS2_CURSED;
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkB0_set_spikes(void)
+{
+ u8 side = GetBankSide(gBankAttacker) ^ 1;
+ if (gSideTimer[side].spikesAmount == 3)
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gSideAffecting[side] |= SIDE_STATUS_SPIKES;
+ gSideTimer[side].spikesAmount++;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkB1_set_foresight(void)
+{
+ gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkB2_setperishsong(void)
+{
+ int not_affected_pokes = 0, i;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gStatuses3[i] & STATUS3_PERISH_SONG || gBattleMons[i].ability == ABILITY_SOUNDPROOF)
+ not_affected_pokes++;
+ else
+ {
+ gStatuses3[i] |= STATUS3_PERISH_SONG;
+ gDisableStructs[i].perishSong1 = 3;
+ gDisableStructs[i].perishSong2 = 3;
+ }
+ }
+
+ sub_80153D0(gBankAttacker);
+ if (not_affected_pokes == gNoOfAllBanks)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atkB3_rolloutdamagecalculation(void)
+{
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ {
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattlescriptCurrInstr = BattleScript_1D6F74;
+ }
+ else
+ {
+ int i;
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) //first hit
+ {
+ gDisableStructs[gBankAttacker].rolloutTimer1 = 5;
+ gDisableStructs[gBankAttacker].rolloutTimer2 = 5;
+ gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gBankAttacker] = gCurrentMove;
+ }
+ if (--gDisableStructs[gBankAttacker].rolloutTimer1 == 0)
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
+
+ gDynamicBasePower = gBattleMoves[gCurrentMove].power;
+ for (i = 1; i < (5 - gDisableStructs[gBankAttacker].rolloutTimer1); i++)
+ gDynamicBasePower *= 2;
+
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_DEFENSE_CURL)
+ gDynamicBasePower *= 2;
+
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atkB4_jumpifconfusedandstatmaxed(void)
+{
+ if (gBattleMons[gBankTarget].status2 & STATUS2_CONFUSION && gBattleMons[gBankTarget].statStages[BSScriptRead8(gBattlescriptCurrInstr + 1)] == 0xC)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atkB5_furycuttercalc(void)
+{
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ {
+ gDisableStructs[gBankAttacker].furyCutterCounter = 0;
+ gBattlescriptCurrInstr = BattleScript_1D6F74;
+ }
+ else
+ {
+ int i;
+
+ if (gDisableStructs[gBankAttacker].furyCutterCounter != 5)
+ gDisableStructs[gBankAttacker].furyCutterCounter++;
+
+ gDynamicBasePower = gBattleMoves[gCurrentMove].power;
+ for (i = 1; i < gDisableStructs[gBankAttacker].furyCutterCounter; i++)
+ gDynamicBasePower *= 2;
+
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atkB6_happinesstodamagecalculation(void)
+{
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN)
+ gDynamicBasePower = 10 * (gBattleMons[gBankAttacker].friendship) / 25;
+ else //EFFECT_FRUSTRATION
+ gDynamicBasePower = 10 * (255 - gBattleMons[gBankAttacker].friendship) / 25;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkB7_presentdamagecalculation(void)
+{
+ s32 rand = Random() & 0xFF;
+ if (rand < 102)
+ gDynamicBasePower = 40;
+ else if (rand < 178)
+ gDynamicBasePower = 80;
+ else if (rand < 204)
+ gDynamicBasePower = 120;
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ }
+ if (rand < 204)
+ gBattlescriptCurrInstr = BattleScript_1D6F44;
+ else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp)
+ gBattlescriptCurrInstr = BattleScript_1D83B5;
+ else
+ {
+ //gBattleMoveFlags &= ~(MOVESTATUS_NOTAFFECTED); only in Emerald
+ gBattlescriptCurrInstr = BattleScript_1D839B;
+ }
+}
+
+static void atkB8_set_safeguard(void)
+{
+ if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_SAFEGUARD)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_SAFEGUARD;
+ gSideTimer[GetBankIdentity(gBankAttacker) & 1].safeguardTimer = 5;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkB9_magnitudedamagecalculation(void)
+{
+ s32 magnitude = Random() % 100;
+ if (magnitude < 5)
+ {
+ gDynamicBasePower = 10;
+ magnitude = 4;
+ }
+ else if (magnitude < 15)
+ {
+ gDynamicBasePower = 30;
+ magnitude = 5;
+ }
+ else if (magnitude < 35)
+ {
+ gDynamicBasePower = 50;
+ magnitude = 6;
+ }
+ else if (magnitude < 65)
+ {
+ gDynamicBasePower = 70;
+ magnitude = 7;
+ }
+ else if (magnitude < 85)
+ {
+ gDynamicBasePower = 90;
+ magnitude = 8;
+ }
+ else if (magnitude < 95)
+ {
+ gDynamicBasePower = 110;
+ magnitude = 9;
+ }
+ else
+ {
+ gDynamicBasePower = 150;
+ magnitude = 10;
+ }
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 1;
+ gBattleTextBuff1[2] = 1;
+ gBattleTextBuff1[3] = 2;
+ gBattleTextBuff1[4] = magnitude;
+ gBattleTextBuff1[5] = 0xFF;
+
+ for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (gBankTarget == gBankAttacker)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget])) //a valid target was found
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkBA_jumpifnopursuitswitchdmg(void)
+{
+ if (gMultiHitCounter == 1)
+ {
+ if (GetBankSide(gBankAttacker) == 0)
+ gBankTarget = GetBankByPlayerAI(1);
+ else
+ gBankTarget = GetBankByPlayerAI(0);
+ }
+ else
+ {
+ if (GetBankSide(gBankAttacker) == 0)
+ gBankTarget = GetBankByPlayerAI(3);
+ else
+ gBankTarget = GetBankByPlayerAI(2);
+ }
+
+ if (gActionForBanks[gBankTarget] == 0 && gBankAttacker == ewram[gBankTarget + 0x16010] && !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE))
+ && gBattleMons[gBankAttacker].hp && !gDisableStructs[gBankTarget].truantCounter && gChosenMovesByBanks[gBankTarget] == MOVE_PURSUIT)
+ {
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gTurnOrder[i] == gBankTarget)
+ gUnknown_02024A76[i] = 11;
+ }
+ gCurrentMove = MOVE_PURSUIT;
+ gBattlescriptCurrInstr += 5;
+ BATTLE_STRUCT->animTurn = 1;
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkBB_setsunny(void)
+{
+ if (gBattleWeather & WEATHER_SUN_ANY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gBattleWeather = WEATHER_SUN_TEMPORARY;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gWishFutureKnock.weatherDuration = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkBC_maxattackhalvehp(void) //belly drum
+{
+ u32 half_hp = gBattleMons[gBankAttacker].maxHP / 2;
+ if (!(gBattleMons[gBankAttacker].maxHP / 2))
+ half_hp = 1;
+
+ if (gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] < 12 && gBattleMons[gBankAttacker].hp > half_hp)
+ {
+ gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] = 12;
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkBD_copyfoestats(void) //psych up
+{
+ int i;
+ for (i = 0; i < 8; i++)
+ {
+ gBattleMons[gBankAttacker].statStages[i] = gBattleMons[gBankTarget].statStages[i];
+ }
+ gBattlescriptCurrInstr += 5; //why not 1? possible unused fail possibility?
+}
+
+static void atkBE_breakfree(void) //rapid spin
+{
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_WRAPPED)
+ {
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED);
+ gBankTarget = ewram[gBankAttacker + 0x16020];
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = ewram[gBankAttacker * 2 + 0x16004];
+ gBattleTextBuff1[3] = ewram[gBankAttacker * 2 + 0x16005];
+ gBattleTextBuff1[4] = 0xFF;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_WrapFree;
+ }
+ else if (gStatuses3[gBankAttacker] & STATUS3_LEECHSEED)
+ {
+ gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED);
+ gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED_BANK);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_LeechSeedFree;
+ }
+ else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES)
+ {
+ gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES);
+ gSideTimer[GetBankSide(gBankAttacker)].spikesAmount = 0;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_SpikesFree;
+ }
+ else
+ gBattlescriptCurrInstr++;
+}
+
+static void atkBF_set_defense_curl(void)
+{
+ gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC0_recoverbasedonsunlight(void)
+{
+ gBankTarget = gBankAttacker;
+ if (gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP)
+ {
+ if (!gBattleWeather || !WEATHER_HAS_EFFECT)
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2;
+ else if (gBattleWeather & WEATHER_SUN_ANY)
+ gBattleMoveDamage = 20 * gBattleMons[gBankAttacker].maxHP / 30;
+ else //not sunny weather
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+__attribute__((naked))
+static void atkC1_hidden_power(void)
+{
+ asm(".syntax unified\n\
+push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ ldr r2, _08029894 @ =gBattleMons\n\
+ ldr r0, _08029898 @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ adds r4, r1, 0\n\
+ muls r4, r0\n\
+ adds r4, r2\n\
+ ldrb r0, [r4, 0x14]\n\
+ mov r10, r0\n\
+ mov r7, r10\n\
+ lsls r7, 27\n\
+ adds r0, r7, 0\n\
+ lsrs r0, 27\n\
+ mov r10, r0\n\
+ movs r1, 0x2\n\
+ mov r2, r10\n\
+ ands r2, r1\n\
+ asrs r2, 1\n\
+ ldrh r7, [r4, 0x14]\n\
+ mov r9, r7\n\
+ mov r0, r9\n\
+ lsls r0, 22\n\
+ mov r9, r0\n\
+ lsrs r3, r0, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r3\n\
+ orrs r2, r0\n\
+ ldrb r7, [r4, 0x15]\n\
+ mov r8, r7\n\
+ mov r0, r8\n\
+ lsls r0, 25\n\
+ mov r8, r0\n\
+ lsrs r3, r0, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r3\n\
+ lsls r0, 1\n\
+ orrs r2, r0\n\
+ ldr r6, [r4, 0x14]\n\
+ lsls r6, 12\n\
+ lsrs r3, r6, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r3\n\
+ lsls r0, 2\n\
+ orrs r2, r0\n\
+ ldrh r5, [r4, 0x16]\n\
+ lsls r5, 23\n\
+ lsrs r3, r5, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r3\n\
+ lsls r0, 3\n\
+ orrs r2, r0\n\
+ ldrb r3, [r4, 0x17]\n\
+ lsls r3, 26\n\
+ lsrs r0, r3, 27\n\
+ ands r1, r0\n\
+ lsls r1, 4\n\
+ orrs r2, r1\n\
+ movs r1, 0x1\n\
+ adds r4, r1, 0\n\
+ mov r7, r10\n\
+ ands r4, r7\n\
+ mov r0, r9\n\
+ lsrs r0, 27\n\
+ mov r9, r0\n\
+ adds r0, r1, 0\n\
+ mov r7, r9\n\
+ ands r0, r7\n\
+ lsls r0, 1\n\
+ orrs r4, r0\n\
+ mov r0, r8\n\
+ lsrs r0, 27\n\
+ mov r8, r0\n\
+ adds r0, r1, 0\n\
+ mov r7, r8\n\
+ ands r0, r7\n\
+ lsls r0, 2\n\
+ orrs r4, r0\n\
+ lsrs r6, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r6\n\
+ lsls r0, 3\n\
+ orrs r4, r0\n\
+ lsrs r5, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r5\n\
+ lsls r0, 4\n\
+ orrs r4, r0\n\
+ lsrs r3, 27\n\
+ ands r1, r3\n\
+ lsls r1, 5\n\
+ orrs r4, r1\n\
+ ldr r5, _0802989C @ =gDynamicBasePower\n\
+ lsls r0, r2, 2\n\
+ adds r0, r2\n\
+ lsls r0, 3\n\
+ movs r1, 0x3F\n\
+ bl __divsi3\n\
+ adds r0, 0x1E\n\
+ strh r0, [r5]\n\
+ ldr r5, _080298A0 @ =0x02000000\n\
+ lsls r0, r4, 4\n\
+ subs r0, r4\n\
+ movs r1, 0x3F\n\
+ bl __divsi3\n\
+ adds r1, r0, 0x1\n\
+ ldr r0, _080298A4 @ =0x0001601c\n\
+ adds r5, r0\n\
+ strb r1, [r5]\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x8\n\
+ bls _08029876\n\
+ adds r0, r1, 0x1\n\
+ strb r0, [r5]\n\
+_08029876:\n\
+ ldrb r0, [r5]\n\
+ movs r1, 0xC0\n\
+ orrs r0, r1\n\
+ strb r0, [r5]\n\
+ ldr r1, _080298A8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x1\n\
+ str r0, [r1]\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08029894: .4byte gBattleMons\n\
+_08029898: .4byte gBankAttacker\n\
+_0802989C: .4byte gDynamicBasePower\n\
+_080298A0: .4byte 0x02000000\n\
+_080298A4: .4byte 0x0001601c\n\
+_080298A8: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+
+static void atkC2_selectnexttarget(void)
+{
+ for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (gBankTarget == gBankAttacker)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC3_setfutureattack(void)
+{
+ if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gWishFutureKnock.futureSightMove[gBankTarget] = gCurrentMove;
+ gWishFutureKnock.futureSightAttacker[gBankTarget] = gBankAttacker;
+ gWishFutureKnock.futureSightCounter[gBankTarget] = 3;
+ gWishFutureKnock.futureSightDmg[gBankTarget] = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0,
+ 0, gBankAttacker, gBankTarget);
+
+ if (gProtectStructs[gBankAttacker].helpingHand)
+ gWishFutureKnock.futureSightDmg[gBankTarget] = gWishFutureKnock.futureSightDmg[gBankTarget] * 15 / 10;
+
+ if (gCurrentMove == MOVE_DOOM_DESIRE)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+#ifdef NONMATCHING
+static void atkC4_beat_up(void)
+{
+ register struct Pokemon* party asm("r7");
+ if (GetBankSide(gBankAttacker) == 0)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleMons[gBankTarget].hp == 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ while (gBattleCommunication[0] < 6)
+ {
+ if (GetMonData(&party[gBattleCommunication[0]], MON_DATA_HP) && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2)
+ && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) != SPECIES_EGG && !GetMonData(&party[gBattleCommunication[0]], MON_DATA_STATUS))
+ break;
+ gBattleCommunication[0]++;
+ }
+ if (gBattleCommunication[0] < 6)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = gBankAttacker;
+ gBattleTextBuff1[3] = gBattleCommunication[0];
+ gBattleTextBuff1[4] = 0xFF;
+ gBattlescriptCurrInstr += 9;
+
+ gBattleMoveDamage = gBaseStats[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack;
+ gBattleMoveDamage *= gBattleMoves[gCurrentMove].power;
+ gBattleMoveDamage *= (GetMonData(&party[gBattleCommunication[0]], MON_DATA_LEVEL) * 2 / 5 + 2);
+ gBattleMoveDamage /= gBaseStats[gBattleMons[gBankTarget].species].baseDefense;
+ gBattleMoveDamage = (gBattleMoveDamage / 50) + 2;
+ if (gProtectStructs[gBankAttacker].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+
+ gBattleCommunication[0]++;
+ }
+ else if (gBattleCommunication[0] != 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
+ }
+}
+#else
+__attribute__((naked))
+static void atkC4_beat_up(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ ldr r0, _08029A8C @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ ldr r7, _08029A90 @ =gEnemyParty\n\
+ cmp r0, 0\n\
+ bne _08029A62\n\
+ ldr r7, _08029A94 @ =gPlayerParty\n\
+_08029A62:\n\
+ ldr r2, _08029A98 @ =gBattleMons\n\
+ ldr r0, _08029A9C @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08029AA4\n\
+ ldr r3, _08029AA0 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ b _08029C40\n\
+ .align 2, 0\n\
+_08029A8C: .4byte gBankAttacker\n\
+_08029A90: .4byte gEnemyParty\n\
+_08029A94: .4byte gPlayerParty\n\
+_08029A98: .4byte gBattleMons\n\
+_08029A9C: .4byte gBankTarget\n\
+_08029AA0: .4byte gBattlescriptCurrInstr\n\
+_08029AA4:\n\
+ ldr r6, _08029BE0 @ =gBattleCommunication\n\
+ ldrb r0, [r6]\n\
+ mov r8, r0\n\
+ cmp r0, 0x5\n\
+ bls _08029AB0\n\
+ b _08029C0C\n\
+_08029AB0:\n\
+ adds r4, r6, 0\n\
+ movs r5, 0x64\n\
+_08029AB4:\n\
+ ldrb r0, [r4]\n\
+ muls r0, r5\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08029AF8\n\
+ ldrb r0, [r6]\n\
+ muls r0, r5\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08029AF8\n\
+ ldrb r0, [r4]\n\
+ muls r0, r5\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ movs r1, 0xCE\n\
+ lsls r1, 1\n\
+ cmp r0, r1\n\
+ beq _08029AF8\n\
+ ldrb r0, [r4]\n\
+ muls r0, r5\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x37\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08029B08\n\
+_08029AF8:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, r4, 0\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x5\n\
+ bls _08029AB4\n\
+_08029B08:\n\
+ ldr r1, _08029BE0 @ =gBattleCommunication\n\
+ mov r9, r1\n\
+ ldrb r2, [r1]\n\
+ cmp r2, 0x5\n\
+ bhi _08029C0C\n\
+ ldr r1, _08029BE4 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r6, _08029BE8 @ =gBankAttacker\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1, 0x2]\n\
+ strb r2, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _08029BEC @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x9\n\
+ str r0, [r1]\n\
+ ldr r2, _08029BF0 @ =gBattleMoveDamage\n\
+ mov r8, r2\n\
+ ldr r5, _08029BF4 @ =gBaseStats\n\
+ mov r1, r9\n\
+ ldrb r0, [r1]\n\
+ movs r4, 0x64\n\
+ muls r0, r4\n\
+ adds r0, r7, r0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r5\n\
+ ldrb r3, [r1, 0x1]\n\
+ mov r2, r8\n\
+ str r3, [r2]\n\
+ ldr r2, _08029BF8 @ =gBattleMoves\n\
+ ldr r0, _08029BFC @ =gCurrentMove\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0, 0x1]\n\
+ muls r0, r3\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ mov r2, r9\n\
+ ldrb r0, [r2]\n\
+ muls r0, r4\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ lsls r0, 1\n\
+ movs r1, 0x5\n\
+ bl __udivsi3\n\
+ adds r0, 0x2\n\
+ mov r2, r8\n\
+ ldr r1, [r2]\n\
+ muls r0, r1\n\
+ str r0, [r2]\n\
+ ldr r3, _08029C00 @ =gBattleMons\n\
+ ldr r1, _08029C04 @ =gBankTarget\n\
+ ldrb r2, [r1]\n\
+ movs r1, 0x58\n\
+ muls r1, r2\n\
+ adds r1, r3\n\
+ ldrh r2, [r1]\n\
+ lsls r1, r2, 3\n\
+ subs r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r5\n\
+ ldrb r1, [r1, 0x2]\n\
+ bl __divsi3\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ movs r1, 0x32\n\
+ bl __divsi3\n\
+ adds r2, r0, 0x2\n\
+ mov r0, r8\n\
+ str r2, [r0]\n\
+ ldr r1, _08029C08 @ =gProtectStructs\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08029BD4\n\
+ lsls r0, r2, 4\n\
+ subs r0, r2\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+_08029BD4:\n\
+ mov r2, r9\n\
+ ldrb r0, [r2]\n\
+ adds r0, 0x1\n\
+ strb r0, [r2]\n\
+ b _08029C46\n\
+ .align 2, 0\n\
+_08029BE0: .4byte gBattleCommunication\n\
+_08029BE4: .4byte gBattleTextBuff1\n\
+_08029BE8: .4byte gBankAttacker\n\
+_08029BEC: .4byte gBattlescriptCurrInstr\n\
+_08029BF0: .4byte gBattleMoveDamage\n\
+_08029BF4: .4byte gBaseStats\n\
+_08029BF8: .4byte gBattleMoves\n\
+_08029BFC: .4byte gCurrentMove\n\
+_08029C00: .4byte gBattleMons\n\
+_08029C04: .4byte gBankTarget\n\
+_08029C08: .4byte gProtectStructs\n\
+_08029C0C:\n\
+ mov r0, r8\n\
+ cmp r0, 0\n\
+ beq _08029C2C\n\
+ ldr r3, _08029C28 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ b _08029C40\n\
+ .align 2, 0\n\
+_08029C28: .4byte gBattlescriptCurrInstr\n\
+_08029C2C:\n\
+ ldr r3, _08029C54 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x5]\n\
+ ldrb r0, [r2, 0x6]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x7]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x8]\n\
+_08029C40:\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+_08029C46:\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08029C54: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atkC5_hidepreattack(void)
+{
+ switch (gCurrentMove)
+ {
+ case MOVE_FLY:
+ case MOVE_BOUNCE:
+ gStatuses3[gBankAttacker] |= STATUS3_ON_AIR;
+ break;
+ case MOVE_DIG:
+ gStatuses3[gBankAttacker] |= STATUS3_UNDERGROUND;
+ break;
+ case MOVE_DIVE:
+ gStatuses3[gBankAttacker] |= STATUS3_UNDERWATER;
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC6_unhidepostattack(void)
+{
+ switch (gCurrentMove)
+ {
+ case MOVE_FLY:
+ case MOVE_BOUNCE:
+ gStatuses3[gBankAttacker] &= ~STATUS3_ON_AIR;
+ break;
+ case MOVE_DIG:
+ gStatuses3[gBankAttacker] &= ~STATUS3_UNDERGROUND;
+ break;
+ case MOVE_DIVE:
+ gStatuses3[gBankAttacker] &= ~STATUS3_UNDERWATER;
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC7_setminimize(void)
+{
+ if (gHitMarker & HITMARKER_OBEYS)
+ gStatuses3[gBankAttacker] |= STATUS3_MINIMIZED;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC8_sethail(void)
+{
+ if (gBattleWeather & WEATHER_HAIL)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gBattleWeather = WEATHER_HAIL;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ gWishFutureKnock.weatherDuration = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC9_jumpifattackandspecialattackcannotfall(void) //memento
+{
+ if (gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] == 0
+ && gBattleMons[gBankTarget].statStages[STAT_STAGE_SPATK] == 0
+ && gBattleCommunication[6] != 1)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gActiveBank = gBankAttacker;
+ gBattleMoveDamage = gBattleMons[gActiveBank].hp;
+ EmitHealthBarUpdate(0, 0x7FFF);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkCA_setforcedtarget(void) //follow me
+{
+ gSideTimer[GetBankSide(gBankAttacker)].followmeTimer = 1;
+ gSideTimer[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkCB_setcharge(void)
+{
+ gStatuses3[gBankAttacker] |= STATUS3_CHARGED_UP;
+ gDisableStructs[gBankAttacker].chargeTimer1 = 2;
+ gDisableStructs[gBankAttacker].chargeTimer2 = 2;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkCC_callterrainattack(void) //nature power
+{
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = sNaturePowerMoves[gBattleTerrain];
+ gBankTarget = sub_801B5C0(gCurrentMove, 0);
+ b_movescr_stack_push(gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]);
+ gBattlescriptCurrInstr++;
+}
+
+static void atkCD_cureifburnedparalysedorpoisoned(void) //refresh
+{
+ if (gBattleMons[gBankAttacker].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON))
+ {
+ gBattleMons[gBankAttacker].status1 = 0;
+ gBattlescriptCurrInstr += 5;
+ gActiveBank = gBankAttacker;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkCE_settorment(void)
+{
+ if (gBattleMons[gBankTarget].status2 & STATUS2_TORMENT)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gBattleMons[gBankTarget].status2 |= STATUS2_TORMENT;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkCF_jumpifnodamage(void)
+{
+ if (gProtectStructs[gBankAttacker].physicalDmg || gProtectStructs[gBankAttacker].specialDmg)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkD0_settaunt(void)
+{
+ if (gDisableStructs[gBankTarget].tauntTimer1 == 0)
+ {
+ gDisableStructs[gBankTarget].tauntTimer1 = 2;
+ gDisableStructs[gBankTarget].tauntTimer2 = 2;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkD1_set_helpinghand(void)
+{
+ gBankTarget = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gBankTarget])
+ && !gProtectStructs[gBankAttacker].helpingHand && !gProtectStructs[gBankTarget].helpingHand)
+ {
+ gProtectStructs[gBankTarget].helpingHand = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#ifdef NONMATCHING
+static void atkD2_swap_items(void)
+{
+ if ((GetBankSide(gBankAttacker) != 1 || gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER) || gTrainerBattleOpponent == 0x400))
+ {
+ u8 side = GetBankSide(gBankAttacker);
+ if (gBattleTypeFlags)
+ }
+
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#else
+__attribute__((naked))
+static void atkD2_swap_items(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ ldr r0, _0802A30C @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0802A24C\n\
+ ldr r0, _0802A310 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0802A314 @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0802A24C\n\
+ ldr r0, _0802A318 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ bne _0802A2EE\n\
+_0802A24C:\n\
+ ldr r4, _0802A30C @ =gBankAttacker\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r0, _0802A310 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0802A314 @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0802A290\n\
+ ldr r0, _0802A318 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0802A290\n\
+ ldr r0, _0802A31C @ =gWishFutureKnock\n\
+ adds r0, 0x29\n\
+ adds r0, r2, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r3, _0802A320 @ =gBitTable\n\
+ ldr r2, _0802A324 @ =gBattlePartyID\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0802A2EE\n\
+_0802A290:\n\
+ ldr r0, _0802A328 @ =gBattleMons\n\
+ mov r9, r0\n\
+ ldr r1, _0802A30C @ =gBankAttacker\n\
+ ldrb r4, [r1]\n\
+ movs r2, 0x58\n\
+ mov r8, r2\n\
+ mov r0, r8\n\
+ muls r0, r4\n\
+ mov r3, r9\n\
+ adds r5, r0, r3\n\
+ ldrh r3, [r5, 0x2E]\n\
+ adds r1, r3, 0\n\
+ cmp r1, 0\n\
+ bne _0802A2BE\n\
+ ldr r0, _0802A32C @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ add r0, r9\n\
+ ldrh r0, [r0, 0x2E]\n\
+ cmp r0, 0\n\
+ beq _0802A2EE\n\
+_0802A2BE:\n\
+ cmp r1, 0xAF\n\
+ beq _0802A2EE\n\
+ ldr r7, _0802A32C @ =gBankTarget\n\
+ ldrb r0, [r7]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ mov r1, r9\n\
+ adds r2, r0, r1\n\
+ ldrh r1, [r2, 0x2E]\n\
+ cmp r1, 0xAF\n\
+ beq _0802A2EE\n\
+ adds r0, r3, 0\n\
+ subs r0, 0x79\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xB\n\
+ bls _0802A2EE\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x79\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xB\n\
+ bhi _0802A334\n\
+_0802A2EE:\n\
+ ldr r3, _0802A330 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+ b _0802A49A\n\
+ .align 2, 0\n\
+_0802A30C: .4byte gBankAttacker\n\
+_0802A310: .4byte gBattleTypeFlags\n\
+_0802A314: .4byte 0x00000902\n\
+_0802A318: .4byte gTrainerBattleOpponent\n\
+_0802A31C: .4byte gWishFutureKnock\n\
+_0802A320: .4byte gBitTable\n\
+_0802A324: .4byte gBattlePartyID\n\
+_0802A328: .4byte gBattleMons\n\
+_0802A32C: .4byte gBankTarget\n\
+_0802A330: .4byte gBattlescriptCurrInstr\n\
+_0802A334:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3C\n\
+ bne _0802A36C\n\
+ ldr r1, _0802A360 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0802A364 @ =BattleScript_NoItemSteal\n\
+ str r0, [r1]\n\
+ ldr r1, _0802A368 @ =gLastUsedAbility\n\
+ ldrb r0, [r7]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ b _0802A49A\n\
+ .align 2, 0\n\
+_0802A360: .4byte gBattlescriptCurrInstr\n\
+_0802A364: .4byte BattleScript_NoItemSteal\n\
+_0802A368: .4byte gLastUsedAbility\n\
+_0802A36C:\n\
+ lsls r0, r4, 1\n\
+ ldr r4, _0802A458 @ =0x020160f0\n\
+ adds r6, r0, r4\n\
+ ldrh r5, [r5, 0x2E]\n\
+ mov r10, r5\n\
+ strh r1, [r6]\n\
+ ldr r3, _0802A45C @ =gBankAttacker\n\
+ ldrb r0, [r3]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ add r0, r9\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x2E]\n\
+ ldrb r0, [r7]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ add r0, r9\n\
+ mov r3, r10\n\
+ strh r3, [r0, 0x2E]\n\
+ ldr r5, _0802A460 @ =gActiveBank\n\
+ ldr r1, _0802A45C @ =gBankAttacker\n\
+ ldrb r0, [r1]\n\
+ strb r0, [r5]\n\
+ str r6, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl EmitSetAttributes\n\
+ ldr r2, _0802A45C @ =gBankAttacker\n\
+ ldrb r0, [r2]\n\
+ bl MarkBufferBankForExecution\n\
+ ldrb r0, [r7]\n\
+ strb r0, [r5]\n\
+ ldrb r0, [r7]\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ mov r1, r9\n\
+ adds r1, 0x2E\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r7]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, _0802A464 @ =0xfffe9f10\n\
+ adds r4, r0\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 1\n\
+ ldr r2, _0802A468 @ =0x000160e8\n\
+ adds r0, r2\n\
+ adds r0, r4\n\
+ movs r1, 0\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 1\n\
+ ldr r1, _0802A46C @ =0x000160e9\n\
+ adds r0, r1\n\
+ adds r0, r4\n\
+ movs r3, 0\n\
+ strb r3, [r0]\n\
+ ldr r3, _0802A45C @ =gBankAttacker\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ adds r0, r4\n\
+ movs r2, 0\n\
+ strb r2, [r0]\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ adds r0, r4\n\
+ strb r2, [r0]\n\
+ ldr r1, _0802A470 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ ldr r1, _0802A474 @ =gBattleTextBuff1\n\
+ movs r3, 0xFD\n\
+ strb r3, [r1]\n\
+ movs r2, 0xA\n\
+ strb r2, [r1, 0x1]\n\
+ ldrh r0, [r6]\n\
+ strb r0, [r1, 0x2]\n\
+ ldrh r0, [r6]\n\
+ lsrs r0, 8\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _0802A478 @ =gBattleTextBuff2\n\
+ strb r3, [r1]\n\
+ strb r2, [r1, 0x1]\n\
+ mov r3, r10\n\
+ strb r3, [r1, 0x2]\n\
+ mov r2, r10\n\
+ lsrs r0, r2, 8\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r1, 0x4]\n\
+ cmp r2, 0\n\
+ beq _0802A480\n\
+ ldrh r0, [r6]\n\
+ cmp r0, 0\n\
+ beq _0802A494\n\
+ ldr r1, _0802A47C @ =gBattleCommunication\n\
+ movs r0, 0x2\n\
+ b _0802A498\n\
+ .align 2, 0\n\
+_0802A458: .4byte 0x020160f0\n\
+_0802A45C: .4byte gBankAttacker\n\
+_0802A460: .4byte gActiveBank\n\
+_0802A464: .4byte 0xfffe9f10\n\
+_0802A468: .4byte 0x000160e8\n\
+_0802A46C: .4byte 0x000160e9\n\
+_0802A470: .4byte gBattlescriptCurrInstr\n\
+_0802A474: .4byte gBattleTextBuff1\n\
+_0802A478: .4byte gBattleTextBuff2\n\
+_0802A47C: .4byte gBattleCommunication\n\
+_0802A480:\n\
+ ldrh r0, [r6]\n\
+ cmp r0, 0\n\
+ beq _0802A494\n\
+ ldr r0, _0802A490 @ =gBattleCommunication\n\
+ movs r3, 0\n\
+ strb r3, [r0, 0x5]\n\
+ b _0802A49A\n\
+ .align 2, 0\n\
+_0802A490: .4byte gBattleCommunication\n\
+_0802A494:\n\
+ ldr r1, _0802A4AC @ =gBattleCommunication\n\
+ movs r0, 0x1\n\
+_0802A498:\n\
+ strb r0, [r1, 0x5]\n\
+_0802A49A:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0802A4AC: .4byte gBattleCommunication\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atkD3_copy_ability(void) //role play
+{
+ if (gBattleMons[gBankTarget].ability != 0 && gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD)
+ {
+ gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability;
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkD4_wish_effect(void)
+{
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 1))
+ {
+ case 0: //use wish
+ if (gWishFutureKnock.wishCounter[gBankAttacker] == 0)
+ {
+ gWishFutureKnock.wishCounter[gBankAttacker] = 2;
+ gWishFutureKnock.wishUserID[gBankAttacker] = gBattlePartyID[gBankAttacker];
+ gBattlescriptCurrInstr += 6;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ break;
+ case 1: //heal effect
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = gBankTarget;
+ gBattleTextBuff1[3] = gWishFutureKnock.wishUserID[gBankTarget];
+ gBattleTextBuff1[4] = 0xFF;
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ break;
+ }
+}
+
+static void atkD5_setroots(void) //ingrain
+{
+ if (gStatuses3[gBankAttacker] & STATUS3_ROOTED)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_ROOTED;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkD6_doubledamagedealtifdamaged(void)
+{
+ if ((gProtectStructs[gBankAttacker].physicalDmg && gProtectStructs[gBankAttacker].physicalBank == gBankTarget)
+ || (gProtectStructs[gBankAttacker].specialDmg && gProtectStructs[gBankAttacker].specialBank == gBankTarget))
+ BATTLE_STRUCT->dmgMultiplier = 2;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkD7_setyawn(void)
+{
+ if (gStatuses3[gBankTarget] & STATUS3_YAWN || (u8) gBattleMons[gBankTarget].status1)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gStatuses3[gBankTarget] |= 0x1000;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkD8_setdamagetohealthdifference(void)
+{
+ if (gBattleMons[gBankTarget].hp <= gBattleMons[gBankAttacker].hp)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - gBattleMons[gBankAttacker].hp;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkD9_scaledamagebyhealthratio(void)
+{
+ if (gDynamicBasePower == 0)
+ {
+ u8 power = gBattleMoves[gCurrentMove].power;
+ gDynamicBasePower = gBattleMons[gBankAttacker].hp * power / gBattleMons[gBankAttacker].maxHP;
+ if (gDynamicBasePower == 0)
+ gDynamicBasePower = 1;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkDA_abilityswap(void)
+{
+ if ((gBattleMons[gBankAttacker].ability == 0 && gBattleMons[gBankTarget].ability == 0)
+ || gBattleMons[gBankAttacker].ability == ABILITY_WONDER_GUARD || gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD
+ || gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ u8 atk_ability = gBattleMons[gBankAttacker].ability;
+ gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability;
+ gBattleMons[gBankTarget].ability = atk_ability;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkDB_imprisoneffect(void)
+{
+ u8 r8 = 0;
+ if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISIONED))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ u8 bank;
+ sub_801529C(gBankAttacker);
+ for (bank = 0; bank < gNoOfAllBanks; bank++)
+ {
+ if (r8 != GetBankSide(bank))
+ {
+ int j;
+ for (j = 0; j < 4; j++)
+ {
+ int k;
+ for (k = 0; k < 4; k++)
+ {
+ if (gBattleMons[gBankAttacker].moves[j] == gBattleMons[bank].moves[k] && gBattleMons[gBankAttacker].moves[j])
+ break;
+ }
+ if (k != 4)
+ break;
+ }
+ if (j != 4)
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_IMPRISIONED;
+ gBattlescriptCurrInstr += 5;
+ break;
+ }
+ }
+ }
+ if (bank == gNoOfAllBanks)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkDC_setgrudge(void)
+{
+ if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_GRUDGE;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkDD_weightdamagecalculation(void)
+{
+ int i;
+ for (i = 0; sWeightDamage[i] != 0xFFFF; i += 2)
+ {
+ if (sWeightDamage[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1))
+ break;
+ }
+ if (sWeightDamage[i] != 0xFFFF)
+ gDynamicBasePower = sWeightDamage[i + 1];
+ else
+ gDynamicBasePower = 120;
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NONMATCHING
+static void atkDE_asistattackselect(void)
+{
+ u32 chooseable_moves_no = 0;
+ struct Pokemon* party;
+ int i, j;
+ u16* chooseable_moves;
+ if (GetBankIdentity(gBankAttacker) & 1)
+ party = gEnemyParty;
+ else
+ party = gPlayerParty;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (i == gBattlePartyID[gBankAttacker])
+ break;
+ if (!GetMonData(&party[i], MON_DATA_SPECIES2) || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ break;
+ chooseable_moves = &BATTLE_STRUCT->assistMove[chooseable_moves_no];
+ for (j = 0; j < 4; j++)
+ {
+ int k;
+ u16 move = GetMonData(&party[i], MON_DATA_MOVE1 + i);
+ if (IsMoveUnchoosable(move))
+ break;
+ //sUnknown_081FACFE[k]
+ for (k = 0; ;k++)
+ {
+ if (sUnknown_081FACFE[k] == 0xFFFF)
+ {
+ if (move)
+ {
+ *chooseable_moves = move;
+ chooseable_moves++;
+ chooseable_moves_no++;
+ }
+ break;
+ }
+ if (sUnknown_081FACFE[k] == move)
+ break;
+ }
+ }
+ }
+ if (chooseable_moves_no)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gRandomMove = BATTLE_STRUCT->assistMove[Random() % chooseable_moves_no];
+ gBankTarget = sub_801B5C0(gRandomMove, 0);
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#else
+__attribute__((naked))
+static void atkDE_asistattackselect(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ ldr r0, _0802AB9C @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ ldr r0, _0802ABA0 @ =gPlayerParty\n\
+ str r0, [sp]\n\
+ cmp r1, 0\n\
+ beq _0802AAAC\n\
+ ldr r1, _0802ABA4 @ =gEnemyParty\n\
+ str r1, [sp]\n\
+_0802AAAC:\n\
+ movs r2, 0\n\
+_0802AAAE:\n\
+ ldr r1, _0802ABA8 @ =gBattlePartyID\n\
+ ldr r0, _0802AB9C @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ adds r1, r2, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ ldrh r0, [r0]\n\
+ cmp r2, r0\n\
+ beq _0802AB54\n\
+ movs r0, 0x64\n\
+ adds r6, r2, 0\n\
+ muls r6, r0\n\
+ ldr r0, [sp]\n\
+ adds r4, r0, r6\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0802AB54\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ movs r1, 0xCE\n\
+ lsls r1, 1\n\
+ cmp r0, r1\n\
+ beq _0802AB54\n\
+ movs r5, 0\n\
+ ldr r1, _0802ABAC @ =0x0000ffff\n\
+ mov r8, r1\n\
+ mov r9, r6\n\
+ mov r1, r10\n\
+ lsls r0, r1, 1\n\
+ ldr r1, _0802ABB0 @ =0x02016024\n\
+ adds r6, r0, r1\n\
+_0802AAF8:\n\
+ movs r7, 0\n\
+ adds r1, r5, 0\n\
+ adds r1, 0xD\n\
+ ldr r0, [sp]\n\
+ add r0, r9\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ adds r0, r4, 0\n\
+ bl IsMoveUnchoosable\n\
+ lsls r0, 24\n\
+ adds r1, r5, 0x1\n\
+ cmp r0, 0\n\
+ bne _0802AB4E\n\
+ ldr r0, _0802ABB4 @ =sUnknown_081FACFE\n\
+ ldrh r2, [r0]\n\
+ adds r3, r0, 0\n\
+ cmp r2, r8\n\
+ beq _0802AB42\n\
+ cmp r4, r2\n\
+ beq _0802AB38\n\
+ ldr r5, _0802ABAC @ =0x0000ffff\n\
+ adds r2, r3, 0\n\
+_0802AB2A:\n\
+ adds r2, 0x2\n\
+ adds r7, 0x1\n\
+ ldrh r0, [r2]\n\
+ cmp r0, r5\n\
+ beq _0802AB42\n\
+ cmp r4, r0\n\
+ bne _0802AB2A\n\
+_0802AB38:\n\
+ lsls r0, r7, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r8\n\
+ bne _0802AB4E\n\
+_0802AB42:\n\
+ cmp r4, 0\n\
+ beq _0802AB4E\n\
+ strh r4, [r6]\n\
+ adds r6, 0x2\n\
+ movs r0, 0x1\n\
+ add r10, r0\n\
+_0802AB4E:\n\
+ adds r5, r1, 0\n\
+ cmp r5, 0x3\n\
+ ble _0802AAF8\n\
+_0802AB54:\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, 0x5\n\
+ ble _0802AAAE\n\
+ mov r1, r10\n\
+ cmp r1, 0\n\
+ beq _0802ABCC\n\
+ ldr r2, _0802ABB8 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ ldr r1, _0802ABBC @ =0xfffffbff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r4, _0802ABC0 @ =gRandomMove\n\
+ bl Random\n\
+ movs r1, 0xFF\n\
+ ands r1, r0\n\
+ mov r0, r10\n\
+ muls r0, r1\n\
+ asrs r0, 8\n\
+ lsls r0, 1\n\
+ ldr r1, _0802ABB0 @ =0x02016024\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r4]\n\
+ ldrh r0, [r4]\n\
+ movs r1, 0\n\
+ bl sub_801B5C0\n\
+ ldr r1, _0802ABC4 @ =gBankTarget\n\
+ strb r0, [r1]\n\
+ ldr r1, _0802ABC8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ b _0802ABE6\n\
+ .align 2, 0\n\
+_0802AB9C: .4byte gBankAttacker\n\
+_0802ABA0: .4byte gPlayerParty\n\
+_0802ABA4: .4byte gEnemyParty\n\
+_0802ABA8: .4byte gBattlePartyID\n\
+_0802ABAC: .4byte 0x0000ffff\n\
+_0802ABB0: .4byte 0x02016024\n\
+_0802ABB4: .4byte sUnknown_081FACFE\n\
+_0802ABB8: .4byte gHitMarker\n\
+_0802ABBC: .4byte 0xfffffbff\n\
+_0802ABC0: .4byte gRandomMove\n\
+_0802ABC4: .4byte gBankTarget\n\
+_0802ABC8: .4byte gBattlescriptCurrInstr\n\
+_0802ABCC:\n\
+ ldr r3, _0802ABF8 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+_0802ABE6:\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0802ABF8: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+static void atkDF_setmagiccoat(void)
+{
+ gBankTarget = gBankAttacker;
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gProtectStructs[gBankAttacker].bounceMove = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkE0_setstealstatchange(void)
+{
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gProtectStructs[gBankAttacker].stealMove = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkE1_intimidate_string_loader(void)
+{
+ u8 side;
+
+ BATTLE_STRUCT->scriptingActive = ewram[0x160dd];
+ side = GetBankSide(BATTLE_STRUCT->scriptingActive);
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 9;
+ gBattleTextBuff1[2] = gBattleMons[BATTLE_STRUCT->scriptingActive].ability;
+ gBattleTextBuff1[3] = 0xFF;
+
+ for (;gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (GetBankSide(gBankTarget) == side)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ break;
+ }
+
+ if (gBankTarget >= gNoOfAllBanks)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atkE2_switchout_abilities(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ switch (gBattleMons[gActiveBank].ability)
+ {
+ case ABILITY_NATURAL_CURE:
+ gBattleMons[gActiveBank].status1 = 0;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, gBitTable[ewram[gActiveBank + 0x16064]], 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ }
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atkE3_jumpiffainted(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleMons[gActiveBank].hp == 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atkE4_getsecretpowereffect(void)
+{
+ switch (gBattleTerrain)
+ {
+ case 0:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 2;
+ break;
+ case 1:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 1;
+ break;
+ case 2:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 27;
+ break;
+ case 3:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 23;
+ break;
+ case 4:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 22;
+ break;
+ case 5:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 24;
+ break;
+ case 6:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 7;
+ break;
+ case 7:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 8;
+ break;
+ default:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 5;
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkE5_pickup(void)
+{
+ int i;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ u16 held_item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ u8 ability;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY))
+ ability = gBaseStats[species].ability2;
+ else
+ ability = gBaseStats[species].ability1;
+
+ if (ability == ABILITY_PICKUP && species != 0 && species != SPECIES_EGG && held_item == 0 && (Random() % 10) == 0)
+ {
+ s32 chance = Random() % 100;
+ s32 j;
+ for (j = 0; j < 18; j += 2)
+ {
+ if (sPickupItems[j + 1] > chance)
+ break;
+ }
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, (const void*) &sPickupItems[j]);
+ }
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkE6_castform_change_animation(void)
+{
+ gActiveBank = BATTLE_STRUCT->scriptingActive;
+ if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE)
+ BATTLE_STRUCT->castformToChangeInto |= 0x80;
+ EmitBattleAnimation(0, 0, BATTLE_STRUCT->castformToChangeInto);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr++;
+}
+
+static void atkE7_castform_data_change(void)
+{
+ u8 form;
+ gBattlescriptCurrInstr++;
+ form = castform_switch(BATTLE_STRUCT->scriptingActive);
+ if (form)
+ {
+ b_push_move_exec(gUnknown_081D977D);
+ BATTLE_STRUCT->castformToChangeInto = form - 1;
+ }
+}
+
+static void atkE8_settypebasedhalvers(void) //water/mud sport
+{
+ bool8 worked = FALSE;
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_MUD_SPORT)
+ {
+ if (!(gStatuses3[gBankAttacker] & STATUS3_MUDSPORT))
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_MUDSPORT;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ worked = TRUE;
+ }
+ }
+ else //water sport
+ {
+ if (!(gStatuses3[gBankAttacker] & STATUS3_WATERSPORT))
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_WATERSPORT;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ worked = TRUE;
+ }
+ }
+ if (worked)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkE9_setweatherballtype(void)
+{
+ if (WEATHER_HAS_EFFECT)
+ {
+ if ((u8)(gBattleWeather))
+ BATTLE_STRUCT->dmgMultiplier = 2;
+ if (gBattleWeather & WEATHER_RAIN_ANY)
+ BATTLE_STRUCT->dynamicMoveType = TYPE_WATER | 0x80;
+ else if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ BATTLE_STRUCT->dynamicMoveType = TYPE_ROCK | 0x80;
+ else if (gBattleWeather & WEATHER_SUN_ANY)
+ BATTLE_STRUCT->dynamicMoveType = TYPE_FIRE | 0x80;
+ else if (gBattleWeather & WEATHER_HAIL)
+ BATTLE_STRUCT->dynamicMoveType = TYPE_ICE | 0x80;
+ else
+ BATTLE_STRUCT->dynamicMoveType = TYPE_NORMAL | 0x80;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkEA_recycleitem(void)
+{
+ u16* used_item;
+ gActiveBank = gBankAttacker;
+ used_item = USED_HELD_ITEM(gActiveBank);
+ if (*used_item && gBattleMons[gActiveBank].item == 0)
+ {
+ gLastUsedItem = *used_item;
+ *used_item = 0;
+ gBattleMons[gActiveBank].item = gLastUsedItem;
+ EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkEB_settypetoterrain(void)
+{
+ if (gBattleMons[gBankAttacker].type1 != sTerrainToType[gBattleTerrain] && gBattleMons[gBankAttacker].type2 != sTerrainToType[gBattleTerrain])
+ {
+ gBattleMons[gBankAttacker].type1 = sTerrainToType[gBattleTerrain];
+ gBattleMons[gBankAttacker].type2 = sTerrainToType[gBattleTerrain];
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 3;
+ gBattleTextBuff1[2] = sTerrainToType[gBattleTerrain];
+ gBattleTextBuff1[3] = 0xFF;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkEC_pursuit_sth(void)
+{
+ gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]) && gActionForBanks[gActiveBank] == 0 && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT)
+ {
+ gUnknown_02024A76[gActiveBank] = 11;
+ gCurrentMove = MOVE_PURSUIT;
+ gBattlescriptCurrInstr += 5;
+ BATTLE_STRUCT->animTurn = 1;
+ BATTLE_STRUCT->unk160A7 = gBankAttacker;
+ gBankAttacker = gActiveBank;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkED_802B4B4(void)
+{
+ gEffectBank = gBankAttacker;
+ if (gBankAttacker == gBankTarget)
+ gBankAttacker = gBankTarget = BATTLE_STRUCT->scriptingActive;
+ else
+ gBankTarget = BATTLE_STRUCT->scriptingActive;
+ BATTLE_STRUCT->scriptingActive = gEffectBank;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkEE_removelightscreenreflect(void) //brick break
+{
+ u8 side = GetBankSide(gBankAttacker) ^ 1;
+ if (gSideTimer[side].reflectTimer || gSideTimer[side].lightscreenTimer)
+ {
+ gSideAffecting[side] &= ~(SIDE_STATUS_REFLECT);
+ gSideAffecting[side] &= ~(SIDE_STATUS_LIGHTSCREEN);
+ gSideTimer[side].reflectTimer = 0;
+ gSideTimer[side].lightscreenTimer = 0;
+ BATTLE_STRUCT->animTurn = 1;
+ BATTLE_STRUCT->animTargetsHit = 1;
+ }
+ else
+ {
+ BATTLE_STRUCT->animTurn = 0;
+ BATTLE_STRUCT->animTargetsHit = 0;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+void atkEF_pokeball_catch_calculation(void)
+{
+ u8 ball_multiplier = 0;
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = gBankAttacker;
+ gBankTarget = gBankAttacker ^ 1;
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ EmitBallThrowAnim(0, 5);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ {
+ EmitBallThrowAnim(0, 4);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
+ }
+ else
+ {
+ u32 odds;
+ u8 catch_rate;
+ if (gLastUsedItem == ITEM_SAFARI_BALL)
+ catch_rate = BATTLE_STRUCT->unk16089 * 1275 / 100; //correct the name to safariFleeRate
+ else
+ catch_rate = gBaseStats[gBattleMons[gBankTarget].species].catchRate;
+ if (gLastUsedItem > 5)
+ {
+ switch (gLastUsedItem)
+ {
+ case ITEM_NET_BALL:
+ if (gBattleMons[gBankTarget].type1 == TYPE_WATER || gBattleMons[gBankTarget].type2 == TYPE_WATER || gBattleMons[gBankTarget].type1 == TYPE_BUG || gBattleMons[gBankTarget].type2 == TYPE_BUG)
+ ball_multiplier = 30;
+ else
+ ball_multiplier = 10;
+ break;
+ case ITEM_DIVE_BALL:
+ if (sav1_map_get_light_level() == 5)
+ ball_multiplier = 35;
+ else
+ ball_multiplier = 10;
+ break;
+ case ITEM_NEST_BALL:
+ if (gBattleMons[gBankTarget].level <= 39)
+ {
+ ball_multiplier = 40 - gBattleMons[gBankTarget].level;
+ if (ball_multiplier <= 9)
+ ball_multiplier = 10;
+ }
+ else
+ ball_multiplier = 10;
+ break;
+ case ITEM_REPEAT_BALL:
+ if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1))
+ ball_multiplier = 30;
+ else
+ ball_multiplier = 10;
+ break;
+ case ITEM_TIMER_BALL:
+ ball_multiplier = gBattleResults.battleTurnCounter + 10;
+ if (ball_multiplier > 40)
+ ball_multiplier = 40;
+ break;
+ case ITEM_LUXURY_BALL:
+ case ITEM_PREMIER_BALL:
+ ball_multiplier = 10;
+ break;
+ }
+ }
+ else
+ ball_multiplier = sBallCatchBonuses[gLastUsedItem - 2];
+
+ odds = (catch_rate * ball_multiplier / 10) * (gBattleMons[gBankTarget].maxHP * 3 - gBattleMons[gBankTarget].hp * 2) / (3 * gBattleMons[gBankTarget].maxHP);
+ if (gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE))
+ odds *= 2;
+ if (gBattleMons[gBankTarget].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS /*| STATUS_TOXIC_POISON */)) //nice one gf
+ odds = (odds * 15) / 10;
+
+ if (gLastUsedItem != ITEM_SAFARI_BALL)
+ {
+ if (gLastUsedItem == ITEM_MASTER_BALL)
+ {
+ gBattleResults.unk5_1 = 1;
+ }
+ else
+ {
+ if (gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF)
+ gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL]++;
+ }
+ }
+ if (odds > 254) //poke caught
+ {
+ EmitBallThrowAnim(0, 4);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
+ SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem);
+ if (CalculatePlayerPartyCount() == 6)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else //poke may be caught, calculate shakes
+ {
+ u8 shakes;
+ odds = Sqrt(Sqrt(16711680 / odds));
+ odds = 1048560 / odds;
+ for (shakes = 0; shakes < 4 && Random() < odds; shakes++) {}
+ if (gLastUsedItem == ITEM_MASTER_BALL)
+ shakes = 4; //why calculate the shakes before that check?
+ EmitBallThrowAnim(0, shakes);
+ MarkBufferBankForExecution(gActiveBank);
+ if (shakes == 4) //poke caught, copy of the code above
+ {
+ gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
+ SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem);
+ if (CalculatePlayerPartyCount() == 6)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else //rip
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = shakes;
+ gBattlescriptCurrInstr = BattleScript_ShakeBallThrow;
+ }
+ }
+ }
+}
+
+static void atkF0_copy_caught_poke(void)
+{
+ GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]);
+ gBattleResults.caughtPoke = gBattleMons[gBankAttacker ^ 1].species;
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleResults.caughtNick);
+ gBattlescriptCurrInstr++;
+}
+
+static void atkF1_setpoke_as_caught(void)
+{
+ if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 3);
+ if (gBattleMons[gBankTarget].species == SPECIES_UNOWN)
+ gSaveBlock2.pokedex.unownPersonality = gBattleMons[gBankTarget].personality;
+ if (gBattleMons[gBankTarget].species == SPECIES_SPINDA) //else if
+ gSaveBlock2.pokedex.spindaPersonality = gBattleMons[gBankTarget].personality;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+extern const u32 gBattleTerrainTiles_Building[];
+extern const u32 gBattleTerrainTilemap_Building[];
+extern const u32 gBattleTerrainPalette_BattleTower[];
+
+static void atkF2_display_dex_info(void)
+{
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBattleCommunication[0]++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ gBattleCommunication[1] = sub_809070C(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), gBattleMons[gBankTarget].otId, gBattleMons[gBankTarget].personality);
+ gBattleCommunication[0]++;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active && gMain.callback2 == sub_800F808 && !gTasks[gBattleCommunication[1]].isActive)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(0x06008000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000));
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ REG_BG3CNT = 0x5a0b;
+ gUnknown_030041B0 = 0x100;
+ BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0);
+ gBattleCommunication[0]++;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ gBattlescriptCurrInstr++;
+ break;
+ }
+}
+
+__attribute__((naked))
+void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ ldr r4, [sp, 0x20]\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r12, r1\n\
+ lsls r2, 24\n\
+ lsrs r5, r2, 24\n\
+ lsls r3, 24\n\
+ lsrs r7, r3, 24\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ mov r8, r4\n\
+ mov r2, r12\n\
+ cmp r2, r7\n\
+ bgt _0802BC5A\n\
+ lsls r1, r6, 1\n\
+ ldr r0, _0802BC20 @ =0x0600c000\n\
+ adds r1, r0\n\
+ mov r9, r1\n\
+_0802BC06:\n\
+ adds r1, r6, 0\n\
+ adds r0, r2, 0x1\n\
+ mov r10, r0\n\
+ cmp r1, r5\n\
+ bgt _0802BC54\n\
+ lsls r0, r2, 6\n\
+ mov r4, r9\n\
+ adds r3, r4, r0\n\
+_0802BC16:\n\
+ cmp r2, r12\n\
+ bne _0802BC28\n\
+ ldr r0, _0802BC24 @ =0x00001022\n\
+ b _0802BC36\n\
+ .align 2, 0\n\
+_0802BC20: .4byte 0x0600c000\n\
+_0802BC24: .4byte 0x00001022\n\
+_0802BC28:\n\
+ cmp r2, r7\n\
+ bne _0802BC34\n\
+ ldr r0, _0802BC30 @ =0x00001028\n\
+ b _0802BC36\n\
+ .align 2, 0\n\
+_0802BC30: .4byte 0x00001028\n\
+_0802BC34:\n\
+ ldr r0, _0802BC68 @ =0x00001025\n\
+_0802BC36:\n\
+ cmp r1, r6\n\
+ beq _0802BC42\n\
+ adds r0, 0x1\n\
+ cmp r1, r5\n\
+ bne _0802BC42\n\
+ adds r0, 0x1\n\
+_0802BC42:\n\
+ mov r4, r8\n\
+ cmp r4, 0\n\
+ beq _0802BC4A\n\
+ movs r0, 0\n\
+_0802BC4A:\n\
+ strh r0, [r3]\n\
+ adds r3, 0x2\n\
+ adds r1, 0x1\n\
+ cmp r1, r5\n\
+ ble _0802BC16\n\
+_0802BC54:\n\
+ mov r2, r10\n\
+ cmp r2, r7\n\
+ ble _0802BC06\n\
+_0802BC5A:\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0802BC68: .4byte 0x00001025\n\
+ .syntax divided");
+}
+
+void sub_802BC6C(void)
+{
+ sub_814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be?
+}
+
+void nullsub_6(void)
+{
+ return;
+}
+
+static void atkF3_nickname_caught_poke(void)
+{
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ sub_8023A80();
+ gBattleCommunication[0]++;
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[1] == 0)
+ {
+ gBattleCommunication[0]++;
+ BeginFastPaletteFade(3);
+ }
+ else
+ gBattleCommunication[0] = 4;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattleCommunication[0] = 4;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick);
+ DoNamingScreen(2, BATTLE_STRUCT->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), sub_800F808);
+ gBattleCommunication[0]++;
+ }
+ break;
+ case 3:
+ if (gMain.callback2 == sub_800F808 && !gPaletteFade.active )
+ {
+ SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ break;
+ case 4:
+ if (CalculatePlayerPartyCount() == 6)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ break;
+ }
+}
+
+static void atkF4_802BEF0(void)
+{
+ gBattleMons[gBankAttacker].hp -= gBattleMoveDamage;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkF5_removeattackerstatus1(void)
+{
+ gBattleMons[gBankAttacker].status1 = 0;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkF6_802BF48(void)
+{
+ gFightStateTracker = 0xC;
+}
+
+static void atkF7_802BF54(void)
+{
+ gFightStateTracker = 0xC;
+ gCurrentMoveTurn = gNoOfAllBanks;
+}
diff --git a/src/battle_6.c b/src/battle_6.c
index 9ea3f240a..c833aef5e 100644
--- a/src/battle_6.c
+++ b/src/battle_6.c
@@ -83,7 +83,7 @@ extern void sub_802E220();
extern void sub_802E2D4();
extern void sub_802E004(void);
extern void sub_802DF30(void);
-extern void sub_80325B8(void);
+extern void BattleMusicStop(void);
extern void PlayerBufferExecCompleted(void);
extern void bx_t1_healthbar_update(void);
extern void nullsub_91(void);
@@ -1101,7 +1101,7 @@ void sub_8030594(void)
void sub_8030674(void)
{
- sub_80325B8();
+ BattleMusicStop();
BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
PlayerBufferExecCompleted();
}
diff --git a/src/battle_7.c b/src/battle_7.c
index a93237608..f2838467e 100644
--- a/src/battle_7.c
+++ b/src/battle_7.c
@@ -808,7 +808,7 @@ void sub_80324F8(struct Pokemon *pkmn, u8 b)
}
}
-void sub_80325B8(void)
+void BattleMusicStop(void)
{
u8 r4 = GetBankByPlayerAI(0);
diff --git a/src/battle_8.c b/src/battle_8.c
new file mode 100644
index 000000000..75f10c4b1
--- /dev/null
+++ b/src/battle_8.c
@@ -0,0 +1,1642 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_ai.h"
+#include "battle_interface.h"
+#include "data2.h"
+#include "graphics.h"
+#include "main.h"
+#include "pokemon.h"
+#include "rng.h"
+#include "rom3.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "util.h"
+
+struct UnknownStruct3
+{
+ u16 moves[4];
+ u8 pp[4];
+ u8 ppBonuses;
+};
+
+extern u8 gActiveBank;
+extern u8 gBattleBufferA[][0x200];
+extern u16 gBattlePartyID[];
+extern u8 gObjectBankIDs[];
+extern u8 gBattleMonForms[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern void (*gBattleBankFunc[])(void);
+extern u8 gUnknown_0300434C[];
+extern u8 gHealthboxIDs[];
+extern u16 gBattleTypeFlags;
+extern u16 gTrainerBattleOpponent;
+extern u32 *gDisableStructMoveAnim;
+extern u32 gMoveDmgMoveAnim;
+extern u16 gMovePowerMoveAnim;
+extern u8 gHappinessMoveAnim;
+extern u16 gWeatherMoveAnim;
+extern u32 gPID_perBank[];
+extern u8 gUnknown_0202F7C4;
+extern u8 gAnimScriptActive;
+extern void (*gAnimScriptCallback)(void);
+extern struct Window gUnknown_03004210;
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042A4;
+extern u8 gDisplayedStringBattle[];
+extern u8 gBankTarget;
+extern u8 gAbsentBankFlags;
+extern bool8 gDoingBattleAnim;
+extern u16 gUnknown_02024DE8;
+extern u8 gUnknown_02024E68[];
+extern MainCallback gPreBattleCallback1;
+
+extern u8 sub_8077ABC();
+extern u8 sub_8077F68();
+extern u8 sub_8079E90();
+extern void sub_8033018(void);
+extern void sub_8031794();
+extern u8 GetBankIdentity(u8);
+extern void sub_8032984(u8, u16);
+extern void sub_80333D4(void);
+extern void sub_80312F0(struct Sprite *);
+extern u8 sub_8046400();
+extern void sub_8032A08();
+extern void sub_8043DB0();
+extern void sub_8033160(void);
+extern u8 sub_8135FBC(void);
+extern u8 get_trainer_class_pic_index(void);
+extern void sub_80313A0(struct Sprite *);
+extern void sub_8032B4C(void);
+extern void sub_8031A6C(u16, u8);
+extern void sub_8032B84(void);
+extern void sub_8078B34(struct Sprite *);
+extern void sub_8032BBC(void);
+extern void oamt_add_pos2_onto_pos1();
+extern void oamt_set_x3A_32();
+extern void sub_803311C(void);
+extern void sub_8010384(struct Sprite *);
+extern bool8 mplay_80342A4(u8);
+extern u8 sub_8031720();
+extern void ExecuteMoveAnim();
+extern void sub_80326EC();
+extern void sub_8031F24(void);
+extern void sub_80324BC();
+extern void BufferStringBattle();
+extern void sub_80331D0(void);
+extern void sub_8036B0C(void);
+extern u8 GetBankByPlayerAI(u8);
+extern u8 sub_8036CD4(void);
+extern void sub_80330C8(void);
+extern void sub_8043D84();
+extern void sub_8045A5C();
+void sub_8033494(void);
+extern void move_anim_start_t2_for_situation();
+extern void bx_blink_t7(void);
+extern void sub_8047858();
+extern u8 GetBankSide(u8);
+extern void sub_80E43C0();
+extern void sub_8044CA0(u8);
+extern void nullsub_45(void);
+extern void sub_8031B74();
+extern bool8 IsDoubleBattle(void);
+extern void sub_8032E2C(void);
+extern u8 sub_8078874();
+extern u8 move_anim_start_t3();
+extern void sub_80334C0(void);
+extern void OpponentBufferExecCompleted(void);
+
+u32 sub_8033598(u8, u8 *);
+void sub_8033E24(u8);
+void sub_803495C(u8, u8);
+void sub_8034B74(void);
+void sub_8035238(void);
+void sub_8035C10(struct Sprite *);
+void sub_8035C44(u8);
+void sub_8035E2C(void);
+
+void OpponentHandleGetAttributes(void)
+{
+ u8 buffer[256];
+ int r6 = 0;
+ s32 i;
+
+ if (gBattleBufferA[gActiveBank][2] == 0)
+ {
+ r6 = sub_8033598(gBattlePartyID[gActiveBank], buffer);
+ }
+ else
+ {
+ u8 r4 = gBattleBufferA[gActiveBank][2];
+
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ r6 += sub_8033598(i, buffer + r6);
+ r4 >>= 1;
+ }
+ }
+ dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer);
+ OpponentBufferExecCompleted();
+}
+
+u32 sub_8033598(u8 a, u8 *buffer)
+{
+ struct BattlePokemon battlePokemon;
+ struct UnknownStruct3 moveData;
+ u8 nickname[20];
+ u8 *src;
+ s16 data16;
+ u32 data32;
+ s32 size = 0;
+
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ battlePokemon.species = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES);
+ battlePokemon.item = GetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM);
+ for (size = 0; size < 4; size++)
+ {
+ battlePokemon.moves[size] = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + size);
+ battlePokemon.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size);
+ }
+ battlePokemon.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES);
+ battlePokemon.friendship = GetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP);
+ battlePokemon.experience = GetMonData(&gEnemyParty[a], MON_DATA_EXP);
+ battlePokemon.hpIV = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV);
+ battlePokemon.attackIV = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV);
+ battlePokemon.defenseIV = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV);
+ battlePokemon.speedIV = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV);
+ battlePokemon.spAttackIV = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV);
+ battlePokemon.spDefenseIV = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV);
+ battlePokemon.personality = GetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY);
+ battlePokemon.status1 = GetMonData(&gEnemyParty[a], MON_DATA_STATUS);
+ battlePokemon.level = GetMonData(&gEnemyParty[a], MON_DATA_LEVEL);
+ battlePokemon.hp = GetMonData(&gEnemyParty[a], MON_DATA_HP);
+ battlePokemon.maxHP = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP);
+ battlePokemon.attack = GetMonData(&gEnemyParty[a], MON_DATA_ATK);
+ battlePokemon.defense = GetMonData(&gEnemyParty[a], MON_DATA_DEF);
+ battlePokemon.speed = GetMonData(&gEnemyParty[a], MON_DATA_SPD);
+ battlePokemon.spAttack = GetMonData(&gEnemyParty[a], MON_DATA_SPATK);
+ battlePokemon.spDefense = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF);
+ battlePokemon.isEgg = GetMonData(&gEnemyParty[a], MON_DATA_IS_EGG);
+ battlePokemon.altAbility = GetMonData(&gEnemyParty[a], MON_DATA_ALT_ABILITY);
+ battlePokemon.otId = GetMonData(&gEnemyParty[a], MON_DATA_OT_ID);
+ GetMonData(&gEnemyParty[a], MON_DATA_NICKNAME, nickname);
+ StringCopy10(battlePokemon.nickname, nickname);
+ GetMonData(&gEnemyParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
+ src = (u8 *)&battlePokemon;
+ for (size = 0; size < sizeof(battlePokemon); size++)
+ buffer[size] = src[size];
+ break;
+ case 1:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 2:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 3:
+ for (size = 0; size < 4; size++)
+ {
+ moveData.moves[size] = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + size);
+ moveData.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size);
+ }
+ moveData.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES);
+ src = (u8 *)&moveData;
+ for (size = 0; size < sizeof(moveData); size++)
+ buffer[size] = src[size];
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 8:
+ for (size = 0; size < 4; size++)
+ buffer[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size);
+ buffer[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES);
+ size++;
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
+ size = 1;
+ break;
+ case 17:
+ data32 = GetMonData(&gEnemyParty[a], MON_DATA_OT_ID);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 18:
+ data32 = GetMonData(&gEnemyParty[a], MON_DATA_EXP);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 19:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_EV);
+ size = 1;
+ break;
+ case 20:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_EV);
+ size = 1;
+ break;
+ case 21:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_EV);
+ size = 1;
+ break;
+ case 22:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_EV);
+ size = 1;
+ break;
+ case 23:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV);
+ size = 1;
+ break;
+ case 24:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV);
+ size = 1;
+ break;
+ case 25:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP);
+ size = 1;
+ break;
+ case 26:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_POKERUS);
+ size = 1;
+ break;
+ case 27:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION);
+ size = 1;
+ break;
+ case 28:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL);
+ size = 1;
+ break;
+ case 29:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_GAME);
+ size = 1;
+ break;
+ case 30:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_POKEBALL);
+ size = 1;
+ break;
+ case 31:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV);
+ buffer[1] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV);
+ buffer[2] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV);
+ buffer[3] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV);
+ buffer[4] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV);
+ buffer[5] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV);
+ size = 6;
+ break;
+ case 32:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV);
+ size = 1;
+ break;
+ case 33:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV);
+ size = 1;
+ break;
+ case 34:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV);
+ size = 1;
+ break;
+ case 35:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV);
+ size = 1;
+ break;
+ case 36:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV);
+ size = 1;
+ break;
+ case 37:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV);
+ size = 1;
+ break;
+ case 38:
+ data32 = GetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 39:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 40:
+ data32 = GetMonData(&gEnemyParty[a], MON_DATA_STATUS);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 41:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_LEVEL);
+ size = 1;
+ break;
+ case 42:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 43:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 44:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_ATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 45:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_DEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 46:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPD);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 47:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 48:
+ data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 49:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_COOL);
+ size = 1;
+ break;
+ case 50:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_BEAUTY);
+ size = 1;
+ break;
+ case 51:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_CUTE);
+ size = 1;
+ break;
+ case 52:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SMART);
+ size = 1;
+ break;
+ case 53:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_TOUGH);
+ size = 1;
+ break;
+ case 54:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SHEEN);
+ size = 1;
+ break;
+ case 55:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON);
+ size = 1;
+ break;
+ case 56:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON);
+ size = 1;
+ break;
+ case 57:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON);
+ size = 1;
+ break;
+ case 58:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON);
+ size = 1;
+ break;
+ case 59:
+ buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON);
+ size = 1;
+ break;
+ }
+ return size;
+}
+
+void dp01t_01_2_read_pokmon_data_slice(void)
+{
+ struct BattlePokemon buffer;
+ u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&buffer + gBattleBufferA[gActiveBank][1];
+ u8 i;
+
+ for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
+ dst[i] = src[i];
+ dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst);
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleSetAttributes(void)
+{
+ u8 i;
+ u8 r4;
+
+ if (gBattleBufferA[gActiveBank][2] == 0)
+ {
+ sub_8033E24(gBattlePartyID[gActiveBank]);
+ }
+ else
+ {
+ r4 = gBattleBufferA[gActiveBank][2];
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ sub_8033E24(i);
+ r4 >>= 1;
+ }
+ }
+ OpponentBufferExecCompleted();
+}
+
+void sub_8033E24(u8 a)
+{
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
+ struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3];
+ s32 i;
+
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ {
+ u8 iv;
+
+ SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species);
+ SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item);
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]);
+ }
+ SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses);
+ SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship);
+ SetMonData(&gEnemyParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience);
+ iv = battlePokemon->hpIV;
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, (u8 *)&iv);
+ iv = battlePokemon->attackIV;
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, (u8 *)&iv);
+ iv = battlePokemon->defenseIV;
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, (u8 *)&iv);
+ iv = battlePokemon->speedIV;
+ SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, (u8 *)&iv);
+ iv = battlePokemon->spAttackIV;
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, (u8 *)&iv);
+ iv = battlePokemon->spDefenseIV;
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv);
+ SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality);
+ SetMonData(&gEnemyParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1);
+ SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level);
+ SetMonData(&gEnemyParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp);
+ SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense);
+ }
+ break;
+ case 1:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 2:
+ SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 3:
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]);
+ }
+ SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses);
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 8:
+ SetMonData(&gEnemyParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
+ SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ SetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 17:
+ SetMonData(&gEnemyParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 18:
+ SetMonData(&gEnemyParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 19:
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 20:
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 21:
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 22:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 23:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 24:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 25:
+ SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 26:
+ SetMonData(&gEnemyParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 27:
+ SetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 28:
+ SetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 29:
+ SetMonData(&gEnemyParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 30:
+ SetMonData(&gEnemyParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 31:
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ break;
+ case 32:
+ SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 33:
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 34:
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 35:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 36:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 37:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 38:
+ SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 39:
+ SetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 40:
+ SetMonData(&gEnemyParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 41:
+ SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 42:
+ SetMonData(&gEnemyParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 43:
+ SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 44:
+ SetMonData(&gEnemyParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 45:
+ SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 46:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 47:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 48:
+ SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 49:
+ SetMonData(&gEnemyParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 50:
+ SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 51:
+ SetMonData(&gEnemyParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 52:
+ SetMonData(&gEnemyParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 53:
+ SetMonData(&gEnemyParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 54:
+ SetMonData(&gEnemyParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 55:
+ SetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 56:
+ SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 57:
+ SetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 58:
+ SetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 59:
+ SetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ }
+}
+
+void sub_8034744(void)
+{
+ u8 *dst;
+ u8 i;
+
+ dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleLoadPokeSprite(void)
+{
+ u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+
+ sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ sub_8077ABC(gActiveBank, 2),
+ sub_8077F68(gActiveBank),
+ sub_8079E90(gActiveBank));
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = gActiveBank;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = species;
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]);
+ sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ gBattleBankFunc[gActiveBank] = sub_8033018;
+}
+
+void OpponentHandleSendOutPoke(void)
+{
+ gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
+
+ sub_803495C(gActiveBank, gBattleBufferA[gActiveBank][2]);
+ gBattleBankFunc[gActiveBank] = sub_80333D4;
+}
+
+void sub_803495C(u8 a, u8 b)
+{
+ u16 species;
+
+ sub_8032AA8(a, b);
+ gBattlePartyID[a] = gBattleBufferA[a][1];
+ species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
+ gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
+ sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
+ gObjectBankIDs[a] = CreateSprite(
+ &gUnknown_02024E8C,
+ sub_8077ABC(a, 2),
+ sub_8077F68(a),
+ sub_8079E90(a));
+ gSprites[gObjectBankIDs[a]].data0 = a;
+ gSprites[gObjectBankIDs[a]].data2 = species;
+ gSprites[gUnknown_0300434C[a]].data1 = gObjectBankIDs[a];
+ gSprites[gObjectBankIDs[a]].oam.paletteNum = a;
+ StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
+ gSprites[gObjectBankIDs[a]].invisible = TRUE;
+ gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFE);
+}
+
+void OpponentHandleReturnPokeToBall(void)
+{
+ if (gBattleBufferA[gActiveBank][1] == 0)
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_8034B74;
+ }
+ else
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8032A08(gActiveBank);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8034B74(void)
+{
+ switch (ewram17810[gActiveBank].unk4)
+ {
+ case 0:
+ if (ewram17800[gActiveBank].unk0_2)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17810[gActiveBank].unk4 = 1;
+ break;
+ case 1:
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 2);
+ gBattleBankFunc[gActiveBank] = sub_8033160;
+ }
+ break;
+ }
+}
+
+void OpponentHandleTrainerThrow(void)
+{
+ u32 trainerPicIndex;
+
+ if (gTrainerBattleOpponent == 0x400)
+ trainerPicIndex = GetSecretBaseTrainerPicIndex();
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ trainerPicIndex = get_trainer_class_pic_index();
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ trainerPicIndex = sub_8135FBC();
+ else
+ trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
+
+ sub_8031A6C(trainerPicIndex, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ 0xB0,
+ 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
+ sub_8079E90(gActiveBank));
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 2;
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
+ gSprites[gObjectBankIDs[gActiveBank]].data5 = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
+ gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_8032B4C;
+}
+
+void OpponentHandleTrainerSlide(void)
+{
+ u32 trainerPicIndex;
+
+ if (gTrainerBattleOpponent == 0x400)
+ trainerPicIndex = GetSecretBaseTrainerPicIndex();
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ trainerPicIndex = get_trainer_class_pic_index();
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ trainerPicIndex = sub_8135FBC();
+ else
+ trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
+
+ sub_8031A6C(trainerPicIndex, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ 0xB0,
+ 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
+ 0x1E);
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 96;
+ gSprites[gObjectBankIDs[gActiveBank]].pos1.x += 32;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
+ gSprites[gObjectBankIDs[gActiveBank]].data5 = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
+ gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_8032B84;
+}
+
+void OpponentHandleTrainerSlideBack(void)
+{
+ oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 35;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = 280;
+ gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
+ oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
+ gBattleBankFunc[gActiveBank] = sub_8032BBC;
+}
+
+void sub_8035030(void)
+{
+ if (ewram17810[gActiveBank].unk4 == 0)
+ {
+ if (ewram17800[gActiveBank].unk0_2)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17810[gActiveBank].unk4++;
+ }
+ else if (!ewram17810[gActiveBank].unk0_6)
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ PlaySE12WithPanning(SE_POKE_DEAD, 63);
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384;
+ gBattleBankFunc[gActiveBank] = sub_803311C;
+ }
+}
+
+void sub_80350D4(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_80350E0(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleBallThrow(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandlePause(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleMoveAnimation(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ u32 r0 = gBattleBufferA[gActiveBank][1]
+ | (gBattleBufferA[gActiveBank][2] << 8);
+
+ gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3];
+ gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4]
+ | (gBattleBufferA[gActiveBank][5] << 8);
+ gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6]
+ | (gBattleBufferA[gActiveBank][7] << 8)
+ | (gBattleBufferA[gActiveBank][8] << 16)
+ | (gBattleBufferA[gActiveBank][9] << 24);
+ gHappinessMoveAnim = gBattleBufferA[gActiveBank][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBank][12]
+ | (gBattleBufferA[gActiveBank][13] << 8);
+ gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16];
+ gPID_perBank[gActiveBank] = *gDisableStructMoveAnim;
+
+ // Dead code. sub_8031720 always returns 0.
+ if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
+ {
+ OpponentBufferExecCompleted();
+ }
+ else
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_8035238;
+ }
+ }
+}
+
+void sub_8035238(void)
+{
+ u16 r4 = gBattleBufferA[gActiveBank][1]
+ | (gBattleBufferA[gActiveBank][2] << 8);
+ u8 r7 = gBattleBufferA[gActiveBank][11];
+
+ switch (ewram17810[gActiveBank].unk4)
+ {
+ case 0:
+ if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ {
+ ewram17800[gActiveBank].unk0_3 = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ }
+ ewram17810[gActiveBank].unk4 = 1;
+ break;
+ case 1:
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ sub_80326EC(0);
+ ExecuteMoveAnim(r4);
+ ewram17810[gActiveBank].unk4 = 2;
+ }
+ break;
+ case 2:
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ sub_80326EC(1);
+ if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ {
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ ewram17800[gActiveBank].unk0_3 = 0;
+ }
+ ewram17810[gActiveBank].unk4 = 3;
+ }
+ break;
+ case 3:
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ sub_8031F24();
+ sub_80324BC(
+ gActiveBank,
+ gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ ewram17810[gActiveBank].unk4 = 0;
+ OpponentBufferExecCompleted();
+ }
+ break;
+ }
+}
+
+void OpponentHandlePrintString(void)
+{
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gBattleBankFunc[gActiveBank] = sub_80331D0;
+}
+
+void OpponentHandlePrintStringPlayerOnly(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_803540C(void)
+{
+ sub_8036B0C();
+ OpponentBufferExecCompleted();
+}
+
+void sub_803541C(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+#ifdef NONMATCHING
+void sub_8035428(void)
+{
+ u16 r4;
+ // Needed to match closer
+ struct {u16 moves[4];} *r5 = (void *)&gBattleBufferA[gActiveBank][4];
+
+ if (gBattleTypeFlags & 0x498)
+ {
+ BattleAI_SetupAIData();
+ r4 = BattleAI_GetAIActionToUse();
+ switch (r4)
+ {
+ case 5:
+ dp01_build_cmdbuf_x21_a_bb(1, 4, 0);
+ break;
+ case 4:
+ dp01_build_cmdbuf_x21_a_bb(1, 3, 0);
+ break;
+ default:
+ if (gBattleMoves[r5->moves[r4]].target & 0x12)
+ gBankTarget = gActiveBank;
+ if (gBattleMoves[r5->moves[r4]].target & 8)
+ {
+ gBankTarget = GetBankByPlayerAI(0);
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ gBankTarget = GetBankByPlayerAI(2);
+ }
+ r4 |= gBankTarget << 8;
+ dp01_build_cmdbuf_x21_a_bb(1, 10, r4);
+ break;
+ }
+ OpponentBufferExecCompleted();
+ }
+ else
+ {
+ u16 r2;
+
+ do
+ {
+ // Can't for the life of me get this to match.
+ r4 = Random() % 4;
+ r2 = r5->moves[r4];
+ } while (r2 == 0);
+
+ if (gBattleMoves[r2].target & 0x12)
+ {
+ r4 |= gActiveBank << 8;
+ dp01_build_cmdbuf_x21_a_bb(1, 10, r4);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ u16 r2 = GetBankByPlayerAI(Random() & 2) << 8;
+
+ dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2);
+ }
+ else
+ {
+ u16 r2 = GetBankByPlayerAI(0) << 8;
+
+ dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2);
+ }
+ OpponentBufferExecCompleted();
+ }
+}
+#else
+__attribute__((naked))
+void sub_8035428(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ ldr r6, _0803545C @ =gActiveBank\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 9\n\
+ ldr r1, _08035460 @ =gUnknown_02023A64\n\
+ adds r5, r0, r1\n\
+ ldr r0, _08035464 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x93\n\
+ lsls r0, 3\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080354F8\n\
+ bl BattleAI_SetupAIData\n\
+ bl BattleAI_GetAIActionToUse\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r4, 0x4\n\
+ beq _08035468\n\
+ cmp r4, 0x5\n\
+ bne _08035474\n\
+ movs r0, 0x1\n\
+ movs r1, 0x4\n\
+ b _0803546C\n\
+ .align 2, 0\n\
+_0803545C: .4byte gActiveBank\n\
+_08035460: .4byte gUnknown_02023A64\n\
+_08035464: .4byte gBattleTypeFlags\n\
+_08035468:\n\
+ movs r0, 0x1\n\
+ movs r1, 0x3\n\
+_0803546C:\n\
+ movs r2, 0\n\
+ bl dp01_build_cmdbuf_x21_a_bb\n\
+ b _080354E0\n\
+_08035474:\n\
+ ldr r3, _080354E8 @ =gBattleMoves\n\
+ lsls r0, r4, 1\n\
+ adds r2, r5, r0\n\
+ ldrh r1, [r2]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldrb r1, [r0, 0x6]\n\
+ movs r0, 0x12\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08035494\n\
+ ldr r1, _080354EC @ =gBankTarget\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1]\n\
+_08035494:\n\
+ ldrh r1, [r2]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldrb r1, [r0, 0x6]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080354CE\n\
+ movs r0, 0\n\
+ bl GetBankByPlayerAI\n\
+ ldr r5, _080354EC @ =gBankTarget\n\
+ strb r0, [r5]\n\
+ ldr r0, _080354F0 @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r2, _080354F4 @ =gBitTable\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _080354CE\n\
+ movs r0, 0x2\n\
+ bl GetBankByPlayerAI\n\
+ strb r0, [r5]\n\
+_080354CE:\n\
+ ldr r0, _080354EC @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 8\n\
+ orrs r4, r0\n\
+ movs r0, 0x1\n\
+ movs r1, 0xA\n\
+ adds r2, r4, 0\n\
+ bl dp01_build_cmdbuf_x21_a_bb\n\
+_080354E0:\n\
+ bl OpponentBufferExecCompleted\n\
+ b _0803558A\n\
+ .align 2, 0\n\
+_080354E8: .4byte gBattleMoves\n\
+_080354EC: .4byte gBankTarget\n\
+_080354F0: .4byte gAbsentBankFlags\n\
+_080354F4: .4byte gBitTable\n\
+_080354F8:\n\
+ movs r6, 0x3\n\
+_080354FA:\n\
+ bl Random\n\
+ adds r4, r0, 0\n\
+ ands r4, r6\n\
+ lsls r0, r4, 1\n\
+ adds r0, r5, r0\n\
+ ldrh r2, [r0]\n\
+ cmp r2, 0\n\
+ beq _080354FA\n\
+ ldr r1, _08035534 @ =gBattleMoves\n\
+ lsls r0, r2, 1\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x6]\n\
+ movs r0, 0x12\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0803553C\n\
+ ldr r0, _08035538 @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 8\n\
+ orrs r4, r0\n\
+ movs r0, 0x1\n\
+ movs r1, 0xA\n\
+ adds r2, r4, 0\n\
+ bl dp01_build_cmdbuf_x21_a_bb\n\
+ b _08035586\n\
+ .align 2, 0\n\
+_08035534: .4byte gBattleMoves\n\
+_08035538: .4byte gActiveBank\n\
+_0803553C:\n\
+ ldr r0, _0803556C @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08035570\n\
+ bl Random\n\
+ movs r1, 0x2\n\
+ ands r1, r0\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r0, r1, 0\n\
+ bl GetBankByPlayerAI\n\
+ adds r2, r0, 0\n\
+ lsls r2, 24\n\
+ lsrs r2, 16\n\
+ orrs r2, r4\n\
+ movs r0, 0x1\n\
+ movs r1, 0xA\n\
+ bl dp01_build_cmdbuf_x21_a_bb\n\
+ b _08035586\n\
+ .align 2, 0\n\
+_0803556C: .4byte gBattleTypeFlags\n\
+_08035570:\n\
+ movs r0, 0\n\
+ bl GetBankByPlayerAI\n\
+ adds r2, r0, 0\n\
+ lsls r2, 24\n\
+ lsrs r2, 16\n\
+ orrs r2, r4\n\
+ movs r0, 0x1\n\
+ movs r1, 0xA\n\
+ bl dp01_build_cmdbuf_x21_a_bb\n\
+_08035586:\n\
+ bl OpponentBufferExecCompleted\n\
+_0803558A:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_8035590(void)
+{
+ // What is this?
+ dp01_build_cmdbuf_x23_aa_0(1, ewram[0x160D4 + gActiveBank / 2 * 2]);
+ OpponentBufferExecCompleted();
+}
+
+void sub_80355C0(void)
+{
+ s32 r4;
+
+ if (ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2] == 6)
+ {
+ u8 r6;
+ u8 r5;
+
+ r4 = sub_8036CD4();
+ if (r4 == 6)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ r5 = GetBankByPlayerAI(1);
+ r6 = r5;
+ }
+ else
+ {
+ r6 = GetBankByPlayerAI(1);
+ r5 = GetBankByPlayerAI(3);
+ }
+ for (r4 = 0; r4 < 6; r4++)
+ {
+ if (GetMonData(&gEnemyParty[r4], MON_DATA_HP) != 0
+ && r4 != gBattlePartyID[r6]
+ && r4 != gBattlePartyID[r5])
+ break;
+ }
+ }
+ }
+ else
+ {
+ r4 = ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2];
+ ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2] = 6;
+ }
+ ewram[0x16068 + gActiveBank] = r4;
+ dp01_build_cmdbuf_x22_a_three_bytes(1, r4, 0);
+ OpponentBufferExecCompleted();
+}
+
+void sub_80356C0(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleHealthBarUpdate(void)
+{
+ s16 r7;
+
+ load_gfxc_health_bar(0);
+ r7 = (gBattleBufferA[gActiveBank][3] << 8) | gBattleBufferA[gActiveBank][2];
+ if (r7 != 0x7FFF)
+ {
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 hp = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+
+ sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, hp, r7);
+ }
+ else
+ {
+ u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+
+ sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
+ }
+ gBattleBankFunc[gActiveBank] = sub_80330C8;
+}
+
+void OpponentHandleExpBarUpdate(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleStatusIconUpdate(void)
+{
+ if (mplay_80342A4(gActiveBank) == 0)
+ {
+ sub_8045A5C(gHealthboxIDs[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], 9);
+ ewram17810[gActiveBank].unk0_4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_8033494;
+ }
+}
+
+void OpponentHandleStatusAnimation(void)
+{
+ if (mplay_80342A4(gActiveBank) == 0)
+ {
+ move_anim_start_t2_for_situation(
+ gBattleBufferA[gActiveBank][1],
+ gBattleBufferA[gActiveBank][2]
+ | (gBattleBufferA[gActiveBank][3] << 8)
+ | (gBattleBufferA[gActiveBank][4] << 16)
+ | (gBattleBufferA[gActiveBank][5] << 24));
+ gBattleBankFunc[gActiveBank] = sub_8033494;
+ }
+}
+
+void OpponentHandleStatusXor(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_80358B0(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleDMATransfer(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_80358C8(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_80358D4(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_80358E0(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_80358EC(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_80358F8(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_8035904(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_8035910(void)
+{
+ gUnknown_020238C8.unk0_0 = 0;
+ OpponentBufferExecCompleted();
+}
+
+void sub_803592C(void)
+{
+ gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
+ OpponentBufferExecCompleted();
+}
+
+void sub_8035964(void)
+{
+ gUnknown_020238C8.unk0_7 = 0;
+ OpponentBufferExecCompleted();
+}
+
+void sub_803597C(void)
+{
+ gUnknown_020238C8.unk0_7 ^= 1;
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleHitAnimation(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ {
+ OpponentBufferExecCompleted();
+ }
+ else
+ {
+ gDoingBattleAnim = TRUE;
+ gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
+ sub_8047858(gActiveBank);
+ gBattleBankFunc[gActiveBank] = bx_blink_t7;
+ }
+}
+
+void sub_8035A14(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleEffectivenessSound(void)
+{
+ s8 pan;
+
+ if (GetBankSide(gActiveBank) == 0)
+ pan = -64;
+ else
+ pan = 63;
+ PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ OpponentBufferExecCompleted();
+}
+
+void sub_8035A64(void)
+{
+ PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleFaintingCry(void)
+{
+ PlayCry3(
+ GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
+ 25, 5);
+ OpponentBufferExecCompleted();
+}
+
+void dp01t_2E_7_battle_intro(void)
+{
+ sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ gUnknown_02024DE8 |= 1;
+ OpponentBufferExecCompleted();
+}
+
+void sub_8035B04(void)
+{
+ u8 taskId;
+
+ oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 35;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = 280;
+ gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
+ oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10);
+ taskId = CreateTask(sub_8035C44, 5);
+ gTasks[taskId].data[0] = gActiveBank;
+ if (ewram17810[gActiveBank].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ ewram17840.unk9_0 = 1;
+ gBattleBankFunc[gActiveBank] = nullsub_45;
+}
+
+void sub_8035C10(struct Sprite *sprite)
+{
+ sub_8031B74(sprite->oam.affineParam);
+ sprite->oam.tileNum = sprite->data5;
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+}
+
+void sub_8035C44(u8 taskId)
+{
+ u8 r9;
+
+ r9 = gActiveBank;
+ gActiveBank = gTasks[taskId].data[0];
+ if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_803495C(gActiveBank, 0);
+ }
+ else
+ {
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_803495C(gActiveBank, 0);
+ gActiveBank ^= 2;
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_803495C(gActiveBank, 0);
+ gActiveBank ^= 2;
+ }
+ gBattleBankFunc[gActiveBank] = sub_8032E2C;
+ gActiveBank = r9;
+ DestroyTask(taskId);
+}
+
+void dp01t_30_7_0803D67C(void)
+{
+ if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
+ {
+ OpponentBufferExecCompleted();
+ return;
+ }
+
+ ewram17810[gActiveBank].unk0_0 = 1;
+ if (gBattleBufferA[gActiveBank][2] != 0)
+ {
+ if (ewram17810[gActiveBank].unk1_1 < 2)
+ {
+ ewram17810[gActiveBank].unk1_1++;
+ return;
+ }
+ else
+ {
+ ewram17810[gActiveBank].unk1_1 = 0;
+ }
+ }
+ gUnknown_02024E68[gActiveBank] = sub_8044804(
+ gActiveBank,
+ (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4],
+ gBattleBufferA[gActiveBank][1],
+ gBattleBufferA[gActiveBank][2]);
+ ewram17810[gActiveBank].unk5 = 0;
+ if (gBattleBufferA[gActiveBank][2] != 0)
+ ewram17810[gActiveBank].unk5 = 0x5D;
+ gBattleBankFunc[gActiveBank] = sub_8035E2C;
+}
+
+void sub_8035E2C(void)
+{
+ if (ewram17810[gActiveBank].unk5++ >= 93)
+ {
+ ewram17810[gActiveBank].unk5 = 0;
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8035E6C(void)
+{
+ if (ewram17810[gActiveBank].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ OpponentBufferExecCompleted();
+}
+
+void sub_8035EB8(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleSpriteInvisibility(void)
+{
+ if (sub_8078874(gActiveBank) != 0)
+ {
+ gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ sub_8031F88(gActiveBank);
+ }
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleBattleAnimation(void)
+{
+ if (mplay_80342A4(gActiveBank) == 0)
+ {
+ u8 r3 = gBattleBufferA[gActiveBank][1];
+ u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
+ OpponentBufferExecCompleted();
+ else
+ gBattleBankFunc[gActiveBank] = sub_80334C0;
+ }
+}
+
+void OpponentHandleLinkStandbyMsg(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void OpponentHandleResetActionMoveSelection(void)
+{
+ OpponentBufferExecCompleted();
+}
+
+void sub_8035FA4(void)
+{
+ if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ {
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(gMain.savedCallback);
+ }
+ OpponentBufferExecCompleted();
+}
+
+void nullsub_46(void)
+{
+}
diff --git a/src/battle_ai.c b/src/battle_ai.c
index d262e69c8..a1cb805d9 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai.c
@@ -31,6 +31,14 @@ extern u8 gCritMultiplier;
extern u16 gTrainerBattleOpponent;
extern u8 *BattleAIs[];
+enum
+{
+ WEATHER_TYPE_SUN,
+ WEATHER_TYPE_RAIN,
+ WEATHER_TYPE_SANDSTORM,
+ WEATHER_TYPE_HAIL,
+};
+
/*
gAIScriptPtr is a pointer to the next battle AI cmd command to read.
when a command finishes processing, gAIScriptPtr is incremented by
@@ -38,7 +46,7 @@ the number of bytes that the current command had reserved for arguments
in order to read the next command correctly. refer to battle_ai_scripts.s for the
AI scripts.
*/
-extern u8 *gAIScriptPtr;
+EWRAM_DATA u8 *gAIScriptPtr = NULL;
static void BattleAICmd_if_random_less_than(void);
static void BattleAICmd_if_random_greater_than(void);
@@ -896,7 +904,7 @@ static void BattleAICmd_if_user_cant_damage(void)
static void BattleAICmd_get_turn_count(void)
{
- AI_THINKING_STRUCT->funcResult = gBattleResults.BattleTurnCounter;
+ AI_THINKING_STRUCT->funcResult = gBattleResults.battleTurnCounter;
gAIScriptPtr += 1;
}
@@ -1412,8 +1420,8 @@ static void BattleAICmd_get_highest_possible_damage(void)
s32 i;
gDynamicBasePower = 0;
- BATTLE_STRUCT->DynamicMoveType = 0;
- BATTLE_STRUCT->DmgMultiplier = 1;
+ BATTLE_STRUCT->dynamicMoveType = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
AI_THINKING_STRUCT->funcResult = 0;
@@ -1452,8 +1460,8 @@ static void BattleAICmd_if_damage_bonus(void)
u8 damageVar;
gDynamicBasePower = 0;
- BATTLE_STRUCT->DynamicMoveType = 0;
- BATTLE_STRUCT->DmgMultiplier = 1;
+ BATTLE_STRUCT->dynamicMoveType = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
@@ -1562,14 +1570,14 @@ static void BattleAICmd_if_status_not_in_party(void)
static void BattleAICmd_get_weather(void)
{
- if (gBattleWeather & WEATHER_RAINY)
- AI_THINKING_STRUCT->funcResult = WEATHER_RAIN;
- if (gBattleWeather & WEATHER_SANDSTORMY)
- AI_THINKING_STRUCT->funcResult = WEATHER_SANDSTORM;
- if (gBattleWeather & WEATHER_SUNNY)
- AI_THINKING_STRUCT->funcResult = WEATHER_SUN;
- if (gBattleWeather & weather_hail)
- AI_THINKING_STRUCT->funcResult = WEATHER_HAIL;
+ if (gBattleWeather & WEATHER_RAIN_ANY)
+ AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_RAIN;
+ if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SANDSTORM;
+ if (gBattleWeather & WEATHER_SUN_ANY)
+ AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SUN;
+ if (gBattleWeather & WEATHER_HAIL)
+ AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_HAIL;
gAIScriptPtr += 1;
}
@@ -1659,8 +1667,8 @@ static void BattleAICmd_if_can_faint(void)
}
gDynamicBasePower = 0;
- BATTLE_STRUCT->DynamicMoveType = 0;
- BATTLE_STRUCT->DmgMultiplier = 1;
+ BATTLE_STRUCT->dynamicMoveType = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
@@ -1688,8 +1696,8 @@ static void BattleAICmd_if_cant_faint(void)
}
gDynamicBasePower = 0;
- BATTLE_STRUCT->DynamicMoveType = 0;
- BATTLE_STRUCT->DmgMultiplier = 1;
+ BATTLE_STRUCT->dynamicMoveType = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
@@ -1843,7 +1851,7 @@ static void BattleAICmd_if_last_move_did_damage(void)
if (gAIScriptPtr[2] == 0)
{
- if (gDisableStructs[index].DisabledMove == 0)
+ if (gDisableStructs[index].disabledMove == 0)
{
gAIScriptPtr += 7;
return;
@@ -1856,7 +1864,7 @@ static void BattleAICmd_if_last_move_did_damage(void)
gAIScriptPtr += 7;
return;
}
- else if (gDisableStructs[index].EncoredMove != 0)
+ else if (gDisableStructs[index].encoredMove != 0)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
return;
@@ -1869,7 +1877,7 @@ static void BattleAICmd_if_encored(void)
switch (gAIScriptPtr[1])
{
case 0: // _08109348
- if (gDisableStructs[gActiveBank].DisabledMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBank].disabledMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -1877,7 +1885,7 @@ static void BattleAICmd_if_encored(void)
gAIScriptPtr += 6;
return;
case 1: // _08109370
- if (gDisableStructs[gActiveBank].EncoredMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBank].encoredMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -1954,7 +1962,7 @@ static void BattleAICmd_is_first_turn(void)
else
index = gBankTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].IsFirstTurn;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[index].isFirstTurn;
gAIScriptPtr += 2;
}
@@ -1968,7 +1976,7 @@ static void BattleAICmd_get_stockpile_count(void)
else
index = gBankTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].StockpileCounter;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[index].stockpileCounter;
gAIScriptPtr += 2;
}
@@ -2025,7 +2033,7 @@ static void BattleAICmd_get_protect_count(void)
else
index = gBankTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].ProtectUses;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[index].protectUses;
gAIScriptPtr += 2;
}
@@ -2104,7 +2112,7 @@ static void BattleAICmd_if_level_compare(void)
static void BattleAICmd_if_taunted(void)
{
- if (gDisableStructs[gBankTarget].taunt != 0)
+ if (gDisableStructs[gBankTarget].tauntTimer1 != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -2112,7 +2120,7 @@ static void BattleAICmd_if_taunted(void)
static void BattleAICmd_if_not_taunted(void)
{
- if (gDisableStructs[gBankTarget].taunt == 0)
+ if (gDisableStructs[gBankTarget].tauntTimer1 == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 55ede1788..6bd98099a 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -49,9 +49,11 @@ extern u16 gUnknown_03004280;
extern u16 gUnknown_03004288;
extern u16 gUnknown_030042C0;
extern u16 gUnknown_030042C4;
-extern u16 gSoundAnimFramesToWait;
-extern u16 gAnimSpriteIndexArray[8];
-extern s16 gBattleAnimArgs[8];
+
+u16 gSoundAnimFramesToWait;
+s16 gBattleAnimArgs[8];
+u16 gAnimSpriteIndexArray[8];
+
extern struct MusicPlayerInfo gMPlay_BGM;
extern struct MusicPlayerInfo gMPlay_SE1;
extern struct MusicPlayerInfo gMPlay_SE2;
diff --git a/src/battle_anim_807B69C.c b/src/battle_anim_807B69C.c
new file mode 100644
index 000000000..42932877b
--- /dev/null
+++ b/src/battle_anim_807B69C.c
@@ -0,0 +1,353 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "blend_palette.h"
+#include "decompress.h"
+#include "palette.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+
+extern u8 gBattleAnimPlayerMonIndex;
+extern u8 gBattleAnimEnemyMonIndex;
+extern bool8 gAnimScriptActive;
+extern void (*gAnimScriptCallback)(void);
+extern s16 gBattleAnimArgs[];
+extern u8 gBattleAnimEnemyMonIndex;
+extern u8 gObjectBankIDs[];
+extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
+extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
+extern const u8 *const gBattleAnims_StatusConditions[];
+extern const struct OamData gOamData_837E05C;
+extern const struct OamData gOamData_837DF24;
+
+extern u8 sub_8077ABC(u8, u8);
+extern void sub_80E32E0(u8);
+
+
+static const struct Subsprite gSubspriteTable_83931B8[] =
+{
+ {.x = -16, .y = -16, .shape = ST_OAM_SQUARE, .size = 3, .tileOffset = 0, .priority = 2},
+ {.x = -16, .y = 48, .shape = ST_OAM_H_RECTANGLE, .size = 3, .tileOffset = 64, .priority = 2},
+ {.x = 48, .y = -16, .shape = ST_OAM_V_RECTANGLE, .size = 3, .tileOffset = 96, .priority = 2},
+ {.x = 48, .y = 48, .shape = ST_OAM_SQUARE, .size = 2, .tileOffset = 128, .priority = 2},
+};
+
+static const struct SubspriteTable gSubspriteTables_83931D8[] =
+{
+ {ARRAY_COUNT(gSubspriteTable_83931B8), gSubspriteTable_83931B8},
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83931E0 =
+{
+ .tileTag = 10010,
+ .paletteTag = 10010,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static void sub_807B870(struct Sprite *);
+static const struct SpriteTemplate gSpriteTemplate_83931F8 =
+{
+ .tileTag = 10136,
+ .paletteTag = 10136,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807B870,
+};
+
+static void sub_807B7E0(u8);
+static void sub_807B8A4(struct Sprite *);
+static void sub_807B9D8(u8);
+static void sub_807BA24(u8);
+static void sub_807BAD4(u8);
+static void sub_807BB24(u8);
+static void sub_807BDAC(u8);
+
+u8 unref_sub_807B69C(u8 a, u8 b)
+{
+ u8 spriteId1 = gObjectBankIDs[a];
+ u8 taskId = CreateTask(sub_807B7E0, 10);
+ u8 spriteId2;
+ u8 i;
+
+ LoadCompressedObjectPic(&gBattleAnimPicTable[136]);
+ LoadCompressedObjectPalette(&gBattleAnimPaletteTable[136]);
+ gTasks[taskId].data[0] = a;
+ if (b != 0)
+ {
+ gTasks[taskId].data[1] = 0x1F;
+ for (i = 0; i < 10; i++)
+ {
+ spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y + 32, 0);
+ gSprites[spriteId2].data0 = i * 51;
+ gSprites[spriteId2].data1 = -256;
+ gSprites[spriteId2].invisible = TRUE;
+ if (i > 4)
+ gSprites[spriteId2].data6 = 21;
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 0x7C00;
+ for (i = 0; i < 10; i++)
+ {
+ spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y - 32, 0);
+ gSprites[spriteId2].data0 = i * 51;
+ gSprites[spriteId2].data1 = 256;
+ gSprites[spriteId2].invisible = TRUE;
+ if (i > 4)
+ gSprites[spriteId2].data6 = 21;
+ }
+ }
+ gSprites[spriteId2].data7 = 1;
+ return taskId;
+}
+
+static void sub_807B7E0(u8 taskId)
+{
+ if (gTasks[taskId].data[2] == 2)
+ {
+ gTasks[taskId].data[2] = 0;
+ BlendPalette(0x100 + gTasks[taskId].data[0] * 16, 16, gTasks[taskId].data[4], gTasks[taskId].data[1]);
+ if (gTasks[taskId].data[5] == 0)
+ {
+ gTasks[taskId].data[4]++;
+ if (gTasks[taskId].data[4] > 8)
+ gTasks[taskId].data[5] ^= 1;
+ }
+ else
+ {
+ u16 var = gTasks[taskId].data[4];
+
+ gTasks[taskId].data[4]--;
+ if (gTasks[taskId].data[4] < 0)
+ {
+ gTasks[taskId].data[4] = var;
+ gTasks[taskId].data[5] ^= 1;
+ gTasks[taskId].data[3]++;
+ if (gTasks[taskId].data[3] == 2)
+ DestroyTask(taskId);
+ }
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[2]++;
+ }
+}
+
+static void sub_807B870(struct Sprite *sprite)
+{
+ if (sprite->data6 == 0)
+ {
+ sprite->invisible = FALSE;
+ sprite->callback = sub_807B8A4;
+ sub_807B8A4(sprite);
+ }
+ else
+ {
+ sprite->data6 --;
+ }
+}
+
+static void sub_807B8A4(struct Sprite *sprite)
+{
+ sprite->pos2.x = Cos(sprite->data0, 32);
+ sprite->pos2.y = Sin(sprite->data0, 8);
+ if (sprite->data0 < 128)
+ sprite->subpriority = 29;
+ else
+ sprite->subpriority = 31;
+ sprite->data0 = (sprite->data0 + 8) & 0xFF;
+ sprite->data5 += sprite->data1;
+ sprite->pos2.y += sprite->data5 >> 8;
+ sprite->data2++;
+ if (sprite->data2 == 52)
+ {
+ if (sprite->data7 != 0)
+ DestroySpriteAndFreeResources(sprite);
+ else
+ DestroySprite(sprite);
+ }
+}
+
+void sub_807B920(u8 taskId)
+{
+ s16 x = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) - 32;
+ s16 y = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) - 36;
+ u8 spriteId;
+
+ if (IsContest())
+ x -= 6;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x1000;
+ spriteId = CreateSprite(&gSpriteTemplate_83931E0, x, y, 4);
+ SetSubspriteTables(&gSprites[spriteId], gSubspriteTables_83931D8);
+ gTasks[taskId].data[15] = spriteId;
+ gTasks[taskId].func = sub_807B9D8;
+}
+
+static void sub_807B9D8(u8 taskId)
+{
+ gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[1] == 10)
+ {
+ gTasks[taskId].func = sub_807BA24;
+ gTasks[taskId].data[1] = 0;
+ }
+ else
+ {
+ u8 var = gTasks[taskId].data[1];
+
+ REG_BLDALPHA = ((16 - var) << 8) | var;
+ }
+}
+
+static void sub_807BA24(u8 taskId)
+{
+ u8 r2 = IndexOfSpritePaletteTag(0x271A);
+
+ if (gTasks[taskId].data[1]++ > 13)
+ {
+ gTasks[taskId].data[2]++;
+ if (gTasks[taskId].data[2] == 3)
+ {
+ u16 temp;
+
+ temp = gPlttBufferFaded[0x100 + r2 * 16 + 13];
+ gPlttBufferFaded[0x100 + r2 * 16 + 13] = gPlttBufferFaded[0x100 + r2 * 16 + 14];
+ gPlttBufferFaded[0x100 + r2 * 16 + 14] = gPlttBufferFaded[0x100 + r2 * 16 + 15];
+ gPlttBufferFaded[0x100 + r2 * 16 + 15] = temp;
+
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3]++;
+ if (gTasks[taskId].data[3] == 3)
+ {
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[4]++;
+ if (gTasks[taskId].data[4] == 2)
+ {
+ gTasks[taskId].data[1] = 9;
+ gTasks[taskId].func = sub_807BAD4;
+ }
+ }
+ }
+ }
+}
+
+static void sub_807BAD4(u8 taskId)
+{
+ gTasks[taskId].data[1]--;
+ if (gTasks[taskId].data[1] == -1)
+ {
+ gTasks[taskId].func = sub_807BB24;
+ gTasks[taskId].data[1] = 0;
+ }
+ else
+ {
+ u8 var = gTasks[taskId].data[1];
+
+ REG_BLDALPHA = ((16 - var) << 8) | var;
+ }
+}
+
+static void sub_807BB24(u8 taskId)
+{
+ gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[1] == 37)
+ {
+ u8 spriteId = gTasks[taskId].data[15];
+
+ FreeSpriteOamMatrix(&gSprites[spriteId]);
+ DestroySprite(&gSprites[spriteId]);
+ }
+ else if (gTasks[taskId].data[1] == 39)
+ {
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_807BB88(u8 taskId)
+{
+ s16 r5;
+ s16 r2;
+ s16 r3 = 0;
+
+ switch (ewram17840.unk0)
+ {
+ case 15: r5 = 0; r2 = 0; break;
+ case 16: r5 = 0; r2 = 1; break;
+ case 17: r5 = 0; r2 = 3; break;
+ case 18: r5 = 0; r2 = 5; break;
+ case 19: r5 = 0; r2 = 6; break;
+ case 20: r5 = 0; r2 = 2; break;
+ case 21: r5 = 0; r2 = 4; break;
+ case 22: r5 = 1; r2 = 0; break;
+ case 23: r5 = 1; r2 = 1; break;
+ case 24: r5 = 1; r2 = 3; break;
+ case 25: r5 = 1; r2 = 5; break;
+ case 26: r5 = 1; r2 = 6; break;
+ case 27: r5 = 1; r2 = 2; break;
+ case 28: r5 = 1; r2 = 4; break;
+ case 39: r5 = 0; r2 = 0; r3 = 1; break;
+ case 40: r5 = 0; r2 = 1; r3 = 1; break;
+ case 41: r5 = 0; r2 = 3; r3 = 1; break;
+ case 42: r5 = 0; r2 = 5; r3 = 1; break;
+ case 43: r5 = 0; r2 = 6; r3 = 1; break;
+ case 44: r5 = 0; r2 = 2; r3 = 1; break;
+ case 45: r5 = 0; r2 = 4; r3 = 1; break;
+ case 46: r5 = 1; r2 = 0; r3 = 1; break;
+ case 47: r5 = 1; r2 = 1; r3 = 1; break;
+ case 48: r5 = 1; r2 = 3; r3 = 1; break;
+ case 49: r5 = 1; r2 = 5; r3 = 1; break;
+ case 50: r5 = 1; r2 = 6; r3 = 1; break;
+ case 51: r5 = 1; r2 = 2; r3 = 1; break;
+ case 52: r5 = 1; r2 = 4; r3 = 1; break;
+ case 55: r5 = 0; r2 = 0xFF; r3 = 0; break;
+ case 56: r5 = 0; r2 = 0xFF; r3 = 1; break;
+ case 57: r5 = 1; r2 = 0xFF; r3 = 0; break;
+ case 58: r5 = 1; r2 = 0xFF; r3 = 1; break;
+
+ default:
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ gBattleAnimArgs[0] = r5;
+ gBattleAnimArgs[1] = r2;
+ gBattleAnimArgs[2] = 0;
+ gBattleAnimArgs[3] = 0;
+ gBattleAnimArgs[4] = r3;
+ gTasks[taskId].func = sub_80E32E0;
+ sub_80E32E0(taskId);
+}
+
+void move_anim_start_t2(u8 a, u8 b)
+{
+ u8 taskId;
+
+ gBattleAnimPlayerMonIndex = a;
+ gBattleAnimEnemyMonIndex = a;
+ DoMoveAnim(gBattleAnims_StatusConditions, b, 0);
+ taskId = CreateTask(sub_807BDAC, 10);
+ gTasks[taskId].data[0] = a;
+}
+
+static void sub_807BDAC(u8 taskId)
+{
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ ewram17810[gTasks[taskId].data[0]].unk0_4 = 0;
+ DestroyTask(taskId);
+ }
+}
diff --git a/src/battle_records.c b/src/battle_records.c
index cf86787f0..61dc09792 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -1,7 +1,244 @@
#include "global.h"
#include "battle_records.h"
+#include "game_stat.h"
+#include "link.h"
#include "menu.h"
+#include "rom4.h"
+#include "string_util.h"
#include "strings2.h"
+#include "trainer_card.h"
+
+extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
+extern u8 gBattleOutcome;
+
+static void InitLinkBattleRecord(struct LinkBattleRecord *record)
+{
+ CpuFill16(0, record, sizeof(struct LinkBattleRecord));
+ record->name[0] = 0xFF;
+ record->trainerId = 0;
+ record->wins = 0;
+ record->losses = 0;
+ record->draws = 0;
+}
+
+static void InitLinkBattleRecords_(struct LinkBattleRecord *records)
+{
+ int i;
+ for (i = 0; i < 5; i++)
+ {
+ InitLinkBattleRecord(records + i);
+ }
+ SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0);
+ SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0);
+ SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0);
+}
+
+static int GetLinkBattleRecordTotalBattles(struct LinkBattleRecord *record)
+{
+ return record->wins + record->losses + record->draws;
+}
+
+static int FindLinkBattleRecord(struct LinkBattleRecord *records, u8 *name, u16 trainerId)
+{
+ int i;
+
+ for (i = 0; i < 5; i++)
+ {
+ memcpy(gStringVar1, records[i].name, 7);
+ gStringVar1[7] = EOS;
+ if (!StringCompareWithoutExtCtrlCodes(gStringVar1, name) && records[i].trainerId == trainerId)
+ return i;
+ }
+
+ return 5;
+}
+
+static void SortLinkBattleRecords(struct LinkBattleRecord *records)
+{
+ int i, j;
+
+ for (i = 4; i > 0; i--)
+ {
+ for (j = i - 1; j >= 0; j--)
+ {
+ int totalBattlesI = GetLinkBattleRecordTotalBattles(records + i);
+ int totalBattlesJ = GetLinkBattleRecordTotalBattles(records + j);
+
+ if (totalBattlesI > totalBattlesJ)
+ {
+ struct LinkBattleRecord temp = *(records + i);
+ *(records + i) = *(records + j);
+ *(records + j) = temp;
+ }
+ }
+ }
+}
+
+static void UpdateLinkBattleRecord(struct LinkBattleRecord *record, int battleOutcome)
+{
+ switch (battleOutcome)
+ {
+ case 1:
+ record->wins++;
+ if (record->wins > 9999)
+ record->wins = 9999;
+ break;
+ case 2:
+ record->losses++;
+ if (record->losses > 9999)
+ record->losses = 9999;
+ break;
+ case 3:
+ record->draws++;
+ if (record->draws > 9999)
+ record->draws = 9999;
+ break;
+ }
+}
+
+static void UpdateLinkBattleGameStats(int battleOutcome)
+{
+ u8 stat;
+
+ switch (battleOutcome)
+ {
+ case 1:
+ stat = GAME_STAT_LINK_BATTLE_WINS;
+ break;
+ case 2:
+ stat = GAME_STAT_LINK_BATTLE_LOSSES;
+ break;
+ case 3:
+ stat = GAME_STAT_LINK_BATTLE_DRAWS;
+ break;
+ default:
+ return;
+ }
+
+ if (GetGameStat(stat) < 9999)
+ IncrementGameStat(stat);
+}
+
+static void UpdateLinkBattleRecords_(struct LinkBattleRecord *records, u8 *name, u16 trainerId, int battleOutcome, u8 language)
+{
+ int index;
+ UpdateLinkBattleGameStats(battleOutcome);
+ SortLinkBattleRecords(records);
+ index = FindLinkBattleRecord(records, name, trainerId);
+ if (index == 5)
+ {
+ index = 4;
+ InitLinkBattleRecord(records + index);
+ if (language == LANGUAGE_JAPANESE)
+ {
+ records[index].name[0] = EXT_CTRL_CODE_BEGIN;
+ records[index].name[1] = 0x15;
+ StringCopyN(records[index].name + 2, name, 5);
+ }
+ else
+ {
+ StringCopyN(records[index].name, name, 7);
+ }
+
+ // needed block to match
+ {
+ struct LinkBattleRecord *record = records + index;
+ record->trainerId = trainerId;
+ }
+ }
+ UpdateLinkBattleRecord(records + index, battleOutcome);
+ SortLinkBattleRecords(records);
+}
+
+void InitLinkBattleRecords(void)
+{
+ InitLinkBattleRecords_(gSaveBlock1.linkBattleRecords);
+}
+
+static void IncTrainerCardWins(int id)
+{
+ u16 *wins = &gTrainerCards[id].linkBattleWins;
+ (*wins)++;
+ if (*wins > 9999)
+ *wins = 9999;
+}
+
+static void IncTrainerCardLosses(int id)
+{
+ u16 *losses = &gTrainerCards[id].linkBattleLosses;
+ (*losses)++;
+ if (*losses > 9999)
+ *losses = 9999;
+}
+
+static void UpdateTrainerCardWinsLosses(int id)
+{
+ switch (gBattleOutcome)
+ {
+ case 1:
+ IncTrainerCardWins(id ^ 1);
+ IncTrainerCardLosses(id);
+ break;
+ case 2:
+ IncTrainerCardLosses(id ^ 1);
+ IncTrainerCardWins(id);
+ break;
+ }
+}
+
+void UpdateLinkBattleRecords(int id)
+{
+ UpdateTrainerCardWinsLosses(id);
+ UpdateLinkBattleRecords_(
+ gSaveBlock1.linkBattleRecords,
+ gTrainerCards[id].playerName,
+ gTrainerCards[id].trainerId,
+ gBattleOutcome,
+ gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language);
+}
+
+static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records)
+{
+ ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ ConvertIntToDecimalStringN_DigitWidth6(gStringVar2, GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ ConvertIntToDecimalStringN_DigitWidth6(gStringVar3, GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS), STR_CONV_MODE_RIGHT_ALIGN, 4);
+ MenuPrint(gOtherText_WinRecord, 3, 3);
+}
+
+static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y)
+{
+ if (!record->wins && !record->losses && !record->draws)
+ {
+ u8 buffer[16];
+ buffer[0] = EXT_CTRL_CODE_BEGIN;
+ buffer[1] = 0x14;
+ buffer[2] = 6;
+ buffer[3] = EXT_CTRL_CODE_BEGIN;
+ buffer[4] = 0x11;
+ buffer[5] = 1;
+ StringCopy(buffer + 6, gOtherText_SevenDashes);
+ MenuPrint(buffer, 3, y);
+ StringCopy(buffer + 6, gOtherText_FourDashes);
+ MenuPrint(buffer, 11, y);
+ MenuPrint(buffer, 17, y);
+ MenuPrint(buffer, 23, y);
+ }
+ else
+ {
+ StringFillWithTerminator(gStringVar1, 8);
+ StringCopyN(gStringVar1, record->name, 7);
+ MenuPrint(gStringVar1, 3, y);
+ gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
+ gStringVar1[1] = 0x14;
+ gStringVar1[2] = 6;
+ ConvertIntToDecimalStringN(gStringVar1 + 3, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ MenuPrint(gStringVar1, 11, y);
+ ConvertIntToDecimalStringN(gStringVar1 + 3, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ MenuPrint(gStringVar1, 17, y);
+ ConvertIntToDecimalStringN(gStringVar1 + 3, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4);
+ MenuPrint(gStringVar1, 23, y);
+ }
+}
void ShowLinkBattleRecords(void) {
s32 i;
@@ -12,11 +249,86 @@ void ShowLinkBattleRecords(void) {
#if ENGLISH
MenuPrint(gOtherText_WinLoseDraw, 12, 6);
#elif GERMAN
- MenuPrint_PixelCoords((u8 *) gOtherText_WinLoseDraw, 88, 48, 1);
+ MenuPrint_PixelCoords(gOtherText_WinLoseDraw, 88, 48, 1);
#endif
for (i = 0; i < 5; i++)
{
- PrintLinkBattleRecord(gSaveBlock1.linkBattleRecords[i], 6 + (i + 1) * 2);
+ PrintLinkBattleRecord(&gSaveBlock1.linkBattleRecords[i], 6 + (i + 1) * 2);
+ }
+}
+
+static bool32 sub_8110494(u8 level)
+{
+ struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8;
+
+ switch (sb2sub->var_4AE[level])
+ {
+ case 0:
+ return FALSE;
+ case 1:
+ return FALSE;
+ case 2:
+ return TRUE;
+ case 4:
+ return FALSE;
+ case 3:
+ return TRUE;
+ case 5:
+ return FALSE;
+ case 6:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
+static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top)
+{
+ MenuPrint(str, left, top);
+ if (streak > 9999)
+ streak = 9999;
+ sub_8072C14(gStringVar1, streak, 24, 1);
+ MenuPrint(gOtherText_WinStreak, left + 7, top);
+}
+
+static void PrintRecordWinStreak(u8 level, u8 left, u8 top)
+{
+ struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8;
+ u16 winStreak = sb2sub->recordWinStreak[level];
+ PrintWinStreak(gOtherText_Record, winStreak, left, top);
+}
+
+static u16 GetLastWinStreak(u8 level)
+{
+ u16 result = gSaveBlock2.filler_A8.winStreak[level];
+ if (result > 9999)
+ result = 9999;
+ return result;
+}
+
+static void PrintLastWinStreak(u8 level, u8 left, u8 top)
+{
+ u16 winStreak = GetLastWinStreak(level);
+ if (sub_8110494(level) == TRUE)
+ PrintWinStreak(gOtherText_Current, winStreak, left, top);
+ else
+ PrintWinStreak(gOtherText_Prev, winStreak, left, top);
+}
+
+void ShowBattleTowerRecords(void)
+{
+ u16 i;
+ MenuDrawTextWindow(3, 1, 27, 17);
+ sub_8072BD8(gOtherText_BattleTowerResults, 3, 2, 0xC8);
+ MenuPrint(gOtherText_Lv50, 5, 6);
+ MenuPrint(gOtherText_Lv100, 5, 12);
+ for (i = 5; i < 26; i++)
+ {
+ sub_8071F60(CHAR_HYPHEN, i, 10);
}
+ PrintLastWinStreak(0, 10, 6);
+ PrintRecordWinStreak(0, 10, 8);
+ PrintLastWinStreak(1, 10, 12);
+ PrintRecordWinStreak(1, 10, 14);
}
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 2d8ff2236..ff430e7b2 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -28,26 +28,29 @@ struct Struct2000000
/*0x1FFFF*/ u8 var_1FFFF;
};
-struct BerryTagStatus
-{
- s16 circles[5];
-};
-
extern struct Struct2000000 unk_2000000;
-extern u8 gUnknown_0203932C;
-extern struct BerryTagStatus gUnknown_0203932E;
extern u16 gUnknown_030041B4;
+static EWRAM_DATA u8 gUnknown_0203932C = 0;
+static EWRAM_DATA s16 gUnknown_0203932E[5] = {0};
+
extern const struct CompressedSpriteSheet gUnknown_083C1F74;
extern const struct CompressedSpritePalette gUnknown_083C1F7C;
-extern u8 *gUnknown_0841192C[];
-
extern u8 gBerryCheck_Gfx[];
extern u8 gBerryCheck_Pal[];
extern u8 gUnknown_08E788E4[];
extern u8 gUnknown_08E78A84[];
+static const u8 *const gUnknown_0841192C[] =
+{
+ ContestStatsText_VerySoft,
+ ContestStatsText_Soft,
+ ContestStatsText_Hard,
+ ContestStatsText_VeryHard,
+ ContestStatsText_SuperHard,
+};
+
static void sub_8146014(void);
static void sub_814602C(void);
static bool8 sub_8146058(void);
@@ -329,19 +332,19 @@ static void sub_8146600(u8 berry)
berryInfo = GetBerryInfo(berry + 1);
for (i = 0; i < 5; i++)
- gUnknown_0203932E.circles[i] = (u16)gUnknown_0203932E.circles[i] | 0xFFFF;
+ gUnknown_0203932E[i] = (u16)gUnknown_0203932E[i] | 0xFFFF;
// argument is the center of the circle
if (berryInfo->spicy)
- gUnknown_0203932E.circles[0] = sub_80A7E5C(48);
+ gUnknown_0203932E[0] = sub_80A7E5C(48);
if (berryInfo->dry)
- gUnknown_0203932E.circles[1] = sub_80A7E5C(88);
+ gUnknown_0203932E[1] = sub_80A7E5C(88);
if (berryInfo->sweet)
- gUnknown_0203932E.circles[2] = sub_80A7E5C(128);
+ gUnknown_0203932E[2] = sub_80A7E5C(128);
if (berryInfo->bitter)
- gUnknown_0203932E.circles[3] = sub_80A7E5C(168);
+ gUnknown_0203932E[3] = sub_80A7E5C(168);
if (berryInfo->sour)
- gUnknown_0203932E.circles[4] = sub_80A7E5C(208);
+ gUnknown_0203932E[4] = sub_80A7E5C(208);
}
void sub_81466A0(void)
@@ -350,10 +353,10 @@ void sub_81466A0(void)
for (i = 0; i < 5; i++)
{
- if (gUnknown_0203932E.circles[i] != -1)
+ if (gUnknown_0203932E[i] != -1)
{
- DestroySprite(&gSprites[gUnknown_0203932E.circles[i]]);
- gUnknown_0203932E.circles[i] = -1;
+ DestroySprite(&gSprites[gUnknown_0203932E[i]]);
+ gUnknown_0203932E[i] = -1;
}
}
}
diff --git a/src/bike.c b/src/bike.c
index f37eb2144..58a4f38f4 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -15,8 +15,6 @@ extern u8 sub_80608A4(u8);
extern u8 gUnknown_02039250;
extern u8 gUnknown_02039251;
extern u8 gUnknown_0202E854;
-extern u8 gUnknown_0202E86C[];
-extern u8 gUnknown_0202E874[];
static void MovePlayerOnMachBike(u8, u16, u16);
static u8 GetMachBikeTransition(u8 *);
@@ -758,12 +756,12 @@ static bool8 sub_80E5BC8(const u8 *a, const u8 *b)
for (i = 0; a[i] != 0; i++)
{
- if (gUnknown_0202E86C[i] > a[i])
+ if (gPlayerAvatar.unk14[i] > a[i])
return FALSE;
}
for (i = 0; b[i] != 0; i++)
{
- if (gUnknown_0202E874[i] > b[i])
+ if (gPlayerAvatar.unk1C[i] > b[i])
return FALSE;
}
return TRUE;
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index 4de945b9c..b8d7cd386 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -19,8 +19,6 @@
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
-extern u32 gUnknown_0202FF84[];
-
extern u8 gIslandCave_EventScript_OpenRegiiceChamber[]; // regiice event script
bool8 ShouldDoBrailleDigEffect(void)
diff --git a/src/cable_club.c b/src/cable_club.c
index 70b372205..20b087f4e 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -13,7 +13,6 @@
extern u16 gScriptResult;
extern struct TrainerCard gTrainerCards[4];
-extern struct LinkPlayer gLinkPlayers[];
extern u8 gUnknown_03004860;
extern u8 gFieldLinkPlayerCount;
diff --git a/src/choose_party.c b/src/choose_party.c
index 63e9c8477..d8df44028 100644
--- a/src/choose_party.c
+++ b/src/choose_party.c
@@ -31,7 +31,6 @@ struct UnknownPokemonStruct2
/*0x1D*/ u8 language;
};
-extern u8 gSelectedOrderFromParty[];
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gUnknown_020384F0;
@@ -40,6 +39,8 @@ extern u8 gUnknown_0202E8F6;
extern struct Pokemon gUnknown_030042FC[];
extern const u16 gBattleTowerBanlist[];
+EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0};
+
extern void OpenPartyMenu();
extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *);
extern void LoadHeldItemIconGraphics(void);
diff --git a/src/contest_painting.c b/src/contest_painting.c
index d75947e05..391cbdfaa 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -14,18 +14,20 @@
#include "unknown_task.h"
extern u8 unk_2000000[];
-extern u8 gUnknown_03000750;
-extern u16 gUnknown_03000752;
-extern u16 gUnknown_03000754;
-extern u16 (*gUnknown_03005E10)[][32];
-extern u8 gUnknown_03005E40[];
-extern u16 (*gUnknown_03005E90)[];
+
+static u8 gUnknown_03000750;
+static u16 gUnknown_03000752;
+static u16 gUnknown_03000754;
+static u8 gUnknown_03000756;
+
+u16 (*gUnknown_03005E10)[][32];
+struct Unk03005E20 gUnknown_03005E20;
+u8 gUnknown_03005E40[0x4C];
+struct ContestEntry *gUnknown_03005E8C;
+u16 (*gUnknown_03005E90)[];
extern struct ContestEntry unk_2015de0;
extern struct Unk2015E00 unk_2015e00;
-extern struct Unk3000756 gUnknown_03000756;
-extern struct Unk03005E20 gUnknown_03005E20;
-extern struct ContestEntry *gUnknown_03005E8C;
static const u16 gPictureFramePalettes[][16] =
{
@@ -220,7 +222,7 @@ static void HoldContestPainting(void)
case 0:
if (!gPaletteFade.active)
gUnknown_03000750 = 1;
- if (gUnknown_03000756.var_0 != 0 && gUnknown_03000754 != 0)
+ if (gUnknown_03000756 != 0 && gUnknown_03000754 != 0)
gUnknown_03000754--;
break;
case 1:
@@ -231,13 +233,13 @@ static void HoldContestPainting(void)
gUnknown_03000750 = two;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
}
- if (gUnknown_03000756.var_0 != 0)
+ if (gUnknown_03000756 != 0)
gUnknown_03000754 = 0;
break;
case 2:
if (!gPaletteFade.active)
SetMainCallback2(CB2_QuitContestPainting);
- if (gUnknown_03000756.var_0 != 0 && gUnknown_03000754 <= 0x1D)
+ if (gUnknown_03000756 != 0 && gUnknown_03000754 <= 0x1D)
gUnknown_03000754++;
break;
}
@@ -311,13 +313,13 @@ static void ContestPaintingInitVars(bool8 arg0)
{
if (arg0 == FALSE)
{
- gUnknown_03000756.var_0 = FALSE;
+ gUnknown_03000756 = FALSE;
gUnknown_03000752 = 0;
gUnknown_03000754 = 0;
}
else
{
- gUnknown_03000756.var_0 = TRUE;
+ gUnknown_03000756 = TRUE;
gUnknown_03000752 = 15;
gUnknown_03000754 = 30;
}
@@ -325,7 +327,7 @@ static void ContestPaintingInitVars(bool8 arg0)
static void ContestPaintingMosaic(void)
{
- if (gUnknown_03000756.var_0 == FALSE)
+ if (gUnknown_03000756 == FALSE)
{
REG_MOSAIC = 0;
return;
diff --git a/src/credits.c b/src/credits.c
index 8ec126a41..df70674b6 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -177,14 +177,15 @@ extern u16 unk_201f800[];
extern struct SpriteTemplate gUnknown_02024E8C;
-extern s16 gUnknown_02039320;
-extern u16 gUnknown_02039322; // TASK A
-extern u8 gUnknown_02039324;
-extern u8 gUnknown_02039325;
extern u16 gUnknown_02039358;
extern s16 gUnknown_0203935A;
extern s16 gUnknown_0203935C;
+static EWRAM_DATA s16 gUnknown_02039320 = 0;
+static EWRAM_DATA u16 gUnknown_02039322 = 0; // TASK A
+EWRAM_DATA u8 gUnknown_02039324 = 0;
+static EWRAM_DATA u8 gUnknown_02039325 = 0;
+
extern u8 gReservedSpritePaletteCount;
// data/hall_of_fame
@@ -250,27 +251,17 @@ static void sub_814395C(void)
BuildOamBuffer();
UpdatePaletteFade();
- if (!(gMain.heldKeys & B_BUTTON))
+ if ((gMain.heldKeys & B_BUTTON)
+ && gUnknown_02039324 != 0
+ && gTasks[gUnknown_02039322].func == task_a_8143B68)
{
- return;
+ vblank_8143948();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ gUnknown_02039325 = 1;
}
-
- if (!gUnknown_02039324)
- {
- return;
- }
-
- if (gTasks[gUnknown_02039322].func != task_a_8143B68)
- {
- return;
- }
-
- vblank_8143948();
- RunTasks();
- AnimateSprites();
- BuildOamBuffer();
- UpdatePaletteFade();
- gUnknown_02039325 = 1;
}
void sub_81439D0(void)
@@ -296,9 +287,7 @@ void sub_81439D0(void)
while (TRUE)
{
if (sub_8144ECC(0, taskIdA))
- {
break;
- }
}
taskIdC = gTasks[taskIdA].data[TDA_TASK_C_ID];
@@ -344,12 +333,8 @@ void sub_81439D0(void)
static void task_a_8143B38(u8 taskIdA)
{
- if (gPaletteFade.active)
- {
- return;
- }
-
- gTasks[taskIdA].func = task_a_8143B68;
+ if (!gPaletteFade.active)
+ gTasks[taskIdA].func = task_a_8143B68;
}
static void task_a_8143B68(u8 taskIdA)
@@ -389,14 +374,12 @@ static void task_a_8143B68(u8 taskIdA)
static void task_a_8143BFC(u8 taskIdA)
{
- if (gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- return;
+ REG_DISPCNT = 0;
+ sub_81450AC(taskIdA);
+ gTasks[taskIdA].func = task_a_80C9BFC;
}
-
- REG_DISPCNT = 0;
- sub_81450AC(taskIdA);
- gTasks[taskIdA].func = task_a_80C9BFC;
}
static void task_a_80C9BFC(u8 taskIdA)
@@ -405,33 +388,29 @@ static void task_a_80C9BFC(u8 taskIdA)
SetVBlankCallback(NULL);
- if (!sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA))
+ if (sub_8144ECC(gTasks[taskIdA].data[TDA_7], taskIdA))
{
- return;
- }
-
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
- backup = REG_IME;
- REG_IME = 0;
- REG_IE |= INTR_FLAG_VBLANK;
- REG_IME = backup;
- REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ backup = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = backup;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
- SetVBlankCallback(vblank_8143948);
- gTasks[taskIdA].func = task_a_8143B38;
+ SetVBlankCallback(vblank_8143948);
+ gTasks[taskIdA].func = task_a_8143B38;
+ }
}
static void task_a_8143CC0(u8 taskIdA)
{
- if (gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- return;
+ REG_DISPCNT = 0;
+ sub_81450AC(taskIdA);
+ gTasks[taskIdA].func = task_a_8143D04;
}
-
- REG_DISPCNT = 0;
- sub_81450AC(taskIdA);
- gTasks[taskIdA].func = task_a_8143D04;
}
void task_a_8143D04(u8 taskIdA)
@@ -501,13 +480,11 @@ static void task_a_8143EBC(u8 taskIdA)
static void task_a_8143F04(u8 taskIdA)
{
- if (gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- return;
+ sub_81450AC(taskIdA);
+ gTasks[taskIdA].func = task_a_8143F3C;
}
-
- sub_81450AC(taskIdA);
- gTasks[taskIdA].func = task_a_8143F3C;
}
static void task_a_8143F3C(u8 taskIdA)
@@ -547,62 +524,52 @@ static void task_a_8143FDC(u8 taskIdA)
static void task_a_8144024(u8 taskIdA)
{
- if (gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- return;
- }
+ sub_81452D0(0x3800, 0);
- sub_81452D0(0x3800, 0);
-
- BeginNormalPaletteFade(-1, 0, 0, 0, 0);
- gTasks[taskIdA].data[TDA_0] = 7200;
- gTasks[taskIdA].func = task_a_8144080;
+ BeginNormalPaletteFade(-1, 0, 0, 0, 0);
+ gTasks[taskIdA].data[TDA_0] = 7200;
+ gTasks[taskIdA].func = task_a_8144080;
+ }
}
static void task_a_8144080(u8 taskIdA)
{
- if (gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- return;
- }
+ if (gTasks[taskIdA].data[TDA_0] == 0)
+ {
+ FadeOutBGM(4);
+ BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF);
+ gTasks[taskIdA].func = task_a_8144114;
+ return;
+ }
- if (gTasks[taskIdA].data[TDA_0] == 0)
- {
- FadeOutBGM(4);
- BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF);
- gTasks[taskIdA].func = task_a_8144114;
- return;
- }
+ if (gMain.newKeys)
+ {
+ FadeOutBGM(4);
+ BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF);
+ gTasks[taskIdA].func = task_a_8144114;
+ return;
+ }
- if (gMain.newKeys)
- {
- FadeOutBGM(4);
- BeginNormalPaletteFade(-1, 8, 0, 16, 0xFFFF);
- gTasks[taskIdA].func = task_a_8144114;
- return;
- }
+ if (gTasks[taskIdA].data[TDA_0] == 7144)
+ {
+ FadeOutBGM(8);
+ }
- if (gTasks[taskIdA].data[TDA_0] == 7144)
- {
- FadeOutBGM(8);
- }
+ if (gTasks[taskIdA].data[TDA_0] == 6840)
+ m4aSongNumStart(BGM_END);
- if (gTasks[taskIdA].data[TDA_0] == 6840)
- {
- m4aSongNumStart(BGM_END);
+ gTasks[taskIdA].data[TDA_0] -= 1;
}
-
- gTasks[taskIdA].data[TDA_0] -= 1;
}
static void task_a_8144114(u8 taskIdA)
{
- if (gPaletteFade.active)
- {
- return;
- }
-
- SoftReset(0xFF);
+ if (!gPaletteFade.active)
+ SoftReset(0xFF);
}
static void sub_8144130(void)
@@ -639,38 +606,30 @@ static void task_b_81441B8(u8 taskIdB)
case 8:
case 9:
default:
- if (gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- return;
+ gTasks[taskIdB].data[TDB_0] = 1;
+ gTasks[taskIdB].data[TDB_3] = 0x58;
+ gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0;
+ gUnknown_02039320 = 0;
}
- gTasks[taskIdB].data[TDB_0] = 1;
- gTasks[taskIdB].data[TDB_3] = 0x58;
- gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0;
- gUnknown_02039320 = 0;
return;
-
case 1:
if (gTasks[taskIdB].data[TDB_3] != 0)
{
gTasks[taskIdB].data[TDB_3] -= 1;
return;
}
-
gTasks[taskIdB].data[TDB_0] += 1;
return;
-
case 2:
REG_DISPCNT &= ~DISPCNT_BG0_ON;
-
if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].func == task_a_8143B68)
{
if (gTasks[taskIdB].data[TDB_CURRENT_PAGE] < PAGE_COUNT)
{
-
for (i = 0; i < 5; i++)
- {
sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240);
- }
gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1;
gTasks[taskIdB].data[TDB_0] += 1;
@@ -678,36 +637,24 @@ static void task_b_81441B8(u8 taskIdB)
gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 1;
if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1)
- {
BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_LIGHT_GREEN);
- }
else
- {
BeginNormalPaletteFade(0x300, 0, 16, 0, COLOR_DARK_GREEN);
- }
return;
}
-
-
gTasks[taskIdB].data[TDB_0] = 10;
return;
}
-
gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_14] = 0;
return;
-
case 3:
REG_DISPCNT |= DISPCNT_BG0_ON;
-
- if (gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- return;
+ gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82;
+ gTasks[taskIdB].data[TDB_0] += 1;
}
-
- gTasks[taskIdB].data[TDB_3] = UNK_DEFINE_82;
- gTasks[taskIdB].data[TDB_0] += 1;
return;
-
case 4:
if (gTasks[taskIdB].data[TDB_3] != 0)
{
@@ -720,28 +667,18 @@ static void task_b_81441B8(u8 taskIdB)
gTasks[taskIdB].data[TDB_0] += 1;
return;
}
-
gTasks[taskIdB].data[TDB_0] += 1;
-
if (gTasks[gTasks[taskIdB].data[TDB_TASK_A_ID]].data[TDA_13] == 1)
- {
BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_LIGHT_GREEN);
- }
else
- {
BeginNormalPaletteFade(0x300, 0, 0, 16, COLOR_DARK_GREEN);
- }
-
return;
-
case 5:
- if (gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- return;
+ MenuZeroFillWindowRect(0, 9, 29, 19);
+ gTasks[taskIdB].data[TDB_0] = 2;
}
-
- MenuZeroFillWindowRect(0, 9, 29, 19);
- gTasks[taskIdB].data[TDB_0] = 2;
return;
case 10:
@@ -962,14 +899,11 @@ void task_e_8144934(u8 taskIdE)
gTasks[taskIdE].data[TDE_1] = 0x7FFF;
}
}
-
sub_8149020(0);
break;
-
case 1:
sub_8149020(0);
break;
-
case 2:
if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
{
@@ -984,7 +918,6 @@ void task_e_8144934(u8 taskIdE)
}
sub_8149020(1);
break;
-
case 3:
if (gTasks[taskIdE].data[TDE_1] != 0x7FFF)
{
@@ -999,10 +932,8 @@ void task_e_8144934(u8 taskIdE)
gTasks[taskIdE].data[TDE_1] += 1;
}
}
-
sub_8149020(1);
break;
-
case 4:
sub_8149020(2);
break;
@@ -1024,7 +955,6 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
break;
-
case 1:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
@@ -1036,7 +966,6 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(0, 0x2000, 0x20, 8);
break;
-
case 2:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
@@ -1048,7 +977,6 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
break;
-
case 3:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
@@ -1060,7 +988,6 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].data0 = 0;
gTasks[taskIdA].data[TDA_0] = sub_8148EC0(1, 0x2000, 0x200, 8);
break;
-
case 4:
gSprites[gTasks[taskIdA].data[TDA_PLAYER_CYCLIST]].invisible = 0;
gSprites[gTasks[taskIdA].data[TDA_RIVAL_CYCLIST]].invisible = 0;
@@ -1087,9 +1014,7 @@ static void sub_8144A68(u8 data, u8 taskIdA)
gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_4] = 0;
if (data == 2)
- {
gTasks[gTasks[taskIdA].data[TDA_TASK_C_ID]].data[TDC_5] = UNK_DEFINE_45;
- }
}
static bool8 sub_8144ECC(u8 data, u8 taskIdA)
@@ -1113,14 +1038,12 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA)
FreeAllSpritePalettes();
gMain.state = 1;
break;
-
case 1:
gUnknown_02039358 = 34;
gUnknown_0203935A = 0;
sub_8148CB0(data);
gMain.state += 1;
break;
-
case 2:
if (gSaveBlock2.playerGender == MALE)
{
@@ -1156,17 +1079,14 @@ static bool8 sub_8144ECC(u8 data, u8 taskIdA)
gSprites[spriteId].callback = spritecb_rival_8145420;
gSprites[spriteId].anims = gSpriteAnimTable_0840CA94;
};
-
gMain.state += 1;
break;
-
case 3:
sub_8144A68(data, taskIdA);
sub_8148E90(data);
gMain.state = 0;
return TRUE;
}
-
return FALSE;
}
@@ -1199,7 +1119,8 @@ static void sub_81450AC(u8 taskIdA)
gUnknown_0203935C = 1;
}
-static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) {
+static void sub_8145128(u16 arg0, u16 arg1, u16 arg2)
+{
u16 baseTile;
u16 i;
@@ -1209,65 +1130,45 @@ static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) {
baseTile = (arg2 / 16) << 12;
for (i = 0; i < 32 * 32; i++)
- {
((u16 *) (VRAM + arg1))[i] = baseTile + 1;
- }
for (i = 0; i < 21; i++)
- {
((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = i + 2 + baseTile;
- }
for (i = 0; i < 20; i++)
- {
((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = i + 23 + baseTile;
- }
for (i = 0; i < 23; i++)
- {
((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = i + 43 + baseTile;
- }
for (i = 0; i < 12; i++)
- {
((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = i + 66 + baseTile;
- }
}
u16 sub_8145208(u8 arg0)
{
-
u16 out = (arg0 & 0x3F) + 80;
if (arg0 == 0xFF)
- {
return 1;
- }
if (arg0 & (1 << 7))
- {
out |= 1 << 11;
- }
-
if (arg0 & (1 << 6))
- {
out |= 1 << 10;
- }
return out;
}
-void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) {
+void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette)
+{
u8 y, x;
-
const u16 tileOffset = (palette / 16) << 12;
for (y = 0; y < 5; y++)
{
for (x = 0; x < 3; x++)
- {
((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8145208(arg0[y * 3 + x]);
- }
}
}
@@ -1307,37 +1208,26 @@ static void spritecb_player_8145378(struct Sprite *sprite)
case 0:
StartSpriteAnimIfDifferent(sprite, 0);
break;
-
case 1:
StartSpriteAnimIfDifferent(sprite, 1);
if (sprite->pos1.x > -32)
- {
sprite->pos1.x -= 1;
- }
break;
-
case 2:
StartSpriteAnimIfDifferent(sprite, 2);
break;
-
case 3:
StartSpriteAnimIfDifferent(sprite, 3);
break;
-
case 4:
StartSpriteAnimIfDifferent(sprite, 0);
if (sprite->pos1.x > 120)
- {
sprite->pos1.x -= 1;
- }
break;
-
case 5:
StartSpriteAnimIfDifferent(sprite, 0);
if (sprite->pos1.x > -32)
- {
sprite->pos1.x -= 1;
- }
break;
}
}
@@ -1356,49 +1246,31 @@ static void spritecb_rival_8145420(struct Sprite *sprite)
sprite->pos2.y = 0;
StartSpriteAnimIfDifferent(sprite, 0);
break;
-
case 1:
if (sprite->pos1.x > 200)
- {
StartSpriteAnimIfDifferent(sprite, 1);
- }
else
- {
StartSpriteAnimIfDifferent(sprite, 2);
- }
-
if (sprite->pos1.x > -32)
- {
sprite->pos1.x -= 2;
- }
-
sprite->pos2.y = -gUnknown_0203935A;
break;
-
case 2:
sprite->data7 += 1;
StartSpriteAnimIfDifferent(sprite, 0);
-
if ((sprite->data7 & 3) == 0)
- {
sprite->pos1.x += 1;
- }
break;
-
case 3:
StartSpriteAnimIfDifferent(sprite, 0);
-
if (sprite->pos1.x > -32)
- {
sprite->pos1.x -= 1;
- }
break;
-
-
}
}
-void spritecb_81454E0(struct Sprite *sprite) {
+void spritecb_81454E0(struct Sprite *sprite)
+{
if (gUnknown_0203935C)
{
DestroySprite(sprite);
@@ -1417,7 +1289,6 @@ void spritecb_81454E0(struct Sprite *sprite) {
sprite->invisible = FALSE;
sprite->data0 = 1;
break;
-
case 1:
if (sprite->data2 < 256)
{
@@ -1432,23 +1303,18 @@ void spritecb_81454E0(struct Sprite *sprite) {
{
case 1:
if ((sprite->data7 & 3) == 0)
- {
sprite->pos1.y += 1;
- }
sprite->pos1.x -= 2;
break;
case 2:
break;
case 3:
if ((sprite->data7 & 3) == 0)
- {
sprite->pos1.y += 1;
- }
sprite->pos1.x += 2;
break;
}
break;
-
case 2:
if (sprite->data3 != 0)
{
@@ -1463,7 +1329,6 @@ void spritecb_81454E0(struct Sprite *sprite) {
sprite->data0 += 1;
}
break;
-
case 3:
if (sprite->data3 != 0)
{
@@ -1482,13 +1347,11 @@ void spritecb_81454E0(struct Sprite *sprite) {
sprite->data0 = 10;
}
break;
-
case 10:
REG_BLDCNT = 0;
REG_BLDALPHA = 0;
DestroySprite(sprite);
break;
-
}
}
@@ -1500,17 +1363,14 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
u8 spriteId2;
species = NationalPokedexNumToSpecies(species);
-
switch (species)
{
default:
personality = 0;
break;
-
case SPECIES_SPINDA:
personality = gSaveBlock2.pokedex.spindaPersonality;
break;
-
case SPECIES_UNOWN:
personality = gSaveBlock2.pokedex.unownPersonality;
break;
@@ -1562,7 +1422,8 @@ void spritecb_814580C(struct Sprite *sprite)
sprite->pos1.y = gSprites[sprite->data0].pos1.y;
}
-static void sub_81458DC(void) {
+static void sub_81458DC(void)
+{
struct Unk201C000 *unk201C000 = &ewram1c000;
u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE)));
u16 seenTypesCount;
@@ -1580,19 +1441,13 @@ static void sub_81458DC(void) {
}
for (dexNum = seenTypesCount; dexNum < 386; dexNum++)
- {
unk201C000->unk90[dexNum] = 0;
- }
unk201C000->unk394 = seenTypesCount;
if (unk201C000->unk394 < POKEMON_TILE_COUNT)
- {
unk201C000->unk8E = seenTypesCount;
- }
else
- {
unk201C000->unk8E = POKEMON_TILE_COUNT;
- }
j = 0;
do
@@ -1625,7 +1480,6 @@ static void sub_81458DC(void) {
}
else
{
-
for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++);
if (dexNum < unk201C000->unk8E - 1)
@@ -1634,7 +1488,9 @@ static void sub_81458DC(void) {
unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter;
}
else
+ {
unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter;
+ }
}
unk201C000->unk8E = POKEMON_TILE_COUNT;
}
diff --git a/src/data/item_descriptions_de.h b/src/data/item_descriptions_de.h
new file mode 100644
index 000000000..ba1147f9b
--- /dev/null
+++ b/src/data/item_descriptions_de.h
@@ -0,0 +1,1392 @@
+static const u8 gItemDescription_MasterBall[] = _(
+ "Der beste BALL.\n"
+ "Fängt das POKéMON\n"
+ "garantiert.");
+
+static const u8 gItemDescription_UltraBall[] = _(
+ "BALL mit hoher Er-\n"
+ "folgsquote. Besser\n"
+ "als ein SUPERBALL.");
+
+static const u8 gItemDescription_GreatBall[] = _(
+ "BALL mit guter Er-\n"
+ "folgsquote. Besser\n"
+ "als ein POKéBALL.");
+
+static const u8 gItemDescription_PokeBall[] = _(
+ "Damit fängst\n"
+ "du wilde\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_SafariBall[] = _(
+ "Ein BALL, der nur\n"
+ "in der SAFARI-ZONE\n"
+ "eingesetzt wird.");
+
+static const u8 gItemDescription_NetBall[] = _(
+ "BALL fängt POKéMON\n"
+ "des Typs WASSER\n"
+ "und KÄFER besser.");
+
+static const u8 gItemDescription_DiveBall[] = _(
+ "BALL fängt besser\n"
+ "POKéMON auf\n"
+ "dem Meeresgrund.");
+
+static const u8 gItemDescription_NestBall[] = _(
+ "BALL mit höherer\n"
+ "Erfolgsquote bei\n"
+ "schwachen POKéMON.");
+
+static const u8 gItemDescription_RepeatBall[] = _(
+ "BALL fängt besser\n"
+ "bereits gefangene\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_TimerBall[] = _(
+ "BALL wird effekti-\n"
+ "ver, je länger der\n"
+ "Kampf dauert.");
+
+static const u8 gItemDescription_LuxuryBall[] = _(
+ "Behaglicher BALL,\n"
+ "der POKéMON\n"
+ "freundlicher macht.");
+
+static const u8 gItemDescription_PremierBall[] = _(
+ "Seltener BALL, als\n"
+ "Reminiszenz an ir-\n"
+ "gendein Ereignis.");
+
+static const u8 gItemDescription_Potion[] = _(
+ "Füllt die KP eines\n"
+ "POKéMON um\n"
+ "20 Punkte auf.");
+
+static const u8 gItemDescription_Antidote[] = _(
+ "Heilt Vergiftungen\n"
+ "bei POKéMON.");
+
+static const u8 gItemDescription_BurnHeal[] = _(
+ "Heilt Verbrennun-\n"
+ "gen bei POKéMON.");
+
+static const u8 gItemDescription_IceHeal[] = _(
+ "Taut POKéMON\n"
+ "wieder auf.");
+
+static const u8 gItemDescription_Awakening[] = _(
+ "Weckt schlafendes\n"
+ "POKéMON auf.");
+
+static const u8 gItemDescription_ParalyzeHeal[] = _(
+ "Heilt Paralyse\n"
+ "eines POKéMON.");
+
+static const u8 gItemDescription_FullRestore[] = _(
+ "Stellt KP und\n"
+ "Status eines\n"
+ "POKéMON wieder her.");
+
+static const u8 gItemDescription_MaxPotion[] = _(
+ "Füllt die KP\n"
+ "vollständig auf.");
+
+static const u8 gItemDescription_HyperPotion[] = _(
+ "Füllt die KP eines\n"
+ "POKéMON um\n"
+ "200 Punkte auf.");
+
+static const u8 gItemDescription_SuperPotion[] = _(
+ "Füllt die KP eines\n"
+ "POKéMON um\n"
+ "50 Punkte auf.");
+
+static const u8 gItemDescription_FullHeal[] = _(
+ "Beseitigt alle\n"
+ "Statusprobleme\n"
+ "eines POKéMON.");
+
+static const u8 gItemDescription_Revive[] = _(
+ "Belebt POKéMON\n"
+ "und füllt die KP zur\n"
+ "Hälfte wieder auf.");
+
+static const u8 gItemDescription_MaxRevive[] = _(
+ "Belebt POKéMON\n"
+ "und füllt KP voll-\n"
+ "ständig wieder auf.");
+
+static const u8 gItemDescription_FreshWater[] = _(
+ "Ein stilles Wasser,\n"
+ "das die KP um 50\n"
+ "Punkte auffüllt.");
+
+static const u8 gItemDescription_SodaPop[] = _(
+ "Ein Mineralwasser,\n"
+ "das die KP um 60\n"
+ "Punkte auffüllt.");
+
+static const u8 gItemDescription_Lemonade[] = _(
+ "Ein süßes Getränk,\n"
+ "das die KP um 80\n"
+ "Punkte auffüllt.");
+
+static const u8 gItemDescription_MoomooMilk[] = _(
+ "Vitaminreiche Milch,\n"
+ "die die KP um 100\n"
+ "Punkte auffüllt.");
+
+static const u8 gItemDescription_EnergyPowder[] = _(
+ "Ein bitteres Pulver,\n"
+ "das die KP um\n"
+ "50 Punkte auffüllt.");
+
+static const u8 gItemDescription_EnergyRoot[] = _(
+ "Eine bittere Wurzel,\n"
+ "die die KP um 200\n"
+ "Punkte auffüllt.");
+
+static const u8 gItemDescription_HealPowder[] = _(
+ "Ein bitteres Pulver,\n"
+ "das alle Statuspro-\n"
+ "bleme heilt.");
+
+static const u8 gItemDescription_RevivalHerb[] = _(
+ "Ein bitteres Kraut,\n"
+ "das besiegte\n"
+ "POKéMON belebt.");
+
+static const u8 gItemDescription_Ether[] = _(
+ "Füllt AP einer aus-\n"
+ "gewählten Attacke\n"
+ "um 10 Punkte auf.");
+
+static const u8 gItemDescription_MaxEther[] = _(
+ "Füllt AP einer aus-\n"
+ "gewählten Attacke\n"
+ "vollständig auf.");
+
+static const u8 gItemDescription_Elixir[] = _(
+ "Füllt alle AP\n"
+ "um 10 Punkte auf.");
+
+static const u8 gItemDescription_MaxElixir[] = _(
+ "Füllt alle AP eines\n"
+ "POKéMON voll-\n"
+ "ständig auf.");
+
+static const u8 gItemDescription_LavaCookie[] = _(
+ "Eine regionale Spe-\n"
+ "zialität. Heilt alle\n"
+ "Statusprobleme.");
+
+static const u8 gItemDescription_BlueFlute[] = _(
+ "Eine gläserne Flöte,\n"
+ "die schlafende\n"
+ "POKéMON aufweckt.");
+
+static const u8 gItemDescription_YellowFlute[] = _(
+ "Eine gläserne Flöte,\n"
+ "die verwirrte\n"
+ "POKéMON heilt.");
+
+static const u8 gItemDescription_RedFlute[] = _(
+ "Eine gläserne Flöte,\n"
+ "die POKéMON von\n"
+ "Anziehung heilt.");
+
+static const u8 gItemDescription_BlackFlute[] = _(
+ "Eine gläserne Flöte,\n"
+ "die wilde\n"
+ "POKéMON abhält.");
+
+static const u8 gItemDescription_WhiteFlute[] = _(
+ "Eine gläserne Flöte,\n"
+ "die wilde\n"
+ "POKéMON anzieht.");
+
+static const u8 gItemDescription_BerryJuice[] = _(
+ "Reiner Fruchtsaft,\n"
+ "der die KP um\n"
+ "20 Punkte auffüllt.");
+
+static const u8 gItemDescription_SacredAsh[] = _(
+ "Belebt und\n"
+ "erfrischt alle\n"
+ "besiegten POKéMON.");
+
+static const u8 gItemDescription_ShoalSalt[] = _(
+ "Salz, das sich tief\n"
+ "in der KÜSTEN- \n"
+ "HÖHLE befand.");
+
+static const u8 gItemDescription_ShoalShell[] = _(
+ "Muschelschale, die\n"
+ "sich in der KÜSTEN- \n"
+ "HÖHLE befand.");
+
+static const u8 gItemDescription_RedShard[] = _(
+ "Scherbe eines\n"
+ "antiken Relikts\n"
+ "von geringem Wert.");
+
+static const u8 gItemDescription_BlueShard[] = _(
+ "Scherbe eines\n"
+ "antiken Relikts\n"
+ "von geringem Wert.");
+
+static const u8 gItemDescription_YellowShard[] = _(
+ "Scherbe eines\n"
+ "antiken Relikts\n"
+ "von geringem Wert.");
+
+static const u8 gItemDescription_GreenShard[] = _(
+ "Scherbe eines\n"
+ "antiken Relikts\n"
+ "von geringem Wert.");
+
+static const u8 gItemDescription_HPUp[] = _(
+ "Hebt die KP\n"
+ "eines POKéMON.");
+
+static const u8 gItemDescription_Protein[] = _(
+ "Hebt den\n"
+ "ANGR.-Wert\n"
+ "eines POKéMON.");
+
+static const u8 gItemDescription_Iron[] = _(
+ "Hebt den\n"
+ "VERT.-Wert\n"
+ "eines POKéMON.");
+
+static const u8 gItemDescription_Carbos[] = _(
+ "Hebt den\n"
+ "INIT.-Wert\n"
+ "eines POKéMON.");
+
+static const u8 gItemDescription_Calcium[] = _(
+ "Hebt den\n"
+ "SP. ANGR.-Wert\n"
+ "eines POKéMON.");
+
+static const u8 gItemDescription_RareCandy[] = _(
+ "Hebt den Level\n"
+ "eines POKéMON\n"
+ "um eins an.");
+
+static const u8 gItemDescription_PPUp[] = _(
+ "Hebt die maximale\n"
+ "Anzahl der AP\n"
+ "einer Attacke.");
+
+static const u8 gItemDescription_Zinc[] = _(
+ "Hebt den\n"
+ "SP. VERT.-Wert\n"
+ "eines POKéMON.");
+
+static const u8 gItemDescription_PPMax[] = _(
+ "Maximiert die\n"
+ "Anzahl der AP\n"
+ "einer Attacke.");
+
+static const u8 gItemDescription_GuardSpec[] = _(
+ "Statusänderung\n"
+ "wird für einen\n"
+ "Kampf verhindert.");
+
+static const u8 gItemDescription_DireHit[] = _(
+ "Hebt die\n"
+ "Volltrefferquote\n"
+ "für einen Kampf.");
+
+static const u8 gItemDescription_XAttack[] = _(
+ "Hebt den\n"
+ "ANGR.-Wert\n"
+ "für einen Kampf.");
+
+static const u8 gItemDescription_XDefend[] = _(
+ "Hebt den\n"
+ "VERT.-Wert\n"
+ "für einen Kampf.");
+
+static const u8 gItemDescription_XSpeed[] = _(
+ "Hebt den\n"
+ "INIT.-Wert\n"
+ "für einen Kampf.");
+
+static const u8 gItemDescription_XAccuracy[] = _(
+ "Hebt die\n"
+ "GENAUIGKEIT\n"
+ "für einen Kampf.");
+
+static const u8 gItemDescription_XSpecial[] = _(
+ "Hebt den\n"
+ "SP. ANGR.-Wert\n"
+ "für einen Kampf.");
+
+static const u8 gItemDescription_PokeDoll[] = _(
+ "Ermöglicht Flucht\n"
+ "im Kampf gegen\n"
+ "wilde POKéMON.");
+
+static const u8 gItemDescription_FluffyTail[] = _(
+ "Entfliehe damit\n"
+ "jedem Kampf mit ei-\n"
+ "nem wilden POKéMON.");
+
+static const u8 gItemDescription_SuperRepel[] = _(
+ "Hält 200 Schritte\n"
+ "lang schwache,\n"
+ "wilde POKéMON ab.");
+
+static const u8 gItemDescription_MaxRepel[] = _(
+ "Hält 250 Schritte\n"
+ "lang schwache,\n"
+ "wilde POKéMON ab.");
+
+static const u8 gItemDescription_EscapeRope[] = _(
+ "Ermöglicht die\n"
+ "Flucht aus Höhlen\n"
+ "oder Ähnlichem.");
+
+static const u8 gItemDescription_Repel[] = _(
+ "Hält 100 Schritte\n"
+ "lang schwache,\n"
+ "wilde POKéMON ab.");
+
+static const u8 gItemDescription_SunStone[] = _(
+ "Löst bei bestimm-\n"
+ "ten POKéMON die\n"
+ "Entwicklung aus.");
+
+static const u8 gItemDescription_MoonStone[] = _(
+ "Löst bei bestimm-\n"
+ "ten POKéMON die\n"
+ "Entwicklung aus.");
+
+static const u8 gItemDescription_FireStone[] = _(
+ "Löst bei bestimm-\n"
+ "ten POKéMON die\n"
+ "Entwicklung aus.");
+
+static const u8 gItemDescription_ThunderStone[] = _(
+ "Löst bei bestimm-\n"
+ "ten POKéMON die\n"
+ "Entwicklung aus.");
+
+static const u8 gItemDescription_WaterStone[] = _(
+ "Löst bei bestimm-\n"
+ "ten POKéMON die\n"
+ "Entwicklung aus.");
+
+static const u8 gItemDescription_LeafStone[] = _(
+ "Löst bei bestimm-\n"
+ "ten POKéMON die\n"
+ "Entwicklung aus.");
+
+static const u8 gItemDescription_TinyMushroom[] = _(
+ "Ein gemeiner\n"
+ "Pilz von \n"
+ "geringem Wert.");
+
+static const u8 gItemDescription_BigMushroom[] = _(
+ "Ein seltener\n"
+ "Pilz von \n"
+ "hohem Wert.");
+
+static const u8 gItemDescription_Pearl[] = _(
+ "Eine hübsche Perle\n"
+ "von geringem Wert.");
+
+static const u8 gItemDescription_BigPearl[] = _(
+ "Schöne, große Per-\n"
+ "le, die einen hohen\n"
+ "Preis erzielen kann.");
+
+static const u8 gItemDescription_Stardust[] = _(
+ "Schöner, roter\n"
+ "Sand, der von\n"
+ "großem Wert ist.");
+
+static const u8 gItemDescription_StarPiece[] = _(
+ "Roter Edelstein,\n"
+ "der einen hohen\n"
+ "Preis erzielen kann.");
+
+static const u8 gItemDescription_Nugget[] = _(
+ "Ein Barren aus pu-\n"
+ "rem Gold, der von\n"
+ "großem Wert ist.");
+
+static const u8 gItemDescription_HeartScale[] = _(
+ "Hübsche Schuppe,\n"
+ "höchst begehrt\n"
+ "bei Sammlern.");
+
+static const u8 gItemDescription_OrangeMail[] = _(
+ "BRIEF (Tragen) mit \n"
+ "ZIGZACHS-\n"
+ "Aufdruck.");
+
+static const u8 gItemDescription_HarborMail[] = _(
+ "BRIEF (Tragen) mit \n"
+ "WINGULL-\n"
+ "Aufdruck.");
+
+static const u8 gItemDescription_GlitterMail[] = _(
+ "BRIEF (Tragen) mit \n"
+ "PIKACHU-\n"
+ "Aufdruck.");
+
+static const u8 gItemDescription_MechMail[] = _(
+ "BRIEF (Tragen) mit \n"
+ "MAGNETILO-\n"
+ "Aufdruck.");
+
+static const u8 gItemDescription_WoodMail[] = _(
+ "BRIEF (Tragen) mit \n"
+ "BUMMELZ-\n"
+ "Aufdruck.");
+
+static const u8 gItemDescription_WaveMail[] = _(
+ "BRIEF (Tragen) mit \n"
+ "WAILMER-\n"
+ "Aufdruck.");
+
+static const u8 gItemDescription_BeadMail[] = _(
+ "BRIEF mit Abbildung\n"
+ "des POKéMON, das\n"
+ "ihn trägt.");
+
+static const u8 gItemDescription_ShadowMail[] = _(
+ "BRIEF (Tragen) mit \n"
+ "ZWIRRLICHT-\n"
+ "Aufdruck.");
+
+static const u8 gItemDescription_TropicMail[] = _(
+ "BRIEF (Tragen) mit \n"
+ "BLUBELLA-\n"
+ "Aufdruck.");
+
+static const u8 gItemDescription_DreamMail[] = _(
+ "BRIEF mit Abbildung\n"
+ "des POKéMON, das\n"
+ "ihn trägt.");
+
+static const u8 gItemDescription_FabMail[] = _(
+ "BRIEF (Tragen) mit \n"
+ "edlem Aufdruck.");
+
+static const u8 gItemDescription_RetroMail[] = _(
+ "BRIEF mit den Ab-\n"
+ "bildungen dreier\n"
+ "POKéMON-Gesichter.");
+
+static const u8 gItemDescription_CheriBerry[] = _(
+ "Item (Tragen) be-\n"
+ "wirkt Selbstheilung\n"
+ "bei Paralyse.");
+
+static const u8 gItemDescription_ChestoBerry[] = _(
+ "Item (Tragen)\n"
+ "weckt schlafendes\n"
+ "POKéMON im Kampf.");
+
+static const u8 gItemDescription_PechaBerry[] = _(
+ "Item (Tragen) be-\n"
+ "wirkt Selbstheilung\n"
+ "bei Vergiftung.");
+
+static const u8 gItemDescription_RawstBerry[] = _(
+ "Item (Tragen) be-\n"
+ "wirkt Selbstheilung\n"
+ "bei Verbrennung.");
+
+static const u8 gItemDescription_AspearBerry[] = _(
+ "Item (Tragen) be-\n"
+ "wirkt Selbstheilung\n"
+ "bei Frost.");
+
+static const u8 gItemDescription_LeppaBerry[] = _(
+ "Item (Tragen) füllt\n"
+ "AP im Kampf um\n"
+ "10 Punkte auf.");
+
+static const u8 gItemDescription_OranBerry[] = _(
+ "Item (Tragen) füllt\n"
+ "KP im Kampf um\n"
+ "10 Punkte auf.");
+
+static const u8 gItemDescription_PersimBerry[] = _(
+ "Item (Tragen) be-\n"
+ "wirkt Selbstheilung\n"
+ "bei Verwirrung.");
+
+static const u8 gItemDescription_LumBerry[] = _(
+ "Item (Tragen) be-\n"
+ "wirkt Selbstheilung\n"
+ "bei Statusproblem.");
+
+static const u8 gItemDescription_SitrusBerry[] = _(
+ "Item (Tragen) füllt\n"
+ "KP im Kampf um\n"
+ "30 Punkte auf.");
+
+static const u8 gItemDescription_FigyBerry[] = _(
+ "Item (Tragen) füllt\n"
+ "im Kampf KP auf, be-\n"
+ "wirkt evtl. Verwirr.");
+
+static const u8 gItemDescription_WikiBerry[] = _(
+ "Item (Tragen) füllt\n"
+ "KP auf, bewirkt\n"
+ "evtl. Verwirrung.");
+
+static const u8 gItemDescription_MagoBerry[] = _(
+ "Item (Tragen) füllt\n"
+ "KP auf, bewirkt\n"
+ "evtl. Verwirrung.");
+
+static const u8 gItemDescription_AguavBerry[] = _(
+ "Item (Tragen) füllt\n"
+ "KP auf, bewirkt\n"
+ "evtl. Verwirrung.");
+
+static const u8 gItemDescription_IapapaBerry[] = _(
+ "Item (Tragen) füllt\n"
+ "KP auf, bewirkt\n"
+ "evtl. Verwirrung.");
+
+static const u8 gItemDescription_RazzBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "HIMMIH wächst.");
+
+static const u8 gItemDescription_BlukBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "MORB wächst.");
+
+static const u8 gItemDescription_NanabBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "NANAB wächst.");
+
+static const u8 gItemDescription_WepearBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "NIRBE wächst.");
+
+static const u8 gItemDescription_PinapBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "SANANA wächst.");
+
+static const u8 gItemDescription_PomegBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "GRANA wächst.");
+
+static const u8 gItemDescription_KelpsyBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "SETANG wächst.");
+
+static const u8 gItemDescription_QualotBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "QUALOT wächst.");
+
+static const u8 gItemDescription_HondewBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "HONMEL wächst.");
+
+static const u8 gItemDescription_GrepaBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "LABRUS wächst.");
+
+static const u8 gItemDescription_TamatoBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "TAMOT wächst.");
+
+static const u8 gItemDescription_CornnBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "SAIM wächst.");
+
+static const u8 gItemDescription_MagostBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "MAGOST wächst.");
+
+static const u8 gItemDescription_RabutaBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "RABUTA wächst.");
+
+static const u8 gItemDescription_NomelBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "TRONZI wächst.");
+
+static const u8 gItemDescription_SpelonBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "KIWAN wächst.");
+
+static const u8 gItemDescription_PamtreBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "PALLM wächst.");
+
+static const u8 gItemDescription_WatmelBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "WASMEL wächst.");
+
+static const u8 gItemDescription_DurinBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "DURIN wächst.");
+
+static const u8 gItemDescription_BelueBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "MYRTIL wächst.");
+
+static const u8 gItemDescription_LiechiBerry[] = _(
+ "Item (Tragen) hebt\n"
+ "ANGR.-Wert in einer\n"
+ "Notlage.");
+
+static const u8 gItemDescription_GanlonBerry[] = _(
+ "Item (Tragen) hebt\n"
+ "VERT.-Wert in einer\n"
+ "Notlage.");
+
+static const u8 gItemDescription_SalacBerry[] = _(
+ "Item (Tragen) hebt\n"
+ "INIT.-Wert in einer\n"
+ "Notlage.");
+
+static const u8 gItemDescription_PetayaBerry[] = _(
+ "Item (Tragen) hebt\n"
+ "SP. ANGR.-Wert\n"
+ "in einer Notlage.");
+
+static const u8 gItemDescription_ApicotBerry[] = _(
+ "Item (Tragen) hebt\n"
+ "SP. VERT.-Wert\n"
+ "in einer Notlage.");
+
+static const u8 gItemDescription_LansatBerry[] = _(
+ "Item (Tragen) hebt\n"
+ "Volltrefferquote\n"
+ "in einer Notlage.");
+
+static const u8 gItemDescription_StarfBerry[] = _(
+ "Item (Tragen) hebt\n"
+ "einen Statuswert\n"
+ "in einer Notlage.");
+
+static const u8 gItemDescription_EnigmaBerry[] = _(
+ "Säe {POKEBLOCK}-Zutat\n"
+ "in Lehmboden, damit\n"
+ "Mysterium wächst.");
+
+static const u8 gItemDescription_BrightPowder[] = _(
+ "Item (Tragen)\n"
+ "senkt die Genauig-\n"
+ "keit des Gegners.");
+
+static const u8 gItemDescription_WhiteHerb[] = _(
+ "Item (Tragen) hebt\n"
+ "jede Statusverän-\n"
+ "derung auf.");
+
+static const u8 gItemDescription_MachoBrace[] = _(
+ "Item (Tragen) för-\n"
+ "dert Wachstum,\n"
+ "aber senkt INIT.");
+
+static const u8 gItemDescription_ExpShare[] = _(
+ "Item (Tragen) teilt\n"
+ "die Kampf-EP.");
+
+static const u8 gItemDescription_QuickClaw[] = _(
+ "Item (Tragen) hebt\n"
+ "die Erstschlag-\n"
+ "quote.");
+
+static const u8 gItemDescription_SootheBell[] = _(
+ "Item (Tragen) be-\n"
+ "sänftigt und för-\n"
+ "dert Sympathie.");
+
+static const u8 gItemDescription_MentalHerb[] = _(
+ "Item (Tragen) er-\n"
+ "löst POKéMON von\n"
+ "der Anziehung.");
+
+static const u8 gItemDescription_ChoiceBand[] = _(
+ "Stärkt eine Atta-\n"
+ "cke. Aber nur diese\n"
+ "ist einsetzbar.");
+
+static const u8 gItemDescription_KingsRock[] = _(
+ "Item (Tragen) kann\n"
+ "Gegner zurück-\n"
+ "weichen lassen.");
+
+static const u8 gItemDescription_SilverPowder[] = _(
+ "Item (Tragen) ver-\n"
+ "bessert KÄFER-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_AmuletCoin[] = _(
+ "Doppelter Geldbe-\n"
+ "trag, wenn Träger \n"
+ "am Kampf teilnimmt.");
+
+static const u8 gItemDescription_CleanseTag[] = _(
+ "Item (Tragen) kann\n"
+ "wilde POKéMON\n"
+ "abhalten.");
+
+static const u8 gItemDescription_SoulDew[] = _(
+ "Item (Tragen) hebt\n"
+ "SP.ANG & SP.VER von\n"
+ "LATIOS & LATIAS.");
+
+static const u8 gItemDescription_DeepSeaTooth[] = _(
+ "Item (Tragen) hebt\n"
+ "SP. ANGR. von\n"
+ "PERLU.");
+
+static const u8 gItemDescription_DeepSeaScale[] = _(
+ "Item (Tragen) hebt\n"
+ "SP. VERT. von\n"
+ "PERLU.");
+
+static const u8 gItemDescription_SmokeBall[] = _(
+ "Item (Tragen) er-\n"
+ "möglicht Flucht vor\n"
+ "wilden POKéMON.");
+
+static const u8 gItemDescription_Everstone[] = _(
+ "Wundersamer Stein\n"
+ "zum Tragen. Bewirkt\n"
+ "Entwicklungsstopp.");
+
+static const u8 gItemDescription_FocusBand[] = _(
+ "Item (Tragen) kann\n"
+ "manchmal K.O.\n"
+ "verhindern.");
+
+static const u8 gItemDescription_LuckyEgg[] = _(
+ "Item (Tragen)\n"
+ "erhöht im Kampf er-\n"
+ "haltene Extra-EP.");
+
+static const u8 gItemDescription_ScopeLens[] = _(
+ "Item (Tragen)\n"
+ "erhöht die\n"
+ "Volltrefferquote.");
+
+static const u8 gItemDescription_MetalCoat[] = _(
+ "Item (Tragen)\n"
+ "verstärkt STAHL-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_Leftovers[] = _(
+ "Item (Tragen) füllt\n"
+ "im Kampf langsam\n"
+ "KP wieder auf.");
+
+static const u8 gItemDescription_DragonScale[] = _(
+ "Seltsame Haut zum\n"
+ "Tragen für POKéMON\n"
+ "des Typs DRACHEN.");
+
+static const u8 gItemDescription_LightBall[] = _(
+ "Item (Tragen)\n"
+ "erhöht PIKACHUS\n"
+ "SP. ANGR.");
+
+static const u8 gItemDescription_SoftSand[] = _(
+ "Item (Tragen)\n"
+ "verstärkt BODEN-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_HardStone[] = _(
+ "Item (Tragen)\n"
+ "verstärkt GESTEIN-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_MiracleSeed[] = _(
+ "Item (Tragen)\n"
+ "verstärkt PFLAN-\n"
+ "ZEN-Attacken.");
+
+static const u8 gItemDescription_BlackGlasses[] = _(
+ "Item (Tragen)\n"
+ "verstärkt UNLICHT-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_BlackBelt[] = _(
+ "Item (Tragen)\n"
+ "verstärkt KAMPF-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_Magnet[] = _(
+ "Item (Tragen)\n"
+ "verstärkt ELEKTRO-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_MysticWater[] = _(
+ "Item (Tragen)\n"
+ "verstärkt WASSER-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_SharpBeak[] = _(
+ "Item (Tragen)\n"
+ "verstärkt FLUG-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_PoisonBarb[] = _(
+ "Item (Tragen)\n"
+ "verstärkt GIFT-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_NeverMeltIce[] = _(
+ "Item (Tragen)\n"
+ "verstärkt EIS-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_SpellTag[] = _(
+ "Item (Tragen)\n"
+ "verstärkt GEIST-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_TwistedSpoon[] = _(
+ "Item (Tragen)\n"
+ "verstärkt PSYCHO-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_Charcoal[] = _(
+ "Item (Tragen)\n"
+ "verstärkt FEUER-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_DragonFang[] = _(
+ "Item (Tragen)\n"
+ "verstärkt DRACHEN-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_SilkScarf[] = _(
+ "Item (Tragen)\n"
+ "verstärkt NORMAL-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_UpGrade[] = _(
+ "Eine mysteriöse\n"
+ "Box der SILPH CO.");
+
+static const u8 gItemDescription_ShellBell[] = _(
+ "Item (Tragen) füllt\n"
+ "im Kampf langsam \n"
+ "KP wieder auf.");
+
+static const u8 gItemDescription_SeaIncense[] = _(
+ "Item (Tragen)\n"
+ "verstärkt WASSER-\n"
+ "Attacken.");
+
+static const u8 gItemDescription_LaxIncense[] = _(
+ "Item (Tragen)\n"
+ "senkt Genauigkeit\n"
+ "des Gegners.");
+
+static const u8 gItemDescription_LuckyPunch[] = _(
+ "Item (Tragen)\n"
+ "erhöht CHANEIRAS\n"
+ "Volltrefferquote.");
+
+static const u8 gItemDescription_MetalPowder[] = _(
+ "Item (Tragen)\n"
+ "erhöht VERT.-Wert\n"
+ "von DITTO.");
+
+static const u8 gItemDescription_ThickClub[] = _(
+ "Irgendeine Art\n"
+ "Knochen von\n"
+ "geringem Wert.");
+
+static const u8 gItemDescription_Stick[] = _(
+ "Gemeiner Lauch,\n"
+ "der nur von\n"
+ "geringem Wert ist.");
+
+static const u8 gItemDescription_RedScarf[] = _(
+ "Item (Tragen) hebt\n"
+ "COOL.-Wert für den\n"
+ "WETTBEWERB.");
+
+static const u8 gItemDescription_BlueScarf[] = _(
+ "Item (Tragen) hebt\n"
+ "SCHÖN.-Wert für den\n"
+ "WETTBEWERB.");
+
+static const u8 gItemDescription_PinkScarf[] = _(
+ "Item (Tragen) hebt\n"
+ "ANMUT-Wert für den\n"
+ "WETTBEWERB.");
+
+static const u8 gItemDescription_GreenScarf[] = _(
+ "Item (Tragen) hebt\n"
+ "KLUG.-Wert für den\n"
+ "WETTBEWERB.");
+
+static const u8 gItemDescription_YellowScarf[] = _(
+ "Item (Tragen) hebt\n"
+ "STÄRKE-Wert für\n"
+ "den WETTBEWERB.");
+
+static const u8 gItemDescription_MachBike[] = _(
+ "Klapprad, das dop-\n"
+ "pelt so schnell ist\n"
+ "wie ein Fußgänger.");
+
+static const u8 gItemDescription_CoinCase[] = _(
+ "Kann bis zu 9.999\n"
+ "MÜNZEN aufnehmen.");
+
+static const u8 gItemDescription_Itemfinder[] = _(
+ "Ein Gerät, das ver-\n"
+ "borgene Items via \n"
+ "Schallwellen ortet.");
+
+static const u8 gItemDescription_OldRod[] = _(
+ "Damit kannst du in\n"
+ "jedem Gewässer\n"
+ "POKéMON angeln.");
+
+static const u8 gItemDescription_GoodRod[] = _(
+ "Eine recht gute\n"
+ "Angel zum\n"
+ "POKéMON-Fischen.");
+
+static const u8 gItemDescription_SuperRod[] = _(
+ "Die beste Angel,\n"
+ "um nach POKéMON\n"
+ "zu fischen.");
+
+static const u8 gItemDescription_SSTicket[] = _(
+ "Ein Ticket zur\n"
+ "Fahrt auf\n"
+ "einer Fähre.");
+
+static const u8 gItemDescription_ContestPass[] = _(
+ "Ausweis zur Teil-\n"
+ "nahme an POKéMON- \n"
+ "WETTBEWERBEN.");
+
+static const u8 gItemDescription_WailmerPail[] = _(
+ "Ein Gegenstand zum\n"
+ "Gießen von Pflan-\n"
+ "zen wie BEEREN.");
+
+static const u8 gItemDescription_DevonGoods[] = _(
+ "Päckchen, das Ma-\n"
+ "schinenteile von\n"
+ "DEVON enthält.");
+
+static const u8 gItemDescription_SootSack[] = _(
+ "Beutel zum Sammeln\n"
+ "und Aufbewahren\n"
+ "von Vulkanasche.");
+
+static const u8 gItemDescription_BasementKey[] = _(
+ "Schlüssel für NEU\n"
+ "MALVENFROH unter\n"
+ "MALVENFROH CITY.");
+
+static const u8 gItemDescription_AcroBike[] = _(
+ "Klapprad ermög-\n"
+ "licht Sprünge und\n"
+ "Wheelies.");
+
+static const u8 gItemDescription_PokeblockCase[] = _(
+ "Box für {POKEBLOCK},\n"
+ "die im BEERENMIXER\n"
+ "hergestellt werden.");
+
+static const u8 gItemDescription_Letter[] = _(
+ "Brief an TROY\n"
+ "vom PRÄSIDENTEN\n"
+ "der DEVON CORP.");
+
+static const u8 gItemDescription_EonTicket[] = _(
+ "Bootsticket zu\n"
+ "einer fernen Insel\n"
+ "im Süden.");
+
+static const u8 gItemDescription_RedOrb[] = _(
+ "Rot glühende Kugel,\n"
+ "die eine uralte\n"
+ "Macht bergen soll.");
+
+static const u8 gItemDescription_BlueOrb[] = _(
+ "Blau glühende Kugel,\n"
+ "die eine uralte\n"
+ "Macht bergen soll.");
+
+static const u8 gItemDescription_Scanner[] = _(
+ "Ein Gerät, das\n"
+ "im SCHIFFSWRACK\n"
+ "gefunden wurde.");
+
+static const u8 gItemDescription_GoGoggles[] = _(
+ "Schicke Brille, die\n"
+ "die Augen vor Sand-\n"
+ "stürmen schützt.");
+
+static const u8 gItemDescription_Meteorite[] = _(
+ "Meteorit. Fundort:\n"
+ "METEORFÄLLE.");
+
+static const u8 gItemDescription_Room1Key[] = _(
+ "Schlüssel zur Tür\n"
+ "einer Kabine auf\n"
+ "dem SCHIFFSWRACK.");
+
+static const u8 gItemDescription_Room2Key[] = _(
+ "Schlüssel zur Tür\n"
+ "einer Kabine auf\n"
+ "dem SCHIFFSWRACK.");
+
+static const u8 gItemDescription_Room4Key[] = _(
+ "Schlüssel zur Tür\n"
+ "einer Kabine auf\n"
+ "dem SCHIFFSWRACK.");
+
+static const u8 gItemDescription_Room6Key[] = _(
+ "Schlüssel zur Tür\n"
+ "einer Kabine auf\n"
+ "dem SCHIFFSWRACK.");
+
+static const u8 gItemDescription_StorageKey[] = _(
+ "Schlüssel zum\n"
+ "Lagerraum auf\n"
+ "dem SCHIFFSWRACK.");
+
+static const u8 gItemDescription_RootFossil[] = _(
+ "Fossil eines ural-\n"
+ "ten POKéMON, das in\n"
+ "der Tiefsee lebte.");
+
+static const u8 gItemDescription_ClawFossil[] = _(
+ "Fossil eines ural-\n"
+ "ten POKéMON, das in\n"
+ "der Tiefsee lebte.");
+
+static const u8 gItemDescription_DevonScope[] = _(
+ "Gerät von DEVON, \n"
+ "das unsichtbare\n"
+ "POKéMON entlarvt.");
+
+static const u8 gItemDescription_TM01[] = _(
+ "Stark. POKéMON er-\n"
+ "schrickt vielleicht\n"
+ "bei gegn. Attacke.");
+
+static const u8 gItemDescription_TM02[] = _(
+ "Gegner wird mit\n"
+ "langen, scharfen\n"
+ "Krallen attackiert.");
+
+static const u8 gItemDescription_TM03[] = _(
+ "Eine Ultraschall-\n"
+ "welle, die den Geg-\n"
+ "ner verwirren kann.");
+
+static const u8 gItemDescription_TM04[] = _(
+ "Verstärkt SP. ANGR.\n"
+ "und SP. VERT. durch\n"
+ "Konzentration.");
+
+static const u8 gItemDescription_TM05[] = _(
+ "Brüller schlägt Geg-\n"
+ "ner in die Flucht \n"
+ "und beendet Kampf.");
+
+static const u8 gItemDescription_TM06[] = _(
+ "Vergiftet den Geg-\n"
+ "ner und schadet \n"
+ "ihm zunehmend.");
+
+static const u8 gItemDescription_TM07[] = _(
+ "Hagelsturm schadet\n"
+ "allen POKéMON außer\n"
+ "denen des Typs EIS.");
+
+static const u8 gItemDescription_TM08[] = _(
+ "Stärkt den Körper.\n"
+ "So steigt ANGR.-\n"
+ "und VERT.-Wert.");
+
+static const u8 gItemDescription_TM09[] = _(
+ "Bepflanzt den\n"
+ "Gegner mit 2 bis 5\n"
+ "Samen auf einmal.");
+
+static const u8 gItemDescription_TM10[] = _(
+ "Die Stärke dieser\n"
+ "Attacke hängt vom \n"
+ "jew. POKéMON ab.");
+
+static const u8 gItemDescription_TM11[] = _(
+ "Verstärkt FEUER-\n"
+ "Attacken über \n"
+ "5 Runden.");
+
+static const u8 gItemDescription_TM12[] = _(
+ "Reizt Geg. so, dass\n"
+ "er nur Angriffs-\n"
+ "attacken einsetzt.");
+
+static const u8 gItemDescription_TM13[] = _(
+ "Eisig kalter Strahl,\n"
+ "der den Gegner\n"
+ "einfrieren kann.");
+
+static const u8 gItemDescription_TM14[] = _(
+ "Eis- und Schnee- \n"
+ "Attacke, die Gegner\n"
+ "einfrieren kann.");
+
+static const u8 gItemDescription_TM15[] = _(
+ "Stark, muss sich\n"
+ "aber in der nächs-\n"
+ "ten Runde aufladen.");
+
+static const u8 gItemDescription_TM16[] = _(
+ "Wand aus Licht, die\n"
+ "Senkung des SP.\n"
+ "ANGR. verringert.");
+
+static const u8 gItemDescription_TM17[] = _(
+ "Schützt, könnte\n"
+ "aber bei häufigem\n"
+ "Einsatz versagen.");
+
+static const u8 gItemDescription_TM18[] = _(
+ "Verstärkt WASSER-\n"
+ "Attacken über\n"
+ "5 Runden.");
+
+static const u8 gItemDescription_TM19[] = _(
+ "Füllt KP um die Hälf-\n"
+ "te der zugefügten\n"
+ "Schadenspunkte.");
+
+static const u8 gItemDescription_TM20[] = _(
+ "Mystische Macht\n"
+ "verhindert Status-\n"
+ "veränderungen.");
+
+static const u8 gItemDescription_TM21[] = _(
+ "Je unbeliebter der\n"
+ "Trainer, desto grö-\n"
+ "ßer die Wirkung.");
+
+static const u8 gItemDescription_TM22[] = _(
+ "Erst wird Sonnen-\n"
+ "licht absorbiert,\n"
+ "dann erfolgt Angr.");
+
+static const u8 gItemDescription_TM23[] = _(
+ "Schlag mit harter\n"
+ "Rute. Kann gleichz.\n"
+ "VERT.-Wert senken.");
+
+static const u8 gItemDescription_TM24[] = _(
+ "Starke Elektro-\n"
+ "Attacke kann\n"
+ "Paralyse bewirken.");
+
+static const u8 gItemDescription_TM25[] = _(
+ "Mächtiger Donner-\n"
+ "schlag, der Paraly-\n"
+ "se bewirken kann.");
+
+static const u8 gItemDescription_TM26[] = _(
+ "Starkes Beben hat\n"
+ "keinen Einfluss auf\n"
+ "fliegende Gegner.");
+
+static const u8 gItemDescription_TM27[] = _(
+ "Je beliebter der\n"
+ "Trainer, desto grö-\n"
+ "ßer die Wirkung.");
+
+static const u8 gItemDescription_TM28[] = _(
+ "Erst gräbt sich An-\n"
+ "greifer ein, dann\n"
+ "erfolgt Angriff.");
+
+static const u8 gItemDescription_TM29[] = _(
+ "Starke PSYCHO-At-\n"
+ "tacke, die SP. VERT.\n"
+ "senken kann.");
+
+static const u8 gItemDescription_TM30[] = _(
+ "Dunkler Klumpen,\n"
+ "der SP. VERT.\n"
+ "senken kann.");
+
+static const u8 gItemDescription_TM31[] = _(
+ "Zerstört Barrieren\n"
+ "wie SCHUTZSCHILD,\n"
+ "fügt Schaden zu.");
+
+static const u8 gItemDescription_TM32[] = _(
+ "Virtueller Doppel-\n"
+ "gänger erhöht\n"
+ "den Flucht-Wert.");
+
+static const u8 gItemDescription_TM33[] = _(
+ "Wand aus Licht, die\n"
+ "physische Atta-\n"
+ "cken schwächt.");
+
+static const u8 gItemDescription_TM34[] = _(
+ "Fügt Gegner einen\n"
+ "Stromschlag zu,\n"
+ "der nie verfehlt.");
+
+static const u8 gItemDescription_TM35[] = _(
+ "Entfesselt Feuer-\n"
+ "strahl, der Gegner\n"
+ "verbrennen kann.");
+
+static const u8 gItemDescription_TM36[] = _(
+ "Bewirft Gegner mit\n"
+ "Matsch, der ihn\n"
+ "vergiften kann.");
+
+static const u8 gItemDescription_TM37[] = _(
+ "Sandsturm trifft\n"
+ "etliche Runden lang\n"
+ "die Kämpfenden.");
+
+static const u8 gItemDescription_TM38[] = _(
+ "Kraftvolle FEUER-\n"
+ "Attacke, die Gegner\n"
+ "verbrennen kann.");
+
+static const u8 gItemDescription_TM39[] = _(
+ "Stoppt GESTEIN-\n"
+ "Attacken. Kann\n"
+ "INIT.-Wert senken.");
+
+static const u8 gItemDescription_TM40[] = _(
+ "Eine extrem schnel-\n"
+ "le Attacke, die\n"
+ "unausweichlich ist.");
+
+static const u8 gItemDescription_TM41[] = _(
+ "Blockiert gerade\n"
+ "verwendete Atta-\n"
+ "cke des Gegners.");
+
+static const u8 gItemDescription_TM42[] = _(
+ "Stärkt ANGR.-Wert\n"
+ "bei Gift, Brand oder\n"
+ "Paralyse.");
+
+static const u8 gItemDescription_TM43[] = _(
+ "Die Umgebung\n"
+ "beeinflusst die Art\n"
+ "der Attacke.");
+
+static const u8 gItemDescription_TM44[] = _(
+ "POKéMON schläft\n"
+ "2 Runden. Füllt KP\n"
+ "und heilt Status.");
+
+static const u8 gItemDescription_TM45[] = _(
+ "Erschwert Angriff\n"
+ "auf Gegner des an-\n"
+ "deren Geschlechts.");
+
+static const u8 gItemDescription_TM46[] = _(
+ "Beim Angriff wird\n"
+ "Item des Gegners\n"
+ "evtl. gestohlen.");
+
+static const u8 gItemDescription_TM47[] = _(
+ "Den Gegner\n"
+ "treffen stählerne\n"
+ "Flügelschläge.");
+
+static const u8 gItemDescription_TM48[] = _(
+ "Austausch der\n"
+ "Fähigkeiten bei der\n"
+ "nächsten Attacke.");
+
+static const u8 gItemDescription_TM49[] = _(
+ "Stiehlt die\n"
+ "Effekte der gegne-\n"
+ "rischen Attacke.");
+
+static const u8 gItemDescription_TM50[] = _(
+ "Höchste Kraft,\n"
+ "aber senkt SP.\n"
+ "ANGR. enorm.");
+
+static const u8 gItemDescription_HM01[] = _(
+ "Gegner wird mit\n"
+ "klingenscharfen\n"
+ "Krallen attackiert.");
+
+static const u8 gItemDescription_HM02[] = _(
+ "PKMN fliegt hoch,\n"
+ "dann erfolgt rasan-\n"
+ "ter Luftangriff.");
+
+static const u8 gItemDescription_HM03[] = _(
+ "Eine riesige Flut-\n"
+ "welle ergießt sich\n"
+ "über dem Gegner.");
+
+static const u8 gItemDescription_HM04[] = _(
+ "Den Gegner trifft \n"
+ "ein energiegelade-\n"
+ "ner Kraftschlag.");
+
+static const u8 gItemDescription_HM05[] = _(
+ "Ein gleißender\n"
+ "Lichtstrahl, der\n"
+ "Genau. senken kann.");
+
+static const u8 gItemDescription_HM06[] = _(
+ "Steinbrecherische\n"
+ "Attacke, die VERT.-\n"
+ "Wert senken kann.");
+
+static const u8 gItemDescription_HM07[] = _(
+ "Mächtige Attacke,\n"
+ "die Wasserfälle\n"
+ "bezwingbar macht.");
+
+static const u8 gItemDescription_HM08[] = _(
+ "PKMN taucht ab,\n"
+ "dann erfolgt An-\n"
+ "griff aus der Tiefe.");
+
+static const u8 gItemDescription_Dummy[] = _("");
diff --git a/src/data/item_descriptions_en.h b/src/data/item_descriptions_en.h
new file mode 100644
index 000000000..e07a5fc19
--- /dev/null
+++ b/src/data/item_descriptions_en.h
@@ -0,0 +1,1392 @@
+static const u8 gItemDescription_MasterBall[] = _(
+ "The best BALL that\n"
+ "catches a POKéMON\n"
+ "without fail.");
+
+static const u8 gItemDescription_UltraBall[] = _(
+ "A better BALL with\n"
+ "a higher catch rate\n"
+ "than a GREAT BALL.");
+
+static const u8 gItemDescription_GreatBall[] = _(
+ "A good BALL with a\n"
+ "higher catch rate\n"
+ "than a POKé BALL.");
+
+static const u8 gItemDescription_PokeBall[] = _(
+ "A tool used for\n"
+ "catching wild\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_SafariBall[] = _(
+ "A special BALL that\n"
+ "is used only in the\n"
+ "SAFARI ZONE.");
+
+static const u8 gItemDescription_NetBall[] = _(
+ "A BALL that works\n"
+ "well on WATER- and\n"
+ "BUG-type POKéMON.");
+
+static const u8 gItemDescription_DiveBall[] = _(
+ "A BALL that works\n"
+ "better on POKéMON\n"
+ "on the ocean floor.");
+
+static const u8 gItemDescription_NestBall[] = _(
+ "A BALL that works\n"
+ "better on weaker\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_RepeatBall[] = _(
+ "A BALL that works\n"
+ "better on POKéMON\n"
+ "caught before.");
+
+static const u8 gItemDescription_TimerBall[] = _(
+ "More effective as\n"
+ "more turns are\n"
+ "taken in battle.");
+
+static const u8 gItemDescription_LuxuryBall[] = _(
+ "A cozy BALL that\n"
+ "makes POKéMON\n"
+ "more friendly.");
+
+static const u8 gItemDescription_PremierBall[] = _(
+ "A rare BALL made\n"
+ "in commemoration\n"
+ "of some event.");
+
+static const u8 gItemDescription_Potion[] = _(
+ "Restores the HP of\n"
+ "a POKéMON by\n"
+ "20 points.");
+
+static const u8 gItemDescription_Antidote[] = _(
+ "Heals a poisoned\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_BurnHeal[] = _(
+ "Heals POKéMON\n"
+ "of a burn.");
+
+static const u8 gItemDescription_IceHeal[] = _(
+ "Defrosts a frozen\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_Awakening[] = _(
+ "Awakens a sleeping\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_ParalyzeHeal[] = _(
+ "Heals a paralyzed\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_FullRestore[] = _(
+ "Fully restores the\n"
+ "HP and status of a\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_MaxPotion[] = _(
+ "Fully restores the\n"
+ "HP of a POKéMON.");
+
+static const u8 gItemDescription_HyperPotion[] = _(
+ "Restores the HP of\n"
+ "a POKéMON by\n"
+ "200 points.");
+
+static const u8 gItemDescription_SuperPotion[] = _(
+ "Restores the HP of\n"
+ "a POKéMON by\n"
+ "50 points.");
+
+static const u8 gItemDescription_FullHeal[] = _(
+ "Heals all the status\n"
+ "problems of one\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_Revive[] = _(
+ "Revives a fainted\n"
+ "POKéMON with half\n"
+ "its HP.");
+
+static const u8 gItemDescription_MaxRevive[] = _(
+ "Revives a fainted\n"
+ "POKéMON with all\n"
+ "its HP.");
+
+static const u8 gItemDescription_FreshWater[] = _(
+ "A mineral water\n"
+ "that restores HP\n"
+ "by 50 points.");
+
+static const u8 gItemDescription_SodaPop[] = _(
+ "A fizzy soda drink\n"
+ "that restores HP\n"
+ "by 60 points.");
+
+static const u8 gItemDescription_Lemonade[] = _(
+ "A very sweet drink\n"
+ "that restores HP\n"
+ "by 80 points.");
+
+static const u8 gItemDescription_MoomooMilk[] = _(
+ "A nutritious milk\n"
+ "that restores HP\n"
+ "by 100 points.");
+
+static const u8 gItemDescription_EnergyPowder[] = _(
+ "A bitter powder\n"
+ "that restores HP\n"
+ "by 50 points.");
+
+static const u8 gItemDescription_EnergyRoot[] = _(
+ "A bitter root\n"
+ "that restores HP\n"
+ "by 200 points.");
+
+static const u8 gItemDescription_HealPowder[] = _(
+ "A bitter powder\n"
+ "that heals all\n"
+ "status problems.");
+
+static const u8 gItemDescription_RevivalHerb[] = _(
+ "A very bitter herb\n"
+ "that revives a\n"
+ "fainted POKéMON.");
+
+static const u8 gItemDescription_Ether[] = _(
+ "Restores the PP\n"
+ "of a selected move\n"
+ "by 10.");
+
+static const u8 gItemDescription_MaxEther[] = _(
+ "Fully restores the\n"
+ "PP of a selected\n"
+ "move.");
+
+static const u8 gItemDescription_Elixir[] = _(
+ "Restores the PP\n"
+ "of all moves by 10.");
+
+static const u8 gItemDescription_MaxElixir[] = _(
+ "Fully restores the\n"
+ "PP of a POKéMON’s\n"
+ "moves.");
+
+static const u8 gItemDescription_LavaCookie[] = _(
+ "A local specialty\n"
+ "that heals all\n"
+ "status problems.");
+
+static const u8 gItemDescription_BlueFlute[] = _(
+ "A glass flute that\n"
+ "awakens sleeping\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_YellowFlute[] = _(
+ "A glass flute that\n"
+ "snaps POKéMON\n"
+ "out of confusion.");
+
+static const u8 gItemDescription_RedFlute[] = _(
+ "A glass flute that\n"
+ "snaps POKéMON\n"
+ "out of attraction.");
+
+static const u8 gItemDescription_BlackFlute[] = _(
+ "A glass flute that\n"
+ "keeps away wild\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_WhiteFlute[] = _(
+ "A glass flute that\n"
+ "lures wild POKéMON.");
+
+static const u8 gItemDescription_BerryJuice[] = _(
+ "A 100% pure juice\n"
+ "that restores HP\n"
+ "by 20 points.");
+
+static const u8 gItemDescription_SacredAsh[] = _(
+ "Fully revives and\n"
+ "restores all\n"
+ "fainted POKéMON.");
+
+static const u8 gItemDescription_ShoalSalt[] = _(
+ "Salt obtained from\n"
+ "deep inside the\n"
+ "SHOAL CAVE.");
+
+static const u8 gItemDescription_ShoalShell[] = _(
+ "A seashell found\n"
+ "deep inside the\n"
+ "SHOAL CAVE.");
+
+static const u8 gItemDescription_RedShard[] = _(
+ "A shard from an\n"
+ "ancient item.\n"
+ "Can be sold cheaply.");
+
+static const u8 gItemDescription_BlueShard[] = _(
+ "A shard from an\n"
+ "ancient item.\n"
+ "Can be sold cheaply.");
+
+static const u8 gItemDescription_YellowShard[] = _(
+ "A shard from an\n"
+ "ancient item.\n"
+ "Can be sold cheaply.");
+
+static const u8 gItemDescription_GreenShard[] = _(
+ "A shard from an\n"
+ "ancient item.\n"
+ "Can be sold cheaply.");
+
+static const u8 gItemDescription_HPUp[] = _(
+ "Raises the HP of\n"
+ "one POKéMON.");
+
+static const u8 gItemDescription_Protein[] = _(
+ "Raises the stat\n"
+ "ATTACK of one\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_Iron[] = _(
+ "Raises the stat\n"
+ "DEFENSE of one\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_Carbos[] = _(
+ "Raises the stat\n"
+ "SPEED of one\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_Calcium[] = _(
+ "Raises the stat\n"
+ "SP. ATK of one\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_RareCandy[] = _(
+ "Raises the level\n"
+ "of a POKéMON by\n"
+ "one.");
+
+static const u8 gItemDescription_PPUp[] = _(
+ "Raises the maximum\n"
+ "PP of a selected\n"
+ "move.");
+
+static const u8 gItemDescription_Zinc[] = _(
+ "Raises the stat\n"
+ "SP. DEF of one\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_PPMax[] = _(
+ "Raises the PP of a\n"
+ "move to its maximum\n"
+ "points.");
+
+static const u8 gItemDescription_GuardSpec[] = _(
+ "Prevents stat\n"
+ "reduction when\n"
+ "used in battle.");
+
+static const u8 gItemDescription_DireHit[] = _(
+ "Raises the\n"
+ "critical-hit ratio\n"
+ "during one battle.");
+
+static const u8 gItemDescription_XAttack[] = _(
+ "Raises the stat\n"
+ "ATTACK during one\n"
+ "battle.");
+
+static const u8 gItemDescription_XDefend[] = _(
+ "Raises the stat\n"
+ "DEFENSE during one\n"
+ "battle.");
+
+static const u8 gItemDescription_XSpeed[] = _(
+ "Raises the stat\n"
+ "SPEED during one\n"
+ "battle.");
+
+static const u8 gItemDescription_XAccuracy[] = _(
+ "Raises accuracy\n"
+ "of attack moves\n"
+ "during one battle.");
+
+static const u8 gItemDescription_XSpecial[] = _(
+ "Raises the stat\n"
+ "SP. ATK during one\n"
+ "battle.");
+
+static const u8 gItemDescription_PokeDoll[] = _(
+ "Use to flee from\n"
+ "any battle with\n"
+ "a wild POKéMON.");
+
+static const u8 gItemDescription_FluffyTail[] = _(
+ "Use to flee from\n"
+ "any battle with\n"
+ "a wild POKéMON.");
+
+static const u8 gItemDescription_SuperRepel[] = _(
+ "Repels weak wild\n"
+ "POKéMON for 200\n"
+ "steps.");
+
+static const u8 gItemDescription_MaxRepel[] = _(
+ "Repels weak wild\n"
+ "POKéMON for 250\n"
+ "steps.");
+
+static const u8 gItemDescription_EscapeRope[] = _(
+ "Use to escape\n"
+ "instantly from a\n"
+ "cave or a dungeon.");
+
+static const u8 gItemDescription_Repel[] = _(
+ "Repels weak wild\n"
+ "POKéMON for 100\n"
+ "steps.");
+
+static const u8 gItemDescription_SunStone[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 gItemDescription_MoonStone[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 gItemDescription_FireStone[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 gItemDescription_ThunderStone[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 gItemDescription_WaterStone[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 gItemDescription_LeafStone[] = _(
+ "Makes certain\n"
+ "species of POKéMON\n"
+ "evolve.");
+
+static const u8 gItemDescription_TinyMushroom[] = _(
+ "A plain, ordinary\n"
+ "mushroom.\n"
+ "Can be sold cheaply.");
+
+static const u8 gItemDescription_BigMushroom[] = _(
+ "A rare mushroom\n"
+ "that would sell at a\n"
+ "high price.");
+
+static const u8 gItemDescription_Pearl[] = _(
+ "A pretty pearl.\n"
+ "Can be sold cheaply.");
+
+static const u8 gItemDescription_BigPearl[] = _(
+ "A lovely large pearl\n"
+ "that would sell at a\n"
+ "high price.");
+
+static const u8 gItemDescription_Stardust[] = _(
+ "Beautiful red sand.\n"
+ "Can be sold at a\n"
+ "high price.");
+
+static const u8 gItemDescription_StarPiece[] = _(
+ "A red gem shard.\n"
+ "It would sell for a\n"
+ "very high price.");
+
+static const u8 gItemDescription_Nugget[] = _(
+ "A nugget of pure\n"
+ "gold. Can be sold at\n"
+ "a high price.");
+
+static const u8 gItemDescription_HeartScale[] = _(
+ "A lovely scale.\n"
+ "It is coveted by\n"
+ "collectors.");
+
+static const u8 gItemDescription_OrangeMail[] = _(
+ "A ZIGZAGOON-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 gItemDescription_HarborMail[] = _(
+ "A WINGULL-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 gItemDescription_GlitterMail[] = _(
+ "A PIKACHU-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 gItemDescription_MechMail[] = _(
+ "A MAGNEMITE-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 gItemDescription_WoodMail[] = _(
+ "A SLAKOTH-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 gItemDescription_WaveMail[] = _(
+ "A WAILMER-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 gItemDescription_BeadMail[] = _(
+ "MAIL featuring a\n"
+ "sketch of the\n"
+ "holding POKéMON.");
+
+static const u8 gItemDescription_ShadowMail[] = _(
+ "A DUSKULL-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 gItemDescription_TropicMail[] = _(
+ "A BELLOSSOM-print\n"
+ "MAIL to be held by\n"
+ "a POKéMON.");
+
+static const u8 gItemDescription_DreamMail[] = _(
+ "MAIL featuring a\n"
+ "sketch of the\n"
+ "holding POKéMON.");
+
+static const u8 gItemDescription_FabMail[] = _(
+ "A gorgeous-print\n"
+ "MAIL to be held\n"
+ "by a POKéMON.");
+
+static const u8 gItemDescription_RetroMail[] = _(
+ "MAIL featuring the\n"
+ "drawings of three\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_CheriBerry[] = _(
+ "A hold item that\n"
+ "heals paralysis\n"
+ "in battle.");
+
+static const u8 gItemDescription_ChestoBerry[] = _(
+ "A hold item that\n"
+ "awakens POKéMON\n"
+ "in battle.");
+
+static const u8 gItemDescription_PechaBerry[] = _(
+ "A hold item that\n"
+ "heals poisoning\n"
+ "in battle.");
+
+static const u8 gItemDescription_RawstBerry[] = _(
+ "A hold item that\n"
+ "heals a burn in\n"
+ "battle.");
+
+static const u8 gItemDescription_AspearBerry[] = _(
+ "A hold item that\n"
+ "defrosts POKéMON\n"
+ "in battle.");
+
+static const u8 gItemDescription_LeppaBerry[] = _(
+ "A hold item that\n"
+ "restores 10 PP in\n"
+ "battle.");
+
+static const u8 gItemDescription_OranBerry[] = _(
+ "A hold item that\n"
+ "restores 10 HP in\n"
+ "battle.");
+
+static const u8 gItemDescription_PersimBerry[] = _(
+ "A hold item that\n"
+ "heals confusion\n"
+ "in battle.");
+
+static const u8 gItemDescription_LumBerry[] = _(
+ "A hold item that\n"
+ "heals status in\n"
+ "battle.");
+
+static const u8 gItemDescription_SitrusBerry[] = _(
+ "A hold item that\n"
+ "restores 30 HP in\n"
+ "battle.");
+
+static const u8 gItemDescription_FigyBerry[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 gItemDescription_WikiBerry[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 gItemDescription_MagoBerry[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 gItemDescription_AguavBerry[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 gItemDescription_IapapaBerry[] = _(
+ "A hold item that\n"
+ "restores HP but\n"
+ "may confuse.");
+
+static const u8 gItemDescription_RazzBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow RAZZ.");
+
+static const u8 gItemDescription_BlukBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow BLUK.");
+
+static const u8 gItemDescription_NanabBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow NANAB.");
+
+static const u8 gItemDescription_WepearBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow WEPEAR.");
+
+static const u8 gItemDescription_PinapBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow PINAP.");
+
+static const u8 gItemDescription_PomegBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow POMEG.");
+
+static const u8 gItemDescription_KelpsyBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow KELPSY.");
+
+static const u8 gItemDescription_QualotBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow QUALOT.");
+
+static const u8 gItemDescription_HondewBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow HONDEW.");
+
+static const u8 gItemDescription_GrepaBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow GREPA.");
+
+static const u8 gItemDescription_TamatoBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow TAMATO.");
+
+static const u8 gItemDescription_CornnBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow CORNN.");
+
+static const u8 gItemDescription_MagostBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow MAGOST.");
+
+static const u8 gItemDescription_RabutaBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow RABUTA.");
+
+static const u8 gItemDescription_NomelBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow NOMEL.");
+
+static const u8 gItemDescription_SpelonBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow SPELON.");
+
+static const u8 gItemDescription_PamtreBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow PAMTRE.");
+
+static const u8 gItemDescription_WatmelBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow WATMEL.");
+
+static const u8 gItemDescription_DurinBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow DURIN.");
+
+static const u8 gItemDescription_BelueBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow BELUE.");
+
+static const u8 gItemDescription_LiechiBerry[] = _(
+ "A hold item that\n"
+ "raises ATTACK in\n"
+ "a pinch.");
+
+static const u8 gItemDescription_GanlonBerry[] = _(
+ "A hold item that\n"
+ "raises DEFENSE in\n"
+ "a pinch.");
+
+static const u8 gItemDescription_SalacBerry[] = _(
+ "A hold item that\n"
+ "raises SPEED in\n"
+ "a pinch.");
+
+static const u8 gItemDescription_PetayaBerry[] = _(
+ "A hold item that\n"
+ "raises SP. ATK in\n"
+ "a pinch.");
+
+static const u8 gItemDescription_ApicotBerry[] = _(
+ "A hold item that\n"
+ "raises SP. DEF in\n"
+ "a pinch.");
+
+static const u8 gItemDescription_LansatBerry[] = _(
+ "A hold item that\n"
+ "ups the critical-\n"
+ "hit rate in a pinch.");
+
+static const u8 gItemDescription_StarfBerry[] = _(
+ "A hold item that\n"
+ "sharply boosts a\n"
+ "stat in a pinch.");
+
+static const u8 gItemDescription_EnigmaBerry[] = _(
+ "{POKEBLOCK} ingredient.\n"
+ "Plant in loamy soil\n"
+ "to grow a mystery.");
+
+static const u8 gItemDescription_BrightPowder[] = _(
+ "A hold item that\n"
+ "casts a glare to\n"
+ "reduce accuracy.");
+
+static const u8 gItemDescription_WhiteHerb[] = _(
+ "A hold item that\n"
+ "restores any\n"
+ "lowered stat.");
+
+static const u8 gItemDescription_MachoBrace[] = _(
+ "A hold item that\n"
+ "promotes growth,\n"
+ "but reduces SPEED.");
+
+static const u8 gItemDescription_ExpShare[] = _(
+ "A hold item that\n"
+ "gets EXP. points\n"
+ "from battles.");
+
+static const u8 gItemDescription_QuickClaw[] = _(
+ "A hold item that\n"
+ "occasionally allows\n"
+ "the first strike.");
+
+static const u8 gItemDescription_SootheBell[] = _(
+ "A hold item that\n"
+ "calms spirits and\n"
+ "fosters friendship.");
+
+static const u8 gItemDescription_MentalHerb[] = _(
+ "A hold item that\n"
+ "snaps POKéMON out\n"
+ "of infatuation.");
+
+static const u8 gItemDescription_ChoiceBand[] = _(
+ "Raises a move’s\n"
+ "power, but permits\n"
+ "only that move.");
+
+static const u8 gItemDescription_KingsRock[] = _(
+ "A hold item that\n"
+ "may cause flinching\n"
+ "when the foe is hit.");
+
+static const u8 gItemDescription_SilverPowder[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "BUG-type moves.");
+
+static const u8 gItemDescription_AmuletCoin[] = _(
+ "Doubles money in\n"
+ "battle if the holder\n"
+ "takes part.");
+
+static const u8 gItemDescription_CleanseTag[] = _(
+ "A hold item that\n"
+ "helps repel wild\n"
+ "POKéMON.");
+
+static const u8 gItemDescription_SoulDew[] = _(
+ "Hold item: Raises\n"
+ "SP. ATK & SP. DEF\n"
+ "of LATIOS & LATIAS.");
+
+static const u8 gItemDescription_DeepSeaTooth[] = _(
+ "A hold item that\n"
+ "raises the SP. ATK\n"
+ "of CLAMPERL.");
+
+static const u8 gItemDescription_DeepSeaScale[] = _(
+ "A hold item that\n"
+ "raises the SP. DEF\n"
+ "of CLAMPERL.");
+
+static const u8 gItemDescription_SmokeBall[] = _(
+ "A hold item that\n"
+ "can be used to flee\n"
+ "from a wild POKéMON.");
+
+static const u8 gItemDescription_Everstone[] = _(
+ "A wondrous stone\n"
+ "& a hold item that\n"
+ "prevents evolution.");
+
+static const u8 gItemDescription_FocusBand[] = _(
+ "A hold item that\n"
+ "occasionally\n"
+ "prevents fainting.");
+
+static const u8 gItemDescription_LuckyEgg[] = _(
+ "A hold item that\n"
+ "boosts EXP. points\n"
+ "earned in battle.");
+
+static const u8 gItemDescription_ScopeLens[] = _(
+ "A hold item that\n"
+ "raises the critical-\n"
+ "hit rate.");
+
+static const u8 gItemDescription_MetalCoat[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "STEEL-type moves.");
+
+static const u8 gItemDescription_Leftovers[] = _(
+ "A hold item that\n"
+ "gradually restores\n"
+ "HP in battle.");
+
+static const u8 gItemDescription_DragonScale[] = _(
+ "A strange scale\n"
+ "held by DRAGON-\n"
+ "type POKéMON.");
+
+static const u8 gItemDescription_LightBall[] = _(
+ "A hold item that\n"
+ "raises the SP. ATK\n"
+ "of PIKACHU.");
+
+static const u8 gItemDescription_SoftSand[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "GROUND-type moves.");
+
+static const u8 gItemDescription_HardStone[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "ROCK-type moves.");
+
+static const u8 gItemDescription_MiracleSeed[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "GRASS-type moves.");
+
+static const u8 gItemDescription_BlackGlasses[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "DARK-type moves.");
+
+static const u8 gItemDescription_BlackBelt[] = _(
+ "A hold item that\n"
+ "boosts FIGHTING-\n"
+ "type moves.");
+
+static const u8 gItemDescription_Magnet[] = _(
+ "A hold item that\n"
+ "boosts ELECTRIC-\n"
+ "type moves.");
+
+static const u8 gItemDescription_MysticWater[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "WATER-type moves.");
+
+static const u8 gItemDescription_SharpBeak[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "FLYING-type moves.");
+
+static const u8 gItemDescription_PoisonBarb[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "POISON-type moves.");
+
+static const u8 gItemDescription_NeverMeltIce[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "ICE-type moves.");
+
+static const u8 gItemDescription_SpellTag[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "GHOST-type moves.");
+
+static const u8 gItemDescription_TwistedSpoon[] = _(
+ "A hold item that\n"
+ "boosts PSYCHIC-\n"
+ "type moves.");
+
+static const u8 gItemDescription_Charcoal[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "FIRE-type moves.");
+
+static const u8 gItemDescription_DragonFang[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "DRAGON-type moves.");
+
+static const u8 gItemDescription_SilkScarf[] = _(
+ "A hold item that\n"
+ "raises the power of\n"
+ "NORMAL-type moves.");
+
+static const u8 gItemDescription_UpGrade[] = _(
+ "A peculiar box made\n"
+ "by SILPH CO.");
+
+static const u8 gItemDescription_ShellBell[] = _(
+ "A hold item that\n"
+ "restores HP upon\n"
+ "striking the foe.");
+
+static const u8 gItemDescription_SeaIncense[] = _(
+ "A hold item that\n"
+ "slightly boosts\n"
+ "WATER-type moves.");
+
+static const u8 gItemDescription_LaxIncense[] = _(
+ "A hold item that\n"
+ "slightly lowers the\n"
+ "foe’s accuracy.");
+
+static const u8 gItemDescription_LuckyPunch[] = _(
+ "A hold item that\n"
+ "raises CHANSEY’s\n"
+ "critical-hit rate.");
+
+static const u8 gItemDescription_MetalPowder[] = _(
+ "A hold item that\n"
+ "raises DEFENSE.");
+
+static const u8 gItemDescription_ThickClub[] = _(
+ "A bone of some\n"
+ "sort. It can be sold\n"
+ "cheaply.");
+
+static const u8 gItemDescription_Stick[] = _(
+ "A stick of leek.\n"
+ "It can be sold\n"
+ "cheaply.");
+
+static const u8 gItemDescription_RedScarf[] = _(
+ "A hold item that\n"
+ "raises COOL in\n"
+ "CONTESTS.");
+
+static const u8 gItemDescription_BlueScarf[] = _(
+ "A hold item that\n"
+ "raises BEAUTY in\n"
+ "CONTESTS.");
+
+static const u8 gItemDescription_PinkScarf[] = _(
+ "A hold item that\n"
+ "raises CUTE in\n"
+ "CONTESTS.");
+
+static const u8 gItemDescription_GreenScarf[] = _(
+ "A hold item that\n"
+ "raises SMART in\n"
+ "CONTESTS.");
+
+static const u8 gItemDescription_YellowScarf[] = _(
+ "A hold item that\n"
+ "raises TOUGH in\n"
+ "CONTESTS.");
+
+static const u8 gItemDescription_MachBike[] = _(
+ "A folding bicycle\n"
+ "that more than\n"
+ "doubles foot speed.");
+
+static const u8 gItemDescription_CoinCase[] = _(
+ "A case that holds\n"
+ "up to 9,999 COINS.");
+
+static const u8 gItemDescription_Itemfinder[] = _(
+ "A device that\n"
+ "signals an invisible\n"
+ "item by sound.");
+
+static const u8 gItemDescription_OldRod[] = _(
+ "Use by any body of\n"
+ "water to fish for\n"
+ "wild POKéMON.");
+
+static const u8 gItemDescription_GoodRod[] = _(
+ "A decent fishing\n"
+ "rod for catching\n"
+ "wild POKéMON.");
+
+static const u8 gItemDescription_SuperRod[] = _(
+ "The best fishing\n"
+ "rod for catching\n"
+ "wild POKéMON.");
+
+static const u8 gItemDescription_SSTicket[] = _(
+ "The ticket required\n"
+ "for sailing on a\n"
+ "ferry.");
+
+static const u8 gItemDescription_ContestPass[] = _(
+ "The pass required\n"
+ "for entering\n"
+ "POKéMON CONTESTS.");
+
+static const u8 gItemDescription_WailmerPail[] = _(
+ "A tool used for\n"
+ "watering BERRIES\n"
+ "and plants.");
+
+static const u8 gItemDescription_DevonGoods[] = _(
+ "A package that\n"
+ "contains DEVON’s\n"
+ "machine parts.");
+
+static const u8 gItemDescription_SootSack[] = _(
+ "A sack used to\n"
+ "gather and hold\n"
+ "volcanic ash.");
+
+static const u8 gItemDescription_BasementKey[] = _(
+ "The key for NEW\n"
+ "MAUVILLE beneath\n"
+ "MAUVILLE CITY.");
+
+static const u8 gItemDescription_AcroBike[] = _(
+ "A folding bicycle\n"
+ "capable of jumps\n"
+ "and wheelies.");
+
+static const u8 gItemDescription_PokeblockCase[] = _(
+ "A case for holding\n"
+ "{POKEBLOCK}S made with\n"
+ "a BERRY BLENDER.");
+
+static const u8 gItemDescription_Letter[] = _(
+ "A letter to STEVEN\n"
+ "from the PRESIDENT\n"
+ "of the DEVON CORP.");
+
+static const u8 gItemDescription_EonTicket[] = _(
+ "The ticket for a\n"
+ "ferry to a distant\n"
+ "southern island.");
+
+static const u8 gItemDescription_RedOrb[] = _(
+ "A red, glowing orb\n"
+ "said to contain an\n"
+ "ancient power.");
+
+static const u8 gItemDescription_BlueOrb[] = _(
+ "A blue, glowing orb\n"
+ "said to contain an\n"
+ "ancient power.");
+
+static const u8 gItemDescription_Scanner[] = _(
+ "A device found\n"
+ "inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 gItemDescription_GoGoggles[] = _(
+ "Nifty goggles that\n"
+ "protect eyes from\n"
+ "desert sandstorms.");
+
+static const u8 gItemDescription_Meteorite[] = _(
+ "A meteorite found\n"
+ "at METEOR FALLS.");
+
+static const u8 gItemDescription_Room1Key[] = _(
+ "A key that opens a\n"
+ "door inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 gItemDescription_Room2Key[] = _(
+ "A key that opens a\n"
+ "door inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 gItemDescription_Room4Key[] = _(
+ "A key that opens a\n"
+ "door inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 gItemDescription_Room6Key[] = _(
+ "A key that opens a\n"
+ "door inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 gItemDescription_StorageKey[] = _(
+ "The key to the\n"
+ "storage inside the\n"
+ "ABANDONED SHIP.");
+
+static const u8 gItemDescription_RootFossil[] = _(
+ "A fossil of an\n"
+ "ancient, seafloor-\n"
+ "dwelling POKéMON.");
+
+static const u8 gItemDescription_ClawFossil[] = _(
+ "A fossil of an\n"
+ "ancient, seafloor-\n"
+ "dwelling POKéMON.");
+
+static const u8 gItemDescription_DevonScope[] = _(
+ "A device by DEVON\n"
+ "that signals any\n"
+ "unseeable POKéMON.");
+
+static const u8 gItemDescription_TM01[] = _(
+ "Powerful, but makes\n"
+ "the user flinch if\n"
+ "hit by the foe.");
+
+static const u8 gItemDescription_TM02[] = _(
+ "Hooks and slashes\n"
+ "the foe with long,\n"
+ "sharp claws.");
+
+static const u8 gItemDescription_TM03[] = _(
+ "Generates an\n"
+ "ultrasonic wave\n"
+ "that may confuse.");
+
+static const u8 gItemDescription_TM04[] = _(
+ "Raises SP. ATK and\n"
+ "SP. DEF by focusing\n"
+ "the mind.");
+
+static const u8 gItemDescription_TM05[] = _(
+ "A savage roar that\n"
+ "makes the foe flee \n"
+ "to end the battle.");
+
+static const u8 gItemDescription_TM06[] = _(
+ "Poisons the foe\n"
+ "with a toxin that\n"
+ "gradually worsens.");
+
+static const u8 gItemDescription_TM07[] = _(
+ "Summons a hailstorm\n"
+ "that hurts all\n"
+ "types except ICE.");
+
+static const u8 gItemDescription_TM08[] = _(
+ "Bulks up the body\n"
+ "to boost both\n"
+ "ATTACK & DEFENSE.");
+
+static const u8 gItemDescription_TM09[] = _(
+ "Shoots 2 to 5 seeds\n"
+ "in a row to strike\n"
+ "the foe.");
+
+static const u8 gItemDescription_TM10[] = _(
+ "The attack power\n"
+ "varies among\n"
+ "different POKéMON.");
+
+static const u8 gItemDescription_TM11[] = _(
+ "Raises the power of\n"
+ "FIRE-type moves\n"
+ "for 5 turns.");
+
+static const u8 gItemDescription_TM12[] = _(
+ "Enrages the foe so\n"
+ "it can only use\n"
+ "attack moves.");
+
+static const u8 gItemDescription_TM13[] = _(
+ "Fires an icy cold\n"
+ "beam that may\n"
+ "freeze the foe.");
+
+static const u8 gItemDescription_TM14[] = _(
+ "A vicious snow-and-\n"
+ "wind attack that\n"
+ "may freeze the foe.");
+
+static const u8 gItemDescription_TM15[] = _(
+ "Powerful, but needs\n"
+ "recharging the\n"
+ "next turn.");
+
+static const u8 gItemDescription_TM16[] = _(
+ "Creates a wall of\n"
+ "light that lowers\n"
+ "SP. ATK damage.");
+
+static const u8 gItemDescription_TM17[] = _(
+ "Negates all damage,\n"
+ "but may fail if used\n"
+ "in succession.");
+
+static const u8 gItemDescription_TM18[] = _(
+ "Raises the power of\n"
+ "WATER-type moves\n"
+ "for 5 turns.");
+
+static const u8 gItemDescription_TM19[] = _(
+ "Recovers half the\n"
+ "HP of the damage \n"
+ "this move inflicts.");
+
+static const u8 gItemDescription_TM20[] = _(
+ "Prevents status\n"
+ "abnormality with a\n"
+ "mystical power.");
+
+static const u8 gItemDescription_TM21[] = _(
+ "The less the user\n"
+ "likes you, the more\n"
+ "powerful this move.");
+
+static const u8 gItemDescription_TM22[] = _(
+ "Absorbs sunlight in\n"
+ "the 1st turn, then\n"
+ "attacks next turn.");
+
+static const u8 gItemDescription_TM23[] = _(
+ "Slams the foe with\n"
+ "a hard tail. It may\n"
+ "lower DEFENSE.");
+
+static const u8 gItemDescription_TM24[] = _(
+ "A powerful electric\n"
+ "attack that may\n"
+ "cause paralysis.");
+
+static const u8 gItemDescription_TM25[] = _(
+ "Strikes the foe\n"
+ "with a thunderbolt.\n"
+ "It may paralyze.");
+
+static const u8 gItemDescription_TM26[] = _(
+ "Causes a quake\n"
+ "that has no effect\n"
+ "on flying foes.");
+
+static const u8 gItemDescription_TM27[] = _(
+ "The more the user\n"
+ "likes you, the more\n"
+ "powerful this move.");
+
+static const u8 gItemDescription_TM28[] = _(
+ "Digs underground\n"
+ "the 1st turn, then\n"
+ "strikes next turn.");
+
+static const u8 gItemDescription_TM29[] = _(
+ "A powerful psychic\n"
+ "attack that may\n"
+ "lower SP. DEF.");
+
+static const u8 gItemDescription_TM30[] = _(
+ "Hurls a dark lump\n"
+ "at the foe. It may\n"
+ "lower SP. DEF.");
+
+static const u8 gItemDescription_TM31[] = _(
+ "Destroys barriers\n"
+ "like LIGHT SCREEN\n"
+ "and causes damage.");
+
+static const u8 gItemDescription_TM32[] = _(
+ "Creates illusory\n"
+ "copies to enhance\n"
+ "elusiveness.");
+
+static const u8 gItemDescription_TM33[] = _(
+ "Creates a wall of\n"
+ "light that weakens\n"
+ "physical attacks.");
+
+static const u8 gItemDescription_TM34[] = _(
+ "Zaps the foe with a\n"
+ "jolt of electricity\n"
+ "that never misses.");
+
+static const u8 gItemDescription_TM35[] = _(
+ "Looses a stream of\n"
+ "fire that may burn\n"
+ "the foe.");
+
+static const u8 gItemDescription_TM36[] = _(
+ "Hurls sludge at the\n"
+ "foe. It may poison\n"
+ "the foe.");
+
+static const u8 gItemDescription_TM37[] = _(
+ "Causes a sandstorm\n"
+ "that hits the foe\n"
+ "over several turns.");
+
+static const u8 gItemDescription_TM38[] = _(
+ "A powerful fire\n"
+ "attack that may\n"
+ "burn the foe.");
+
+static const u8 gItemDescription_TM39[] = _(
+ "Stops the foe from\n"
+ "moving with rocks.\n"
+ "May lower SPEED.");
+
+static const u8 gItemDescription_TM40[] = _(
+ "An extremely fast\n"
+ "attack that can’t\n"
+ "be avoided.");
+
+static const u8 gItemDescription_TM41[] = _(
+ "Prevents the foe\n"
+ "from using the same\n"
+ "move in a row.");
+
+static const u8 gItemDescription_TM42[] = _(
+ "Raises ATTACK when\n"
+ "poisoned, burned,\n"
+ "or paralyzed.");
+
+static const u8 gItemDescription_TM43[] = _(
+ "Adds an effect to\n"
+ "attack depending\n"
+ "on the location.");
+
+static const u8 gItemDescription_TM44[] = _(
+ "The user sleeps for\n"
+ "2 turns to restore\n"
+ "health and status.");
+
+static const u8 gItemDescription_TM45[] = _(
+ "Makes it tough to\n"
+ "attack a foe of the\n"
+ "opposite gender.");
+
+static const u8 gItemDescription_TM46[] = _(
+ "While attacking,\n"
+ "it may steal the\n"
+ "foe’s held item.");
+
+static const u8 gItemDescription_TM47[] = _(
+ "Spreads hard-edged\n"
+ "wings and slams\n"
+ "into the foe.");
+
+static const u8 gItemDescription_TM48[] = _(
+ "Switches abilities\n"
+ "with the foe on the\n"
+ "turn this is used.");
+
+static const u8 gItemDescription_TM49[] = _(
+ "Steals the effects\n"
+ "of the move the foe\n"
+ "is trying to use.");
+
+static const u8 gItemDescription_TM50[] = _(
+ "Enables full-power\n"
+ "attack, but sharply\n"
+ "lowers SP. ATK.");
+
+static const u8 gItemDescription_HM01[] = _(
+ "Attacks the foe\n"
+ "with sharp blades\n"
+ "or claws.");
+
+static const u8 gItemDescription_HM02[] = _(
+ "Flies up on the\n"
+ "first turn, then\n"
+ "attacks next turn.");
+
+static const u8 gItemDescription_HM03[] = _(
+ "Creates a huge\n"
+ "wave, then crashes\n"
+ "it down on the foe.");
+
+static const u8 gItemDescription_HM04[] = _(
+ "Builds enormous\n"
+ "power, then slams\n"
+ "the foe.");
+
+static const u8 gItemDescription_HM05[] = _(
+ "Looses a powerful\n"
+ "blast of light that\n"
+ "reduces accuracy.");
+
+static const u8 gItemDescription_HM06[] = _(
+ "A rock-crushingly\n"
+ "tough attack that\n"
+ "may lower DEFENSE.");
+
+static const u8 gItemDescription_HM07[] = _(
+ "Attacks the foe\n"
+ "with enough power\n"
+ "to climb waterfalls.");
+
+static const u8 gItemDescription_HM08[] = _(
+ "Dives underwater\n"
+ "the 1st turn, then\n"
+ "attacks next turn.");
+
+static const u8 gItemDescription_Dummy[] = _("");
diff --git a/src/data/items_de.h b/src/data/items_de.h
new file mode 100644
index 000000000..0453a95d0
--- /dev/null
+++ b/src/data/items_de.h
@@ -0,0 +1,5587 @@
+const struct Item gItems[] =
+{
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MEISTERBALL"),
+ .itemId = ITEM_MASTER_BALL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MasterBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 0,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HYPERBALL"),
+ .itemId = ITEM_ULTRA_BALL,
+ .price = 1200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_UltraBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 1,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("SUPERBALL"),
+ .itemId = ITEM_GREAT_BALL,
+ .price = 600,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GreatBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 2,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 2,
+ },
+ {
+ .name = _("POKéBALL"),
+ .itemId = ITEM_POKE_BALL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PokeBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 3,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 3,
+ },
+ {
+ .name = _("SAFARIBALL"),
+ .itemId = ITEM_SAFARI_BALL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SafariBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 4,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 4,
+ },
+ {
+ .name = _("NETZBALL"),
+ .itemId = ITEM_NET_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_NetBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 5,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 5,
+ },
+ {
+ .name = _("TAUCHBALL"),
+ .itemId = ITEM_DIVE_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DiveBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 6,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 6,
+ },
+ {
+ .name = _("NESTBALL"),
+ .itemId = ITEM_NEST_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_NestBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 7,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 7,
+ },
+ {
+ .name = _("WIEDERBALL"),
+ .itemId = ITEM_REPEAT_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RepeatBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 8,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 8,
+ },
+ {
+ .name = _("TIMERBALL"),
+ .itemId = ITEM_TIMER_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TimerBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 9,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 9,
+ },
+ {
+ .name = _("LUXUSBALL"),
+ .itemId = ITEM_LUXURY_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LuxuryBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 10,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 10,
+ },
+ {
+ .name = _("PREMIERBALL"),
+ .itemId = ITEM_PREMIER_BALL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PremierBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 11,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 11,
+ },
+ {
+ .name = _("TRANK"),
+ .itemId = ITEM_POTION,
+ .price = 300,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 20,
+ .description = gItemDescription_Potion,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GEGENGIFT"),
+ .itemId = ITEM_ANTIDOTE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Antidote,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FEUERHEILER"),
+ .itemId = ITEM_BURN_HEAL,
+ .price = 250,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BurnHeal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("EISHEILER"),
+ .itemId = ITEM_ICE_HEAL,
+ .price = 250,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_IceHeal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("AUFWECKER"),
+ .itemId = ITEM_AWAKENING,
+ .price = 250,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Awakening,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PARA-HEILER"),
+ .itemId = ITEM_PARALYZE_HEAL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ParalyzeHeal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TOP-GENESUNG"),
+ .itemId = ITEM_FULL_RESTORE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 255,
+ .description = gItemDescription_FullRestore,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TOP-TRANK"),
+ .itemId = ITEM_MAX_POTION,
+ .price = 2500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 255,
+ .description = gItemDescription_MaxPotion,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HYPERTRANK"),
+ .itemId = ITEM_HYPER_POTION,
+ .price = 1200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 200,
+ .description = gItemDescription_HyperPotion,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SUPERTRANK"),
+ .itemId = ITEM_SUPER_POTION,
+ .price = 700,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 50,
+ .description = gItemDescription_SuperPotion,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HYPERHEILER"),
+ .itemId = ITEM_FULL_HEAL,
+ .price = 600,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_FullHeal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BELEBER"),
+ .itemId = ITEM_REVIVE,
+ .price = 1500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Revive,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TOP-BELEBER"),
+ .itemId = ITEM_MAX_REVIVE,
+ .price = 4000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MaxRevive,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TAFELWASSER"),
+ .itemId = ITEM_FRESH_WATER,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 50,
+ .description = gItemDescription_FreshWater,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SPRUDEL"),
+ .itemId = ITEM_SODA_POP,
+ .price = 300,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 60,
+ .description = gItemDescription_SodaPop,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LIMONADE"),
+ .itemId = ITEM_LEMONADE,
+ .price = 350,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 80,
+ .description = gItemDescription_Lemonade,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KUHMUH-MILCH"),
+ .itemId = ITEM_MOOMOO_MILK,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 100,
+ .description = gItemDescription_MoomooMilk,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ENERGIESTAUB"),
+ .itemId = ITEM_ENERGY_POWDER,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EnergyPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KRAFTWURZEL"),
+ .itemId = ITEM_ENERGY_ROOT,
+ .price = 800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EnergyRoot,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HEILPUDER"),
+ .itemId = ITEM_HEAL_POWDER,
+ .price = 450,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HealPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VITALKRAUT"),
+ .itemId = ITEM_REVIVAL_HERB,
+ .price = 2800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RevivalHerb,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ÄTHER"),
+ .itemId = ITEM_ETHER,
+ .price = 1200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Ether,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TOP-ÄTHER"),
+ .itemId = ITEM_MAX_ETHER,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 255,
+ .description = gItemDescription_MaxEther,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ELIXIER"),
+ .itemId = ITEM_ELIXIR,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Elixir,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TOP-ELIXIER"),
+ .itemId = ITEM_MAX_ELIXIR,
+ .price = 4500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 255,
+ .description = gItemDescription_MaxElixir,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LAVAKEKS"),
+ .itemId = ITEM_LAVA_COOKIE,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LavaCookie,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLAUE FLÖTE"),
+ .itemId = ITEM_BLUE_FLUTE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlueFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GELBE FLÖTE"),
+ .itemId = ITEM_YELLOW_FLUTE,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_YellowFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ROTE FLÖTE"),
+ .itemId = ITEM_RED_FLUTE,
+ .price = 300,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RedFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCHW. FLÖTE"),
+ .itemId = ITEM_BLACK_FLUTE,
+ .price = 400,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 50,
+ .description = gItemDescription_BlackFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WEISSE FLÖTE"),
+ .itemId = ITEM_WHITE_FLUTE,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 150,
+ .description = gItemDescription_WhiteFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BEERENSAFT"),
+ .itemId = ITEM_BERRY_JUICE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_RESTORE_HP,
+ .holdEffectParam = 20,
+ .description = gItemDescription_BerryJuice,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ZAUBERASCHE"),
+ .itemId = ITEM_SACRED_ASH,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SacredAsh,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_SacredAsh,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KÜSTENSALZ"),
+ .itemId = ITEM_SHOAL_SALT,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ShoalSalt,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KÜSTENSCHALE"),
+ .itemId = ITEM_SHOAL_SHELL,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ShoalShell,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PURPURSTÜCK"),
+ .itemId = ITEM_RED_SHARD,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RedShard,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("INDIGOSTÜCK"),
+ .itemId = ITEM_BLUE_SHARD,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlueShard,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GELBSTÜCK"),
+ .itemId = ITEM_YELLOW_SHARD,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_YellowShard,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GRÜNSTÜCK"),
+ .itemId = ITEM_GREEN_SHARD,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GreenShard,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KP-PLUS"),
+ .itemId = ITEM_HP_UP,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HPUp,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PROTEIN"),
+ .itemId = ITEM_PROTEIN,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Protein,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("EISEN"),
+ .itemId = ITEM_IRON,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Iron,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CARBON"),
+ .itemId = ITEM_CARBOS,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Carbos,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KALZIUM"),
+ .itemId = ITEM_CALCIUM,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Calcium,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SONDERBONBON"),
+ .itemId = ITEM_RARE_CANDY,
+ .price = 4800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RareCandy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_RareCandy,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("AP-PLUS"),
+ .itemId = ITEM_PP_UP,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PPUp,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPUp,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ZINK"),
+ .itemId = ITEM_ZINC,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Zinc,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("AP-TOP"),
+ .itemId = ITEM_PP_MAX,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PPMax,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPUp,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MEGABLOCK"),
+ .itemId = ITEM_GUARD_SPEC,
+ .price = 700,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GuardSpec,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ANGRIFFPLUS"),
+ .itemId = ITEM_DIRE_HIT,
+ .price = 650,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DireHit,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X-ANGRIFF"),
+ .itemId = ITEM_X_ATTACK,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XAttack,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X-ABWEHR"),
+ .itemId = ITEM_X_DEFEND,
+ .price = 550,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XDefend,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X-TEMPO"),
+ .itemId = ITEM_X_SPEED,
+ .price = 350,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XSpeed,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X-TREFFER"),
+ .itemId = ITEM_X_ACCURACY,
+ .price = 950,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XAccuracy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X-SPEZIAL"),
+ .itemId = ITEM_X_SPECIAL,
+ .price = 350,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XSpecial,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("POKéPUPPE"),
+ .itemId = ITEM_POKE_DOLL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PokeDoll,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_Escape,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ENECO-RUTE"),
+ .itemId = ITEM_FLUFFY_TAIL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_FluffyTail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_Escape,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SUPERSCHUTZ"),
+ .itemId = ITEM_SUPER_REPEL,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 200,
+ .description = gItemDescription_SuperRepel,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_Repel,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TOP-SCHUTZ"),
+ .itemId = ITEM_MAX_REPEL,
+ .price = 700,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 250,
+ .description = gItemDescription_MaxRepel,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_Repel,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FLUCHTSEIL"),
+ .itemId = ITEM_ESCAPE_ROPE,
+ .price = 550,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EscapeRope,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_EscapeRope,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCHUTZ"),
+ .itemId = ITEM_REPEL,
+ .price = 350,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 100,
+ .description = gItemDescription_Repel,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_Repel,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SONNENSTEIN"),
+ .itemId = ITEM_SUN_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SunStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MONDSTEIN"),
+ .itemId = ITEM_MOON_STONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MoonStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FEUERSTEIN"),
+ .itemId = ITEM_FIRE_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_FireStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DONNERSTEIN"),
+ .itemId = ITEM_THUNDER_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ThunderStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WASSERSTEIN"),
+ .itemId = ITEM_WATER_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WaterStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLATTSTEIN"),
+ .itemId = ITEM_LEAF_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LeafStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MINIPILZ"),
+ .itemId = ITEM_TINY_MUSHROOM,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TinyMushroom,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RIESENPILZ"),
+ .itemId = ITEM_BIG_MUSHROOM,
+ .price = 5000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BigMushroom,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PERLE"),
+ .itemId = ITEM_PEARL,
+ .price = 1400,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Pearl,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RIESENPERLE"),
+ .itemId = ITEM_BIG_PEARL,
+ .price = 7500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BigPearl,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("STERNENSTAUB"),
+ .itemId = ITEM_STARDUST,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Stardust,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("STERNENSTÜCK"),
+ .itemId = ITEM_STAR_PIECE,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_StarPiece,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("NUGGET"),
+ .itemId = ITEM_NUGGET,
+ .price = 10000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Nugget,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HERZSCHUPPE"),
+ .itemId = ITEM_HEART_SCALE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HeartScale,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ZIGZAGBRIEF"),
+ .itemId = ITEM_ORANGE_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_OrangeMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HAFENBRIEF"),
+ .itemId = ITEM_HARBOR_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HarborMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("GLITZERBRIEF"),
+ .itemId = ITEM_GLITTER_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GlitterMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 2,
+ },
+ {
+ .name = _("EILBRIEF"),
+ .itemId = ITEM_MECH_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MechMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 3,
+ },
+ {
+ .name = _("WALDBRIEF"),
+ .itemId = ITEM_WOOD_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WoodMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 4,
+ },
+ {
+ .name = _("WELLENBRIEF"),
+ .itemId = ITEM_WAVE_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WaveMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 5,
+ },
+ {
+ .name = _("PERLENBRIEF"),
+ .itemId = ITEM_BEAD_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BeadMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 6,
+ },
+ {
+ .name = _("DUNKELBRIEF"),
+ .itemId = ITEM_SHADOW_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ShadowMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 7,
+ },
+ {
+ .name = _("TROPENBRIEF"),
+ .itemId = ITEM_TROPIC_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TropicMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 8,
+ },
+ {
+ .name = _("TRAUMBRIEF"),
+ .itemId = ITEM_DREAM_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DreamMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 9,
+ },
+ {
+ .name = _("EDELBRIEF"),
+ .itemId = ITEM_FAB_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_FabMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 10,
+ },
+ {
+ .name = _("RETROBRIEF"),
+ .itemId = ITEM_RETRO_MAIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RetroMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 11,
+ },
+ {
+ .name = _("AMRENABEERE"),
+ .itemId = ITEM_CHERI_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_PAR,
+ .holdEffectParam = 0,
+ .description = gItemDescription_CheriBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MARONBEERE"),
+ .itemId = ITEM_CHESTO_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_SLP,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ChestoBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PIRSIFBEERE"),
+ .itemId = ITEM_PECHA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_PSN,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PechaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FRAGIABEERE"),
+ .itemId = ITEM_RAWST_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_BRN,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RawstBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WILBIRBEERE"),
+ .itemId = ITEM_ASPEAR_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_FRZ,
+ .holdEffectParam = 0,
+ .description = gItemDescription_AspearBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("JONAGOBEERE"),
+ .itemId = ITEM_LEPPA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_RESTORE_PP,
+ .holdEffectParam = 10,
+ .description = gItemDescription_LeppaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SINELBEERE"),
+ .itemId = ITEM_ORAN_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_RESTORE_HP,
+ .holdEffectParam = 10,
+ .description = gItemDescription_OranBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PERSIMBEERE"),
+ .itemId = ITEM_PERSIM_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_CONFUSION,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PersimBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PRUNUSBEERE"),
+ .itemId = ITEM_LUM_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_STATUS,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LumBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TSITRUBEERE"),
+ .itemId = ITEM_SITRUS_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_RESTORE_HP,
+ .holdEffectParam = 30,
+ .description = gItemDescription_SitrusBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GIEFEBEERE"),
+ .itemId = ITEM_FIGY_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_SPICY,
+ .holdEffectParam = 8,
+ .description = gItemDescription_FigyBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WIKIBEERE"),
+ .itemId = ITEM_WIKI_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_DRY,
+ .holdEffectParam = 8,
+ .description = gItemDescription_WikiBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAGOBEERE"),
+ .itemId = ITEM_MAGO_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_SWEET,
+ .holdEffectParam = 8,
+ .description = gItemDescription_MagoBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GAUVEBEERE"),
+ .itemId = ITEM_AGUAV_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_BITTER,
+ .holdEffectParam = 8,
+ .description = gItemDescription_AguavBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("YAPABEERE"),
+ .itemId = ITEM_IAPAPA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_SOUR,
+ .holdEffectParam = 8,
+ .description = gItemDescription_IapapaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HIMMIHBEERE"),
+ .itemId = ITEM_RAZZ_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RazzBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MORBBEERE"),
+ .itemId = ITEM_BLUK_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlukBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("NANABBEERE"),
+ .itemId = ITEM_NANAB_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_NanabBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("NIRBEBEERE"),
+ .itemId = ITEM_WEPEAR_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WepearBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SANANABEERE"),
+ .itemId = ITEM_PINAP_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PinapBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GRANABEERE"),
+ .itemId = ITEM_POMEG_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PomegBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SETANGBEERE"),
+ .itemId = ITEM_KELPSY_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_KelpsyBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("QUALOTBEERE"),
+ .itemId = ITEM_QUALOT_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_QualotBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HONMELBEERE"),
+ .itemId = ITEM_HONDEW_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HondewBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LABRUSBEERE"),
+ .itemId = ITEM_GREPA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GrepaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TAMOTBEERE"),
+ .itemId = ITEM_TAMATO_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TamatoBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SAIMBEERE"),
+ .itemId = ITEM_CORNN_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_CornnBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAGOSTBEERE"),
+ .itemId = ITEM_MAGOST_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MagostBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RABUTABEERE"),
+ .itemId = ITEM_RABUTA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RabutaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TRONZIBEERE"),
+ .itemId = ITEM_NOMEL_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_NomelBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KIWANBEERE"),
+ .itemId = ITEM_SPELON_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SpelonBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PALLMBEERE"),
+ .itemId = ITEM_PAMTRE_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PamtreBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WASMELBEERE"),
+ .itemId = ITEM_WATMEL_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WatmelBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DURINBEERE"),
+ .itemId = ITEM_DURIN_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DurinBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MYRTILBEERE"),
+ .itemId = ITEM_BELUE_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BelueBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LYDZIBEERE"),
+ .itemId = ITEM_LIECHI_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_ATTACK_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_LiechiBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LINGANBEERE"),
+ .itemId = ITEM_GANLON_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_DEFENSE_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_GanlonBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SALKABEERE"),
+ .itemId = ITEM_SALAC_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_SPEED_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_SalacBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TAHAYBEERE"),
+ .itemId = ITEM_PETAYA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_SP_ATTACK_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_PetayaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("APIKOBEERE"),
+ .itemId = ITEM_APICOT_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_ApicotBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LANSATBEERE"),
+ .itemId = ITEM_LANSAT_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CRITICAL_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_LansatBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KRAMBOBEERE"),
+ .itemId = ITEM_STARF_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_StarfBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ENIGMABEERE"),
+ .itemId = ITEM_ENIGMA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EnigmaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_EnigmaBerry,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLENDPUDER"),
+ .itemId = ITEM_BRIGHT_POWDER,
+ .price = 10,
+ .holdEffect = HOLD_EFFECT_EVASION_UP,
+ .holdEffectParam = 10,
+ .description = gItemDescription_BrightPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCHLOHKRAUT"),
+ .itemId = ITEM_WHITE_HERB,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_RESTORE_STATS,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WhiteHerb,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MACHOBAND"),
+ .itemId = ITEM_MACHO_BRACE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_MACHO_BRACE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MachoBrace,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("EP-TEILER"),
+ .itemId = ITEM_EXP_SHARE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_EXP_SHARE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ExpShare,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FLINKKLAUE"),
+ .itemId = ITEM_QUICK_CLAW,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_QUICK_CLAW,
+ .holdEffectParam = 20,
+ .description = gItemDescription_QuickClaw,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SANFTGLOCKE"),
+ .itemId = ITEM_SOOTHE_BELL,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_HAPPINESS_UP,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SootheBell,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MENTALKRAUT"),
+ .itemId = ITEM_MENTAL_HERB,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_CURE_ATTRACT,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MentalHerb,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WAHLBAND"),
+ .itemId = ITEM_CHOICE_BAND,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_CHOICE_BAND,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ChoiceBand,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KING-STEIN"),
+ .itemId = ITEM_KINGS_ROCK,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_FLINCH,
+ .holdEffectParam = 10,
+ .description = gItemDescription_KingsRock,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SILBERSTAUB"),
+ .itemId = ITEM_SILVER_POWDER,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_BUG_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SilverPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MÜNZAMULETT"),
+ .itemId = ITEM_AMULET_COIN,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE,
+ .holdEffectParam = 10,
+ .description = gItemDescription_AmuletCoin,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCHUTZBAND"),
+ .itemId = ITEM_CLEANSE_TAG,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_REPEL,
+ .holdEffectParam = 0,
+ .description = gItemDescription_CleanseTag,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SEELENTAU"),
+ .itemId = ITEM_SOUL_DEW,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_SOUL_DEW,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SoulDew,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ABYSSZAHN"),
+ .itemId = ITEM_DEEP_SEA_TOOTH,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DeepSeaTooth,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ABYSSPLATTE"),
+ .itemId = ITEM_DEEP_SEA_SCALE,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DeepSeaScale,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RAUCHBALL"),
+ .itemId = ITEM_SMOKE_BALL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SmokeBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("EWIGSTEIN"),
+ .itemId = ITEM_EVERSTONE,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_PREVENT_EVOLVE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Everstone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FOKUS-BAND"),
+ .itemId = ITEM_FOCUS_BAND,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_FOCUS_BAND,
+ .holdEffectParam = 10,
+ .description = gItemDescription_FocusBand,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GLÜCKS-EI"),
+ .itemId = ITEM_LUCKY_EGG,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_LUCKY_EGG,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LuckyEgg,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCOPE-LINSE"),
+ .itemId = ITEM_SCOPE_LENS,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_SCOPE_LENS,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ScopeLens,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("METALLMANTEL"),
+ .itemId = ITEM_METAL_COAT,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_STEEL_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_MetalCoat,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ÜBERRESTE"),
+ .itemId = ITEM_LEFTOVERS,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_LEFTOVERS,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Leftovers,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DRACHENHAUT"),
+ .itemId = ITEM_DRAGON_SCALE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_DRAGON_SCALE,
+ .holdEffectParam = 10,
+ .description = gItemDescription_DragonScale,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KUGELBLITZ"),
+ .itemId = ITEM_LIGHT_BALL,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_LIGHT_BALL,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LightBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PUDERSAND"),
+ .itemId = ITEM_SOFT_SAND,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_GROUND_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SoftSand,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GRANITSTEIN"),
+ .itemId = ITEM_HARD_STONE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_ROCK_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_HardStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WUNDERSAAT"),
+ .itemId = ITEM_MIRACLE_SEED,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_GRASS_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_MiracleSeed,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCHATTENGLAS"),
+ .itemId = ITEM_BLACK_GLASSES,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_DARK_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_BlackGlasses,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCHWARZGURT"),
+ .itemId = ITEM_BLACK_BELT,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_FIGHTING_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_BlackBelt,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAGNET"),
+ .itemId = ITEM_MAGNET,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_ELECTRIC_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Magnet,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ZAUBERWASSER"),
+ .itemId = ITEM_MYSTIC_WATER,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_WATER_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_MysticWater,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HACKATTACK"),
+ .itemId = ITEM_SHARP_BEAK,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_FLYING_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SharpBeak,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GIFTSTICH"),
+ .itemId = ITEM_POISON_BARB,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_POISON_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_PoisonBarb,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("EWIGES EIS"),
+ .itemId = ITEM_NEVER_MELT_ICE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_ICE_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_NeverMeltIce,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BANNSTICKER"),
+ .itemId = ITEM_SPELL_TAG,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_GHOST_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SpellTag,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KRÜMMLÖFFEL"),
+ .itemId = ITEM_TWISTED_SPOON,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_PSYCHIC_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_TwistedSpoon,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HOLZKOHLE"),
+ .itemId = ITEM_CHARCOAL,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_FIRE_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Charcoal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DRACHENZAHN"),
+ .itemId = ITEM_DRAGON_FANG,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_DRAGON_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_DragonFang,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SEIDENSCHAL"),
+ .itemId = ITEM_SILK_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NORMAL_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SilkScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("UP-GRADE"),
+ .itemId = ITEM_UP_GRADE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_UP_GRADE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_UpGrade,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SEEGESANG"),
+ .itemId = ITEM_SHELL_BELL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_SHELL_BELL,
+ .holdEffectParam = 8,
+ .description = gItemDescription_ShellBell,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SEERAUCH"),
+ .itemId = ITEM_SEA_INCENSE,
+ .price = 9600,
+ .holdEffect = HOLD_EFFECT_WATER_POWER,
+ .holdEffectParam = 5,
+ .description = gItemDescription_SeaIncense,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LAXRAUCH"),
+ .itemId = ITEM_LAX_INCENSE,
+ .price = 9600,
+ .holdEffect = HOLD_EFFECT_EVASION_UP,
+ .holdEffectParam = 5,
+ .description = gItemDescription_LaxIncense,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LUCKY PUNCH"),
+ .itemId = ITEM_LUCKY_PUNCH,
+ .price = 10,
+ .holdEffect = HOLD_EFFECT_LUCKY_PUNCH,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LuckyPunch,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("METALLSTAUB"),
+ .itemId = ITEM_METAL_POWDER,
+ .price = 10,
+ .holdEffect = HOLD_EFFECT_METAL_POWDER,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MetalPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KAMPFKNOCHEN"),
+ .itemId = ITEM_THICK_CLUB,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_THICK_CLUB,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ThickClub,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LAUCHSTANGE"),
+ .itemId = ITEM_STICK,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_STICK,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Stick,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ROTER SCHAL"),
+ .itemId = ITEM_RED_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RedScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLAUER SCHAL"),
+ .itemId = ITEM_BLUE_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlueScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ROSA SCHAL"),
+ .itemId = ITEM_PINK_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PinkScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GRÜNER SCHAL"),
+ .itemId = ITEM_GREEN_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GreenScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GELBER SCHAL"),
+ .itemId = ITEM_YELLOW_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_YellowScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("EILRAD"),
+ .itemId = ITEM_MACH_BIKE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MachBike,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Bike,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MÜNZKORB"),
+ .itemId = ITEM_COIN_CASE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_CoinCase,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CoinCase,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DETEKTOR"),
+ .itemId = ITEM_ITEMFINDER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Itemfinder,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Itemfinder,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ANGEL"),
+ .itemId = ITEM_OLD_ROD,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_OldRod,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Rod,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PROFIANGEL"),
+ .itemId = ITEM_GOOD_ROD,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GoodRod,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Rod,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("SUPERANGEL"),
+ .itemId = ITEM_SUPER_ROD,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SuperRod,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Rod,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 2,
+ },
+ {
+ .name = _("BOOTSTICKET"),
+ .itemId = ITEM_SS_TICKET,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SSTicket,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WETTB.-KARTE"),
+ .itemId = ITEM_CONTEST_PASS,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ContestPass,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WAILMERKANNE"),
+ .itemId = ITEM_WAILMER_PAIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WailmerPail,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_WailmerPail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DEVON-WAREN"),
+ .itemId = ITEM_DEVON_GOODS,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DevonGoods,
+ .importance = 2,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ASCHETASCHE"),
+ .itemId = ITEM_SOOT_SACK,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SootSack,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KELLERÖFFNER"),
+ .itemId = ITEM_BASEMENT_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BasementKey,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KUNSTRAD"),
+ .itemId = ITEM_ACRO_BIKE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_AcroBike,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Bike,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("{POKEBLOCK}BOX"),
+ .itemId = ITEM_POKEBLOCK_CASE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PokeblockCase,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 3,
+ .fieldUseFunc = ItemUseOutOfBattle_PokeblockCase,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BRIEF"),
+ .itemId = ITEM_LETTER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Letter,
+ .importance = 2,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ÄON-TICKET"),
+ .itemId = ITEM_EON_TICKET,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EonTicket,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("ROTE KUGEL"),
+ .itemId = ITEM_RED_ORB,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RedOrb,
+ .importance = 2,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLAUE KUGEL"),
+ .itemId = ITEM_BLUE_ORB,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlueOrb,
+ .importance = 2,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCANNER"),
+ .itemId = ITEM_SCANNER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Scanner,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WÜSTENGLAS"),
+ .itemId = ITEM_GO_GOGGLES,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GoGoggles,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("METEORIT"),
+ .itemId = ITEM_METEORITE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Meteorite,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("K1-SCHLÜSSEL"),
+ .itemId = ITEM_ROOM_1_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Room1Key,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("K2-SCHLÜSSEL"),
+ .itemId = ITEM_ROOM_2_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Room2Key,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("K4-SCHLÜSSEL"),
+ .itemId = ITEM_ROOM_4_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Room4Key,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("K6-SCHLÜSSEL"),
+ .itemId = ITEM_ROOM_6_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Room6Key,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("L.-SCHLÜSSEL"),
+ .itemId = ITEM_STORAGE_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_StorageKey,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WURZELFOSSIL"),
+ .itemId = ITEM_ROOT_FOSSIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RootFossil,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KLAUENFOSSIL"),
+ .itemId = ITEM_CLAW_FOSSIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ClawFossil,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DEVON-SCOPE"),
+ .itemId = ITEM_DEVON_SCOPE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DevonScope,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM01"),
+ .itemId = ITEM_TM01,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM01,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM02"),
+ .itemId = ITEM_TM02,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM02,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM03"),
+ .itemId = ITEM_TM03,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM03,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM04"),
+ .itemId = ITEM_TM04,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM04,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM05"),
+ .itemId = ITEM_TM05,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM05,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM06"),
+ .itemId = ITEM_TM06,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM06,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM07"),
+ .itemId = ITEM_TM07,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM07,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM08"),
+ .itemId = ITEM_TM08,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM08,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM09"),
+ .itemId = ITEM_TM09,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM09,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM10"),
+ .itemId = ITEM_TM10,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM10,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM11"),
+ .itemId = ITEM_TM11,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM11,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM12"),
+ .itemId = ITEM_TM12,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM12,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM13"),
+ .itemId = ITEM_TM13,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM13,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM14"),
+ .itemId = ITEM_TM14,
+ .price = 5500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM14,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM15"),
+ .itemId = ITEM_TM15,
+ .price = 7500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM15,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM16"),
+ .itemId = ITEM_TM16,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM16,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM17"),
+ .itemId = ITEM_TM17,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM17,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM18"),
+ .itemId = ITEM_TM18,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM18,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM19"),
+ .itemId = ITEM_TM19,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM19,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM20"),
+ .itemId = ITEM_TM20,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM20,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM21"),
+ .itemId = ITEM_TM21,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM21,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM22"),
+ .itemId = ITEM_TM22,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM22,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM23"),
+ .itemId = ITEM_TM23,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM23,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM24"),
+ .itemId = ITEM_TM24,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM24,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM25"),
+ .itemId = ITEM_TM25,
+ .price = 5500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM25,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM26"),
+ .itemId = ITEM_TM26,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM26,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM27"),
+ .itemId = ITEM_TM27,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM27,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM28"),
+ .itemId = ITEM_TM28,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM28,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM29"),
+ .itemId = ITEM_TM29,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM29,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM30"),
+ .itemId = ITEM_TM30,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM30,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM31"),
+ .itemId = ITEM_TM31,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM31,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM32"),
+ .itemId = ITEM_TM32,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM32,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM33"),
+ .itemId = ITEM_TM33,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM33,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM34"),
+ .itemId = ITEM_TM34,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM34,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM35"),
+ .itemId = ITEM_TM35,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM35,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM36"),
+ .itemId = ITEM_TM36,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM36,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM37"),
+ .itemId = ITEM_TM37,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM37,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM38"),
+ .itemId = ITEM_TM38,
+ .price = 5500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM38,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM39"),
+ .itemId = ITEM_TM39,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM39,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM40"),
+ .itemId = ITEM_TM40,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM40,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM41"),
+ .itemId = ITEM_TM41,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM41,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM42"),
+ .itemId = ITEM_TM42,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM42,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM43"),
+ .itemId = ITEM_TM43,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM43,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM44"),
+ .itemId = ITEM_TM44,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM44,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM45"),
+ .itemId = ITEM_TM45,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM45,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM46"),
+ .itemId = ITEM_TM46,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM46,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM47"),
+ .itemId = ITEM_TM47,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM47,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM48"),
+ .itemId = ITEM_TM48,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM48,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM49"),
+ .itemId = ITEM_TM49,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM49,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM50"),
+ .itemId = ITEM_TM50,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM50,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VM01"),
+ .itemId = ITEM_HM01,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM01,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VM02"),
+ .itemId = ITEM_HM02,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM02,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VM03"),
+ .itemId = ITEM_HM03,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM03,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VM04"),
+ .itemId = ITEM_HM04,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM04,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VM05"),
+ .itemId = ITEM_HM05,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM05,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VM06"),
+ .itemId = ITEM_HM06,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM06,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VM07"),
+ .itemId = ITEM_HM07,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM07,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("VM08"),
+ .itemId = ITEM_HM08,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM08,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+};
diff --git a/src/data/items_en.h b/src/data/items_en.h
new file mode 100644
index 000000000..a3e822370
--- /dev/null
+++ b/src/data/items_en.h
@@ -0,0 +1,5587 @@
+const struct Item gItems[] =
+{
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MASTER BALL"),
+ .itemId = ITEM_MASTER_BALL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MasterBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 0,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ULTRA BALL"),
+ .itemId = ITEM_ULTRA_BALL,
+ .price = 1200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_UltraBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 1,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("GREAT BALL"),
+ .itemId = ITEM_GREAT_BALL,
+ .price = 600,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GreatBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 2,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 2,
+ },
+ {
+ .name = _("POKé BALL"),
+ .itemId = ITEM_POKE_BALL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PokeBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 3,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 3,
+ },
+ {
+ .name = _("SAFARI BALL"),
+ .itemId = ITEM_SAFARI_BALL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SafariBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 4,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 4,
+ },
+ {
+ .name = _("NET BALL"),
+ .itemId = ITEM_NET_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_NetBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 5,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 5,
+ },
+ {
+ .name = _("DIVE BALL"),
+ .itemId = ITEM_DIVE_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DiveBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 6,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 6,
+ },
+ {
+ .name = _("NEST BALL"),
+ .itemId = ITEM_NEST_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_NestBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 7,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 7,
+ },
+ {
+ .name = _("REPEAT BALL"),
+ .itemId = ITEM_REPEAT_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RepeatBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 8,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 8,
+ },
+ {
+ .name = _("TIMER BALL"),
+ .itemId = ITEM_TIMER_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TimerBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 9,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 9,
+ },
+ {
+ .name = _("LUXURY BALL"),
+ .itemId = ITEM_LUXURY_BALL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LuxuryBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 10,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 10,
+ },
+ {
+ .name = _("PREMIER BALL"),
+ .itemId = ITEM_PREMIER_BALL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PremierBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_POKE_BALLS,
+ .type = 11,
+ .fieldUseFunc = NULL,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_PokeBall,
+ .secondaryId = 11,
+ },
+ {
+ .name = _("POTION"),
+ .itemId = ITEM_POTION,
+ .price = 300,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 20,
+ .description = gItemDescription_Potion,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ANTIDOTE"),
+ .itemId = ITEM_ANTIDOTE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Antidote,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BURN HEAL"),
+ .itemId = ITEM_BURN_HEAL,
+ .price = 250,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BurnHeal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ICE HEAL"),
+ .itemId = ITEM_ICE_HEAL,
+ .price = 250,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_IceHeal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("AWAKENING"),
+ .itemId = ITEM_AWAKENING,
+ .price = 250,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Awakening,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PARLYZ HEAL"),
+ .itemId = ITEM_PARALYZE_HEAL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ParalyzeHeal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FULL RESTORE"),
+ .itemId = ITEM_FULL_RESTORE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 255,
+ .description = gItemDescription_FullRestore,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAX POTION"),
+ .itemId = ITEM_MAX_POTION,
+ .price = 2500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 255,
+ .description = gItemDescription_MaxPotion,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HYPER POTION"),
+ .itemId = ITEM_HYPER_POTION,
+ .price = 1200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 200,
+ .description = gItemDescription_HyperPotion,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SUPER POTION"),
+ .itemId = ITEM_SUPER_POTION,
+ .price = 700,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 50,
+ .description = gItemDescription_SuperPotion,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FULL HEAL"),
+ .itemId = ITEM_FULL_HEAL,
+ .price = 600,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_FullHeal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("REVIVE"),
+ .itemId = ITEM_REVIVE,
+ .price = 1500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Revive,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAX REVIVE"),
+ .itemId = ITEM_MAX_REVIVE,
+ .price = 4000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MaxRevive,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FRESH WATER"),
+ .itemId = ITEM_FRESH_WATER,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 50,
+ .description = gItemDescription_FreshWater,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SODA POP"),
+ .itemId = ITEM_SODA_POP,
+ .price = 300,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 60,
+ .description = gItemDescription_SodaPop,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LEMONADE"),
+ .itemId = ITEM_LEMONADE,
+ .price = 350,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 80,
+ .description = gItemDescription_Lemonade,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MOOMOO MILK"),
+ .itemId = ITEM_MOOMOO_MILK,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 100,
+ .description = gItemDescription_MoomooMilk,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ENERGYPOWDER"),
+ .itemId = ITEM_ENERGY_POWDER,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EnergyPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ENERGY ROOT"),
+ .itemId = ITEM_ENERGY_ROOT,
+ .price = 800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EnergyRoot,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HEAL POWDER"),
+ .itemId = ITEM_HEAL_POWDER,
+ .price = 450,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HealPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("REVIVAL HERB"),
+ .itemId = ITEM_REVIVAL_HERB,
+ .price = 2800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RevivalHerb,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ETHER"),
+ .itemId = ITEM_ETHER,
+ .price = 1200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Ether,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAX ETHER"),
+ .itemId = ITEM_MAX_ETHER,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 255,
+ .description = gItemDescription_MaxEther,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ELIXIR"),
+ .itemId = ITEM_ELIXIR,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Elixir,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAX ELIXIR"),
+ .itemId = ITEM_MAX_ELIXIR,
+ .price = 4500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 255,
+ .description = gItemDescription_MaxElixir,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LAVA COOKIE"),
+ .itemId = ITEM_LAVA_COOKIE,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LavaCookie,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLUE FLUTE"),
+ .itemId = ITEM_BLUE_FLUTE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlueFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("YELLOW FLUTE"),
+ .itemId = ITEM_YELLOW_FLUTE,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_YellowFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RED FLUTE"),
+ .itemId = ITEM_RED_FLUTE,
+ .price = 300,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RedFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLACK FLUTE"),
+ .itemId = ITEM_BLACK_FLUTE,
+ .price = 400,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 50,
+ .description = gItemDescription_BlackFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WHITE FLUTE"),
+ .itemId = ITEM_WHITE_FLUTE,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 150,
+ .description = gItemDescription_WhiteFlute,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_BlackWhiteFlute,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BERRY JUICE"),
+ .itemId = ITEM_BERRY_JUICE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_RESTORE_HP,
+ .holdEffectParam = 20,
+ .description = gItemDescription_BerryJuice,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SACRED ASH"),
+ .itemId = ITEM_SACRED_ASH,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SacredAsh,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_SacredAsh,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SHOAL SALT"),
+ .itemId = ITEM_SHOAL_SALT,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ShoalSalt,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SHOAL SHELL"),
+ .itemId = ITEM_SHOAL_SHELL,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ShoalShell,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RED SHARD"),
+ .itemId = ITEM_RED_SHARD,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RedShard,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLUE SHARD"),
+ .itemId = ITEM_BLUE_SHARD,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlueShard,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("YELLOW SHARD"),
+ .itemId = ITEM_YELLOW_SHARD,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_YellowShard,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GREEN SHARD"),
+ .itemId = ITEM_GREEN_SHARD,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GreenShard,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HP UP"),
+ .itemId = ITEM_HP_UP,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HPUp,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PROTEIN"),
+ .itemId = ITEM_PROTEIN,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Protein,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("IRON"),
+ .itemId = ITEM_IRON,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Iron,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CARBOS"),
+ .itemId = ITEM_CARBOS,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Carbos,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CALCIUM"),
+ .itemId = ITEM_CALCIUM,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Calcium,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RARE CANDY"),
+ .itemId = ITEM_RARE_CANDY,
+ .price = 4800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RareCandy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_RareCandy,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PP UP"),
+ .itemId = ITEM_PP_UP,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PPUp,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPUp,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ZINC"),
+ .itemId = ITEM_ZINC,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Zinc,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PP MAX"),
+ .itemId = ITEM_PP_MAX,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PPMax,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPUp,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GUARD SPEC."),
+ .itemId = ITEM_GUARD_SPEC,
+ .price = 700,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GuardSpec,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DIRE HIT"),
+ .itemId = ITEM_DIRE_HIT,
+ .price = 650,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DireHit,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X ATTACK"),
+ .itemId = ITEM_X_ATTACK,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XAttack,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X DEFEND"),
+ .itemId = ITEM_X_DEFEND,
+ .price = 550,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XDefend,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X SPEED"),
+ .itemId = ITEM_X_SPEED,
+ .price = 350,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XSpeed,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X ACCURACY"),
+ .itemId = ITEM_X_ACCURACY,
+ .price = 950,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XAccuracy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("X SPECIAL"),
+ .itemId = ITEM_X_SPECIAL,
+ .price = 350,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_XSpecial,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_StatIncrease,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("POKé DOLL"),
+ .itemId = ITEM_POKE_DOLL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PokeDoll,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_Escape,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FLUFFY TAIL"),
+ .itemId = ITEM_FLUFFY_TAIL,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_FluffyTail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 2,
+ .battleUseFunc = ItemUseInBattle_Escape,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SUPER REPEL"),
+ .itemId = ITEM_SUPER_REPEL,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 200,
+ .description = gItemDescription_SuperRepel,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_Repel,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAX REPEL"),
+ .itemId = ITEM_MAX_REPEL,
+ .price = 700,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 250,
+ .description = gItemDescription_MaxRepel,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_Repel,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ESCAPE ROPE"),
+ .itemId = ITEM_ESCAPE_ROPE,
+ .price = 550,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EscapeRope,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_EscapeRope,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("REPEL"),
+ .itemId = ITEM_REPEL,
+ .price = 350,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 100,
+ .description = gItemDescription_Repel,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_Repel,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SUN STONE"),
+ .itemId = ITEM_SUN_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SunStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MOON STONE"),
+ .itemId = ITEM_MOON_STONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MoonStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FIRE STONE"),
+ .itemId = ITEM_FIRE_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_FireStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("THUNDERSTONE"),
+ .itemId = ITEM_THUNDER_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ThunderStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WATER STONE"),
+ .itemId = ITEM_WATER_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WaterStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LEAF STONE"),
+ .itemId = ITEM_LEAF_STONE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LeafStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_EvolutionStone,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TINYMUSHROOM"),
+ .itemId = ITEM_TINY_MUSHROOM,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TinyMushroom,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BIG MUSHROOM"),
+ .itemId = ITEM_BIG_MUSHROOM,
+ .price = 5000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BigMushroom,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PEARL"),
+ .itemId = ITEM_PEARL,
+ .price = 1400,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Pearl,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BIG PEARL"),
+ .itemId = ITEM_BIG_PEARL,
+ .price = 7500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BigPearl,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("STARDUST"),
+ .itemId = ITEM_STARDUST,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Stardust,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("STAR PIECE"),
+ .itemId = ITEM_STAR_PIECE,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_StarPiece,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("NUGGET"),
+ .itemId = ITEM_NUGGET,
+ .price = 10000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Nugget,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HEART SCALE"),
+ .itemId = ITEM_HEART_SCALE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HeartScale,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ORANGE MAIL"),
+ .itemId = ITEM_ORANGE_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_OrangeMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HARBOR MAIL"),
+ .itemId = ITEM_HARBOR_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HarborMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("GLITTER MAIL"),
+ .itemId = ITEM_GLITTER_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GlitterMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 2,
+ },
+ {
+ .name = _("MECH MAIL"),
+ .itemId = ITEM_MECH_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MechMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 3,
+ },
+ {
+ .name = _("WOOD MAIL"),
+ .itemId = ITEM_WOOD_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WoodMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 4,
+ },
+ {
+ .name = _("WAVE MAIL"),
+ .itemId = ITEM_WAVE_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WaveMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 5,
+ },
+ {
+ .name = _("BEAD MAIL"),
+ .itemId = ITEM_BEAD_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BeadMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 6,
+ },
+ {
+ .name = _("SHADOW MAIL"),
+ .itemId = ITEM_SHADOW_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ShadowMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 7,
+ },
+ {
+ .name = _("TROPIC MAIL"),
+ .itemId = ITEM_TROPIC_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TropicMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 8,
+ },
+ {
+ .name = _("DREAM MAIL"),
+ .itemId = ITEM_DREAM_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DreamMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 9,
+ },
+ {
+ .name = _("FAB MAIL"),
+ .itemId = ITEM_FAB_MAIL,
+ .price = 50,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_FabMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 10,
+ },
+ {
+ .name = _("RETRO MAIL"),
+ .itemId = ITEM_RETRO_MAIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RetroMail,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 0,
+ .fieldUseFunc = ItemUseOutOfBattle_Mail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 11,
+ },
+ {
+ .name = _("CHERI BERRY"),
+ .itemId = ITEM_CHERI_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_PAR,
+ .holdEffectParam = 0,
+ .description = gItemDescription_CheriBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CHESTO BERRY"),
+ .itemId = ITEM_CHESTO_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_SLP,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ChestoBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PECHA BERRY"),
+ .itemId = ITEM_PECHA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_PSN,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PechaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RAWST BERRY"),
+ .itemId = ITEM_RAWST_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_BRN,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RawstBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ASPEAR BERRY"),
+ .itemId = ITEM_ASPEAR_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_FRZ,
+ .holdEffectParam = 0,
+ .description = gItemDescription_AspearBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LEPPA BERRY"),
+ .itemId = ITEM_LEPPA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_RESTORE_PP,
+ .holdEffectParam = 10,
+ .description = gItemDescription_LeppaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_PPRecovery,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_PPRecovery,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ORAN BERRY"),
+ .itemId = ITEM_ORAN_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_RESTORE_HP,
+ .holdEffectParam = 10,
+ .description = gItemDescription_OranBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PERSIM BERRY"),
+ .itemId = ITEM_PERSIM_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_CONFUSION,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PersimBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LUM BERRY"),
+ .itemId = ITEM_LUM_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CURE_STATUS,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LumBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SITRUS BERRY"),
+ .itemId = ITEM_SITRUS_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_RESTORE_HP,
+ .holdEffectParam = 30,
+ .description = gItemDescription_SitrusBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_Medicine,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_Medicine,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FIGY BERRY"),
+ .itemId = ITEM_FIGY_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_SPICY,
+ .holdEffectParam = 8,
+ .description = gItemDescription_FigyBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WIKI BERRY"),
+ .itemId = ITEM_WIKI_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_DRY,
+ .holdEffectParam = 8,
+ .description = gItemDescription_WikiBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAGO BERRY"),
+ .itemId = ITEM_MAGO_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_SWEET,
+ .holdEffectParam = 8,
+ .description = gItemDescription_MagoBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("AGUAV BERRY"),
+ .itemId = ITEM_AGUAV_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_BITTER,
+ .holdEffectParam = 8,
+ .description = gItemDescription_AguavBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("IAPAPA BERRY"),
+ .itemId = ITEM_IAPAPA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CONFUSE_SOUR,
+ .holdEffectParam = 8,
+ .description = gItemDescription_IapapaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RAZZ BERRY"),
+ .itemId = ITEM_RAZZ_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RazzBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLUK BERRY"),
+ .itemId = ITEM_BLUK_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlukBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("NANAB BERRY"),
+ .itemId = ITEM_NANAB_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_NanabBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WEPEAR BERRY"),
+ .itemId = ITEM_WEPEAR_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WepearBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PINAP BERRY"),
+ .itemId = ITEM_PINAP_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PinapBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("POMEG BERRY"),
+ .itemId = ITEM_POMEG_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PomegBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KELPSY BERRY"),
+ .itemId = ITEM_KELPSY_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_KelpsyBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("QUALOT BERRY"),
+ .itemId = ITEM_QUALOT_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_QualotBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HONDEW BERRY"),
+ .itemId = ITEM_HONDEW_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HondewBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GREPA BERRY"),
+ .itemId = ITEM_GREPA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GrepaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TAMATO BERRY"),
+ .itemId = ITEM_TAMATO_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TamatoBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CORNN BERRY"),
+ .itemId = ITEM_CORNN_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_CornnBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAGOST BERRY"),
+ .itemId = ITEM_MAGOST_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MagostBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RABUTA BERRY"),
+ .itemId = ITEM_RABUTA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RabutaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("NOMEL BERRY"),
+ .itemId = ITEM_NOMEL_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_NomelBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SPELON BERRY"),
+ .itemId = ITEM_SPELON_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SpelonBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PAMTRE BERRY"),
+ .itemId = ITEM_PAMTRE_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PamtreBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WATMEL BERRY"),
+ .itemId = ITEM_WATMEL_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WatmelBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DURIN BERRY"),
+ .itemId = ITEM_DURIN_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DurinBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BELUE BERRY"),
+ .itemId = ITEM_BELUE_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BelueBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LIECHI BERRY"),
+ .itemId = ITEM_LIECHI_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_ATTACK_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_LiechiBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GANLON BERRY"),
+ .itemId = ITEM_GANLON_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_DEFENSE_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_GanlonBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SALAC BERRY"),
+ .itemId = ITEM_SALAC_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_SPEED_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_SalacBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PETAYA BERRY"),
+ .itemId = ITEM_PETAYA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_SP_ATTACK_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_PetayaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("APICOT BERRY"),
+ .itemId = ITEM_APICOT_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_ApicotBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LANSAT BERRY"),
+ .itemId = ITEM_LANSAT_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_CRITICAL_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_LansatBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("STARF BERRY"),
+ .itemId = ITEM_STARF_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP,
+ .holdEffectParam = 4,
+ .description = gItemDescription_StarfBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ENIGMA BERRY"),
+ .itemId = ITEM_ENIGMA_BERRY,
+ .price = 20,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EnigmaBerry,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_BERRIES,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_EnigmaBerry,
+ .battleUsage = 1,
+ .battleUseFunc = ItemUseInBattle_EnigmaBerry,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BRIGHTPOWDER"),
+ .itemId = ITEM_BRIGHT_POWDER,
+ .price = 10,
+ .holdEffect = HOLD_EFFECT_EVASION_UP,
+ .holdEffectParam = 10,
+ .description = gItemDescription_BrightPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WHITE HERB"),
+ .itemId = ITEM_WHITE_HERB,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_RESTORE_STATS,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WhiteHerb,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MACHO BRACE"),
+ .itemId = ITEM_MACHO_BRACE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_MACHO_BRACE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MachoBrace,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("EXP. SHARE"),
+ .itemId = ITEM_EXP_SHARE,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_EXP_SHARE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ExpShare,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("QUICK CLAW"),
+ .itemId = ITEM_QUICK_CLAW,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_QUICK_CLAW,
+ .holdEffectParam = 20,
+ .description = gItemDescription_QuickClaw,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SOOTHE BELL"),
+ .itemId = ITEM_SOOTHE_BELL,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_HAPPINESS_UP,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SootheBell,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MENTAL HERB"),
+ .itemId = ITEM_MENTAL_HERB,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_CURE_ATTRACT,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MentalHerb,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CHOICE BAND"),
+ .itemId = ITEM_CHOICE_BAND,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_CHOICE_BAND,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ChoiceBand,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("KING’S ROCK"),
+ .itemId = ITEM_KINGS_ROCK,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_FLINCH,
+ .holdEffectParam = 10,
+ .description = gItemDescription_KingsRock,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SILVERPOWDER"),
+ .itemId = ITEM_SILVER_POWDER,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_BUG_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SilverPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("AMULET COIN"),
+ .itemId = ITEM_AMULET_COIN,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_DOUBLE_PRIZE,
+ .holdEffectParam = 10,
+ .description = gItemDescription_AmuletCoin,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CLEANSE TAG"),
+ .itemId = ITEM_CLEANSE_TAG,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_REPEL,
+ .holdEffectParam = 0,
+ .description = gItemDescription_CleanseTag,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SOUL DEW"),
+ .itemId = ITEM_SOUL_DEW,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_SOUL_DEW,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SoulDew,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DEEPSEATOOTH"),
+ .itemId = ITEM_DEEP_SEA_TOOTH,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DeepSeaTooth,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DEEPSEASCALE"),
+ .itemId = ITEM_DEEP_SEA_SCALE,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_DEEP_SEA_SCALE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DeepSeaScale,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SMOKE BALL"),
+ .itemId = ITEM_SMOKE_BALL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_CAN_ALWAYS_RUN,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SmokeBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("EVERSTONE"),
+ .itemId = ITEM_EVERSTONE,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_PREVENT_EVOLVE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Everstone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("FOCUS BAND"),
+ .itemId = ITEM_FOCUS_BAND,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_FOCUS_BAND,
+ .holdEffectParam = 10,
+ .description = gItemDescription_FocusBand,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LUCKY EGG"),
+ .itemId = ITEM_LUCKY_EGG,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_LUCKY_EGG,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LuckyEgg,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCOPE LENS"),
+ .itemId = ITEM_SCOPE_LENS,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_SCOPE_LENS,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ScopeLens,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("METAL COAT"),
+ .itemId = ITEM_METAL_COAT,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_STEEL_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_MetalCoat,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LEFTOVERS"),
+ .itemId = ITEM_LEFTOVERS,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_LEFTOVERS,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Leftovers,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DRAGON SCALE"),
+ .itemId = ITEM_DRAGON_SCALE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_DRAGON_SCALE,
+ .holdEffectParam = 10,
+ .description = gItemDescription_DragonScale,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LIGHT BALL"),
+ .itemId = ITEM_LIGHT_BALL,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_LIGHT_BALL,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LightBall,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SOFT SAND"),
+ .itemId = ITEM_SOFT_SAND,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_GROUND_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SoftSand,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HARD STONE"),
+ .itemId = ITEM_HARD_STONE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_ROCK_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_HardStone,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MIRACLE SEED"),
+ .itemId = ITEM_MIRACLE_SEED,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_GRASS_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_MiracleSeed,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLACKGLASSES"),
+ .itemId = ITEM_BLACK_GLASSES,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_DARK_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_BlackGlasses,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLACK BELT"),
+ .itemId = ITEM_BLACK_BELT,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_FIGHTING_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_BlackBelt,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MAGNET"),
+ .itemId = ITEM_MAGNET,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_ELECTRIC_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Magnet,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MYSTIC WATER"),
+ .itemId = ITEM_MYSTIC_WATER,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_WATER_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_MysticWater,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SHARP BEAK"),
+ .itemId = ITEM_SHARP_BEAK,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_FLYING_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SharpBeak,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("POISON BARB"),
+ .itemId = ITEM_POISON_BARB,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_POISON_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_PoisonBarb,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("NEVERMELTICE"),
+ .itemId = ITEM_NEVER_MELT_ICE,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_ICE_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_NeverMeltIce,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SPELL TAG"),
+ .itemId = ITEM_SPELL_TAG,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_GHOST_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SpellTag,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TWISTEDSPOON"),
+ .itemId = ITEM_TWISTED_SPOON,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_PSYCHIC_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_TwistedSpoon,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CHARCOAL"),
+ .itemId = ITEM_CHARCOAL,
+ .price = 9800,
+ .holdEffect = HOLD_EFFECT_FIRE_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_Charcoal,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DRAGON FANG"),
+ .itemId = ITEM_DRAGON_FANG,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_DRAGON_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_DragonFang,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SILK SCARF"),
+ .itemId = ITEM_SILK_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NORMAL_POWER,
+ .holdEffectParam = 10,
+ .description = gItemDescription_SilkScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("UP-GRADE"),
+ .itemId = ITEM_UP_GRADE,
+ .price = 2100,
+ .holdEffect = HOLD_EFFECT_UP_GRADE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_UpGrade,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SHELL BELL"),
+ .itemId = ITEM_SHELL_BELL,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_SHELL_BELL,
+ .holdEffectParam = 8,
+ .description = gItemDescription_ShellBell,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SEA INCENSE"),
+ .itemId = ITEM_SEA_INCENSE,
+ .price = 9600,
+ .holdEffect = HOLD_EFFECT_WATER_POWER,
+ .holdEffectParam = 5,
+ .description = gItemDescription_SeaIncense,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LAX INCENSE"),
+ .itemId = ITEM_LAX_INCENSE,
+ .price = 9600,
+ .holdEffect = HOLD_EFFECT_EVASION_UP,
+ .holdEffectParam = 5,
+ .description = gItemDescription_LaxIncense,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LUCKY PUNCH"),
+ .itemId = ITEM_LUCKY_PUNCH,
+ .price = 10,
+ .holdEffect = HOLD_EFFECT_LUCKY_PUNCH,
+ .holdEffectParam = 0,
+ .description = gItemDescription_LuckyPunch,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("METAL POWDER"),
+ .itemId = ITEM_METAL_POWDER,
+ .price = 10,
+ .holdEffect = HOLD_EFFECT_METAL_POWDER,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MetalPowder,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("THICK CLUB"),
+ .itemId = ITEM_THICK_CLUB,
+ .price = 500,
+ .holdEffect = HOLD_EFFECT_THICK_CLUB,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ThickClub,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("STICK"),
+ .itemId = ITEM_STICK,
+ .price = 200,
+ .holdEffect = HOLD_EFFECT_STICK,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Stick,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RED SCARF"),
+ .itemId = ITEM_RED_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RedScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLUE SCARF"),
+ .itemId = ITEM_BLUE_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlueScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("PINK SCARF"),
+ .itemId = ITEM_PINK_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PinkScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GREEN SCARF"),
+ .itemId = ITEM_GREEN_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GreenScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("YELLOW SCARF"),
+ .itemId = ITEM_YELLOW_SCARF,
+ .price = 100,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_YellowScarf,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("MACH BIKE"),
+ .itemId = ITEM_MACH_BIKE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_MachBike,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Bike,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("COIN CASE"),
+ .itemId = ITEM_COIN_CASE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_CoinCase,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CoinCase,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ITEMFINDER"),
+ .itemId = ITEM_ITEMFINDER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Itemfinder,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Itemfinder,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("OLD ROD"),
+ .itemId = ITEM_OLD_ROD,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_OldRod,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Rod,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GOOD ROD"),
+ .itemId = ITEM_GOOD_ROD,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GoodRod,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Rod,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("SUPER ROD"),
+ .itemId = ITEM_SUPER_ROD,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SuperRod,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Rod,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 2,
+ },
+ {
+ .name = _("S.S. TICKET"),
+ .itemId = ITEM_SS_TICKET,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SSTicket,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CONTEST PASS"),
+ .itemId = ITEM_CONTEST_PASS,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ContestPass,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("WAILMER PAIL"),
+ .itemId = ITEM_WAILMER_PAIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_WailmerPail,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_WailmerPail,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DEVON GOODS"),
+ .itemId = ITEM_DEVON_GOODS,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DevonGoods,
+ .importance = 2,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SOOT SACK"),
+ .itemId = ITEM_SOOT_SACK,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_SootSack,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BASEMENT KEY"),
+ .itemId = ITEM_BASEMENT_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BasementKey,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ACRO BIKE"),
+ .itemId = ITEM_ACRO_BIKE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_AcroBike,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 2,
+ .fieldUseFunc = ItemUseOutOfBattle_Bike,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("{POKEBLOCK} CASE"),
+ .itemId = ITEM_POKEBLOCK_CASE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_PokeblockCase,
+ .importance = 1,
+ .unk19 = 1,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 3,
+ .fieldUseFunc = ItemUseOutOfBattle_PokeblockCase,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("LETTER"),
+ .itemId = ITEM_LETTER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Letter,
+ .importance = 2,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("EON TICKET"),
+ .itemId = ITEM_EON_TICKET,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_EonTicket,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 1,
+ },
+ {
+ .name = _("RED ORB"),
+ .itemId = ITEM_RED_ORB,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RedOrb,
+ .importance = 2,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("BLUE ORB"),
+ .itemId = ITEM_BLUE_ORB,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_BlueOrb,
+ .importance = 2,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("SCANNER"),
+ .itemId = ITEM_SCANNER,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Scanner,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("GO-GOGGLES"),
+ .itemId = ITEM_GO_GOGGLES,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_GoGoggles,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("METEORITE"),
+ .itemId = ITEM_METEORITE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Meteorite,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RM. 1 KEY"),
+ .itemId = ITEM_ROOM_1_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Room1Key,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RM. 2 KEY"),
+ .itemId = ITEM_ROOM_2_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Room2Key,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RM. 4 KEY"),
+ .itemId = ITEM_ROOM_4_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Room4Key,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("RM. 6 KEY"),
+ .itemId = ITEM_ROOM_6_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Room6Key,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("STORAGE KEY"),
+ .itemId = ITEM_STORAGE_KEY,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_StorageKey,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("ROOT FOSSIL"),
+ .itemId = ITEM_ROOT_FOSSIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_RootFossil,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("CLAW FOSSIL"),
+ .itemId = ITEM_CLAW_FOSSIL,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_ClawFossil,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("DEVON SCOPE"),
+ .itemId = ITEM_DEVON_SCOPE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_DevonScope,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_KEY_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM01"),
+ .itemId = ITEM_TM01,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM01,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM02"),
+ .itemId = ITEM_TM02,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM02,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM03"),
+ .itemId = ITEM_TM03,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM03,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM04"),
+ .itemId = ITEM_TM04,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM04,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM05"),
+ .itemId = ITEM_TM05,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM05,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM06"),
+ .itemId = ITEM_TM06,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM06,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM07"),
+ .itemId = ITEM_TM07,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM07,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM08"),
+ .itemId = ITEM_TM08,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM08,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM09"),
+ .itemId = ITEM_TM09,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM09,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM10"),
+ .itemId = ITEM_TM10,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM10,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM11"),
+ .itemId = ITEM_TM11,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM11,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM12"),
+ .itemId = ITEM_TM12,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM12,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM13"),
+ .itemId = ITEM_TM13,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM13,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM14"),
+ .itemId = ITEM_TM14,
+ .price = 5500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM14,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM15"),
+ .itemId = ITEM_TM15,
+ .price = 7500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM15,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM16"),
+ .itemId = ITEM_TM16,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM16,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM17"),
+ .itemId = ITEM_TM17,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM17,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM18"),
+ .itemId = ITEM_TM18,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM18,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM19"),
+ .itemId = ITEM_TM19,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM19,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM20"),
+ .itemId = ITEM_TM20,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM20,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM21"),
+ .itemId = ITEM_TM21,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM21,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM22"),
+ .itemId = ITEM_TM22,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM22,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM23"),
+ .itemId = ITEM_TM23,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM23,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM24"),
+ .itemId = ITEM_TM24,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM24,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM25"),
+ .itemId = ITEM_TM25,
+ .price = 5500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM25,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM26"),
+ .itemId = ITEM_TM26,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM26,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM27"),
+ .itemId = ITEM_TM27,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM27,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM28"),
+ .itemId = ITEM_TM28,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM28,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM29"),
+ .itemId = ITEM_TM29,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM29,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM30"),
+ .itemId = ITEM_TM30,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM30,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM31"),
+ .itemId = ITEM_TM31,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM31,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM32"),
+ .itemId = ITEM_TM32,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM32,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM33"),
+ .itemId = ITEM_TM33,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM33,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM34"),
+ .itemId = ITEM_TM34,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM34,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM35"),
+ .itemId = ITEM_TM35,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM35,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM36"),
+ .itemId = ITEM_TM36,
+ .price = 1000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM36,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM37"),
+ .itemId = ITEM_TM37,
+ .price = 2000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM37,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM38"),
+ .itemId = ITEM_TM38,
+ .price = 5500,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM38,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM39"),
+ .itemId = ITEM_TM39,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM39,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM40"),
+ .itemId = ITEM_TM40,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM40,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM41"),
+ .itemId = ITEM_TM41,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM41,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM42"),
+ .itemId = ITEM_TM42,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM42,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM43"),
+ .itemId = ITEM_TM43,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM43,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM44"),
+ .itemId = ITEM_TM44,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM44,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM45"),
+ .itemId = ITEM_TM45,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM45,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM46"),
+ .itemId = ITEM_TM46,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM46,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM47"),
+ .itemId = ITEM_TM47,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM47,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM48"),
+ .itemId = ITEM_TM48,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM48,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM49"),
+ .itemId = ITEM_TM49,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM49,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("TM50"),
+ .itemId = ITEM_TM50,
+ .price = 3000,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_TM50,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM01"),
+ .itemId = ITEM_HM01,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM01,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM02"),
+ .itemId = ITEM_HM02,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM02,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM03"),
+ .itemId = ITEM_HM03,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM03,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM04"),
+ .itemId = ITEM_HM04,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM04,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM05"),
+ .itemId = ITEM_HM05,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM05,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM06"),
+ .itemId = ITEM_HM06,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM06,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM07"),
+ .itemId = ITEM_HM07,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM07,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("HM08"),
+ .itemId = ITEM_HM08,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_HM08,
+ .importance = 1,
+ .unk19 = 0,
+ .pocket = POCKET_TM_HM,
+ .type = 1,
+ .fieldUseFunc = ItemUseOutOfBattle_TMHM,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+ {
+ .name = _("????????"),
+ .itemId = ITEM_NONE,
+ .price = 0,
+ .holdEffect = HOLD_EFFECT_NONE,
+ .holdEffectParam = 0,
+ .description = gItemDescription_Dummy,
+ .importance = 0,
+ .unk19 = 0,
+ .pocket = POCKET_ITEMS,
+ .type = 4,
+ .fieldUseFunc = ItemUseOutOfBattle_CannotUse,
+ .battleUsage = 0,
+ .battleUseFunc = NULL,
+ .secondaryId = 0,
+ },
+};
diff --git a/src/data/pokedex_entries_de.h b/src/data/pokedex_entries_de.h
index 38263ec6e..0f64cba66 100644
--- a/src/data/pokedex_entries_de.h
+++ b/src/data/pokedex_entries_de.h
@@ -1,3 +1,11 @@
+#ifdef SAPPHIRE
+static const u8 DexDescription_Dummy_1[] = _(
+ "Dieses POKéMON wurde erst vor kurzem \n"
+ "entdeckt und wird noch erforscht.");
+static const u8 DexDescription_Dummy_2[] = _(
+ "Zur Zeit sind keine genauen Informatio-\n"
+ "nen über dieses POKéMON vorhanden.");
+#else
static const u8 DexDescription_Dummy_1[] = _(
"Dieses POKéMON wurde erst vor kurzem \n"
"entdeckt und wird noch erforscht.");
@@ -5,7 +13,17 @@ static const u8 DexDescription_Dummy_2[] = _(
"Zur Zeit sind keine genauen\n"
"Informationen über dieses\n"
"POKéMON vorhanden.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Bisasam_1[] = _(
+ "BISASAM macht gern einmal ein\n"
+ "Nickerchen im Sonnenschein.\n"
+ "Auf seinem Rücken trägt es einen Samen.");
+static const u8 DexDescription_Bisasam_2[] = _(
+ "Indem es Sonnenstrahlen aufsaugt,\n"
+ "wird er zunehmend größer.");
+#else
static const u8 DexDescription_Bisasam_1[] = _(
"BISASAM macht gern einmal ein\n"
"Nickerchen im Sonnenschein.\n"
@@ -13,7 +31,18 @@ static const u8 DexDescription_Bisasam_1[] = _(
static const u8 DexDescription_Bisasam_2[] = _(
"Indem es Sonnenstrahlen aufsaugt,\n"
"wird der Samen zunehmend größer.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Bisaknosp_1[] = _(
+ "BISAKNOSP hat eine Knospe auf seinem\n"
+ "Rücken. Seine Beine und sein Stamm sind\n"
+ "kräftig genug, um sein Gewicht zu");
+static const u8 DexDescription_Bisaknosp_2[] = _(
+ "tragen. Wenn es lange in der Sonne liegt,\n"
+ "ist das ein Anzeichen dafür, dass die\n"
+ "Knospe bald blüht.");
+#else
static const u8 DexDescription_Bisaknosp_1[] = _(
"BISAKNOSP hat eine Knospe auf seinem\n"
"Rücken. Beine und Rumpf sind kräftig\n"
@@ -22,7 +51,17 @@ static const u8 DexDescription_Bisaknosp_2[] = _(
"Wenn es lange in der Sonne liegt, ist das\n"
"ein Anzeichen dafür, dass die Knospe\n"
"bald blüht.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Bisaflor_1[] = _(
+ "BISAFLOR hat eine Blume auf seinem\n"
+ "Rücken. Wenn sie viel Nahrung und Sonne\n"
+ "aufnimmt, verfärbt sie sich bunt.");
+static const u8 DexDescription_Bisaflor_2[] = _(
+ "Der Duft der Blume besänftigt die\n"
+ "Gemüter der Menschen.");
+#else
static const u8 DexDescription_Bisaflor_1[] = _(
"BISAFLOR hat eine Blume auf seinem\n"
"Rücken. Wenn sie viel Nahrung und Sonne\n"
@@ -30,7 +69,17 @@ static const u8 DexDescription_Bisaflor_1[] = _(
static const u8 DexDescription_Bisaflor_2[] = _(
"Der Duft der Blume mildert die Emotionen\n"
"der Menschen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Glumanda_1[] = _(
+ "Die Flamme auf seiner Schweifspitze\n"
+ "zeigt seine Gefühlslage an. Sie\n"
+ "flackert, wenn GLUMANDA zufrieden ist.");
+static const u8 DexDescription_Glumanda_2[] = _(
+ "Wenn dieses POKéMON wütend wird, lodert\n"
+ "die Flamme sehr stark.");
+#else
static const u8 DexDescription_Glumanda_1[] = _(
"Die Flamme auf seiner Schweifspitze\n"
"zeigt seine Gefühlslage an. Sie\n"
@@ -38,7 +87,18 @@ static const u8 DexDescription_Glumanda_1[] = _(
static const u8 DexDescription_Glumanda_2[] = _(
"Wenn dieses POKéMON wütend wird, lodert\n"
"die Flamme gewaltig.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Glutexo_1[] = _(
+ "GLUTEXO attackiert seine Feinde mit\n"
+ "aller Gewalt und unter Einsatz seiner\n"
+ "scharfen Krallen. Trifft es auf starke");
+static const u8 DexDescription_Glutexo_2[] = _(
+ "Gegner, wird es wütend und die\n"
+ "Flamme auf seiner Schweifspitze\n"
+ "flackert in einem bläulichen Ton.");
+#else
static const u8 DexDescription_Glutexo_1[] = _(
"Gnadenlos besiegt GLUTEXO seine Geg-\n"
"ner mit seinen scharfen Klauen. Wenn es \n"
@@ -47,7 +107,17 @@ static const u8 DexDescription_Glutexo_2[] = _(
"wütend und die Flamme auf seiner\n"
"Schweifspitze flackert in einem\n"
"bläulichen Ton.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Glurak_1[] = _(
+ "GLURAK fliegt durch die Lüfte, um\n"
+ "starke Gegner aufzuspüren. Sein heißer\n"
+ "Feueratem bringt alles zum Schmelzen.");
+static const u8 DexDescription_Glurak_2[] = _(
+ "Aber es richtet seinen Feueratem nie\n"
+ "gegen schwächere Gegner.");
+#else
static const u8 DexDescription_Glurak_1[] = _(
"GLURAK fliegt durch die Lüfte, um\n"
"starke Gegner aufzuspüren. Sein heißer\n"
@@ -55,6 +125,7 @@ static const u8 DexDescription_Glurak_1[] = _(
static const u8 DexDescription_Glurak_2[] = _(
"Aber es richtet seinen Feueratem nie\n"
"auf schwächere Gegner.");
+#endif
static const u8 DexDescription_Schiggy_1[] = _(
"SCHIGGYs Panzer dient nicht nur zum\n"
@@ -81,6 +152,15 @@ static const u8 DexDescription_Turtok_2[] = _(
"verschießen, dass es damit aus fast\n"
"50 Metern leere Dosen trifft.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Raupy_1[] = _(
+ "RAUPY ist sehr gefräßig. Es kann\n"
+ "Blätter verschlingen, die seine eigene\n"
+ "Größe um ein Vielfaches übersteigen.");
+static const u8 DexDescription_Raupy_2[] = _(
+ "Seine Antennen sondern einen\n"
+ "übel riechenden Gestank ab.");
+#else
static const u8 DexDescription_Raupy_1[] = _(
"RAUPY ist sehr gefräßig, es kann\n"
"Blätter verschlingen, die größer sind\n"
@@ -88,7 +168,17 @@ static const u8 DexDescription_Raupy_1[] = _(
static const u8 DexDescription_Raupy_2[] = _(
"Seine Antennen sondern einen\n"
"übel riechenden Gestank ab.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Safcon_1[] = _(
+ "Der Panzer dieses POKéMON ist hart wie\n"
+ "Stahl. SAFCON bewegt sich kaum, da es\n"
+ "das weiche Innere unter seiner harten");
+static const u8 DexDescription_Safcon_2[] = _(
+ "Schale auf seine Entwicklung \n"
+ "vorbereitet.");
+#else
static const u8 DexDescription_Safcon_1[] = _(
"Der Panzer dieses POKéMON ist hart wie\n"
"Stahl. SAFCON bewegt sich kaum,");
@@ -96,6 +186,7 @@ static const u8 DexDescription_Safcon_2[] = _(
"da es das weiche Innere unter seiner\n"
"harten Schale auf seine Entwicklung \n"
"vorbereitet.");
+#endif
static const u8 DexDescription_Smettbo_1[] = _(
"SMETTBOs größte Fähigkeit ist das Auf-\n"
@@ -105,6 +196,16 @@ static const u8 DexDescription_Smettbo_2[] = _(
"fast 10 km von seinem Nest entfernt\n"
"blühen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Hornliu_1[] = _(
+ "HORNLIU verfügt über einen ausge-\n"
+ "zeichneten Geruchssinn. Es ist in der\n"
+ "Lage, seine Lieblingsblätter von denen");
+static const u8 DexDescription_Hornliu_2[] = _(
+ "zu unterscheiden, die es nicht mag,\n"
+ "indem es mit seinem großen roten\n"
+ "Rüssel daran schnuppert.");
+#else
static const u8 DexDescription_Hornliu_1[] = _(
"HORNLIU verfügt über einen ausge-\n"
"zeichneten Geruchssinn. So kann es\n"
@@ -113,7 +214,18 @@ static const u8 DexDescription_Hornliu_2[] = _(
"unterscheiden, die es nicht mag, indem\n"
"es mit seiner großen roten Nase daran\n"
"schnuppert.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kokuna_1[] = _(
+ "KOKUNA bewegt sich kaum, wenn es sich\n"
+ "an einen Baum heftet. In seinem Inneren\n"
+ "jedoch regt sich einiges, da es sich auf");
+static const u8 DexDescription_Kokuna_2[] = _(
+ "seine bevorstehende Entwicklung \n"
+ "vorbereitet. Dabei wird seine Schale\n"
+ "sehr heiß.");
+#else
static const u8 DexDescription_Kokuna_1[] = _(
"KOKUNA bewegt sich kaum, wenn es an\n"
"einem Baum haftet. In seinem Inneren\n"
@@ -122,14 +234,33 @@ static const u8 DexDescription_Kokuna_2[] = _(
"seine bevorstehende Entwicklung vor-\n"
"bereitet. Dabei wird seine Schale sehr\n"
"heiß.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Bibor_1[] = _(
+ "BIBOR ist sehr wehrhaft. Es sollte sich\n"
+ "besser niemand seinem Nest nähern.");
+static const u8 DexDescription_Bibor_2[] = _(
+ "Wenn man sie ärgert, greifen sie in\n"
+ "Schwärmen an.");
+#else
static const u8 DexDescription_Bibor_1[] = _(
"BIBOR sind sehr wehrhaft. Es sollte sich\n"
"besser niemand ihrem Nest nähern.");
static const u8 DexDescription_Bibor_2[] = _(
"Wenn man sie ärgert, greifen sie in\n"
"Schwärmen an.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Taubsi_1[] = _(
+ "TAUBSI verfügt über einen sehr ge-\n"
+ "schulten Orientierungssinn. Es kehrt \n"
+ "zielsicher zu seinem Nest zurück,");
+static const u8 DexDescription_Taubsi_2[] = _(
+ "egal, wie weit es sich von seiner \n"
+ "gewohnten Umgebung entfernt hat.");
+#else
static const u8 DexDescription_Taubsi_1[] = _(
"TAUBSI verfügt über einen sehr ge-\n"
"schulten Orientierungssinn. Es kehrt \n"
@@ -137,6 +268,7 @@ static const u8 DexDescription_Taubsi_1[] = _(
static const u8 DexDescription_Taubsi_2[] = _(
"egal, wie weit es sich von seiner\n"
"gewohnten Umgebung entfernt hat.");
+#endif
static const u8 DexDescription_Tauboga_1[] = _(
"TAUBOGA nennt ein großes Gebiet sein\n"
@@ -165,6 +297,15 @@ static const u8 DexDescription_Rattfratz_2[] = _(
"seinen Lebensraum und richtet sein\n"
"Nest überall ein.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Rattikarl_1[] = _(
+ "RATTIKARLs kräftige Zähne wachsen\n"
+ "immer nach. Deshalb nagt es ständig\n"
+ "Steine und Baumstämme an.");
+static const u8 DexDescription_Rattikarl_2[] = _(
+ "Manchmal knabbert es sogar\n"
+ "Hauswände an.");
+#else
static const u8 DexDescription_Rattikarl_1[] = _(
"RATTIKARLs kräftige Zähne wachsen\n"
"ständig. Deshalb nagt es unablässig\n"
@@ -172,7 +313,18 @@ static const u8 DexDescription_Rattikarl_1[] = _(
static const u8 DexDescription_Rattikarl_2[] = _(
"um sie abzuwetzen. Manchmal knabbert\n"
"es sogar Hauswände an.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Habitak_1[] = _(
+ "HABITAK kann einen sehr lauten Schrei\n"
+ "ausstoßen, den man über die Entfernung\n"
+ "von 1 km vernehmen kann. Durch das");
+static const u8 DexDescription_Habitak_2[] = _(
+ "Echo seiner hohen, wehklagenden \n"
+ "Schreie warnt dieses POKéMON seine\n"
+ "Artgenossen vor drohender Gefahr.");
+#else
static const u8 DexDescription_Habitak_1[] = _(
"HABITAK kann einen sehr lauten Schrei\n"
"ausstoßen, den man über die Entfernung\n"
@@ -181,7 +333,18 @@ static const u8 DexDescription_Habitak_2[] = _(
"Durch das Echo seiner hohen, wehklagen-\n"
"den Schreie warnt dieses POKéMON seine\n"
"Artgenossen vor drohender Gefahr.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Ibitak_1[] = _(
+ "IBITAK erkennt man an seinem langen \n"
+ "Schnabel. \n"
+ "Er ist hervorragend dafür geeignet,");
+static const u8 DexDescription_Ibitak_2[] = _(
+ "im Erdreich oder im Wasser Beute zu\n"
+ "jagen. Es setzt seinen langen, dünnen\n"
+ "Schnabel dabei sehr geschickt ein.");
+#else
static const u8 DexDescription_Ibitak_1[] = _(
"IBITAK erkennt man an seinem langen \n"
"Hals und Schnabel. \n"
@@ -190,7 +353,17 @@ static const u8 DexDescription_Ibitak_2[] = _(
"im Erdreich oder im Wasser Beute zu\n"
"jagen. Es setzt seinen langen, dünnen\n"
"Schnabel dabei sehr geschickt ein.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Rettan_1[] = _(
+ "RETTAN rollt sich zu einer Spirale \n"
+ "zusammen, wenn es sich ausruht.\n"
+ "Aus dieser Haltung kann es blitzschnell");
+static const u8 DexDescription_Rettan_2[] = _(
+ "auf Bedrohungen aus allen Richtungen\n"
+ "reagieren, indem es seinen Kopf hebt.");
+#else
static const u8 DexDescription_Rettan_1[] = _(
"RETTAN rollt sich zu einer Spirale zu-\n"
"sammen, wenn es sich ausruht.\n"
@@ -198,6 +371,7 @@ static const u8 DexDescription_Rettan_1[] = _(
static const u8 DexDescription_Rettan_2[] = _(
"auf Bedrohungen aus allen Richtungen\n"
"reagieren, indem es seinen Kopf hebt.");
+#endif
static const u8 DexDescription_Arbok_1[] = _(
"Dieses POKéMON ist unheimlich stark. Es\n"
@@ -208,6 +382,16 @@ static const u8 DexDescription_Arbok_2[] = _(
"es unmöglich, seinem Würgegriff zu ent-\n"
"kommen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pikachu_1[] = _(
+ "Dieses POKéMON kann in seinen\n"
+ "Backentaschen Elektrizität speichern.\n"
+ "Diese laden sich nachts auf, während");
+static const u8 DexDescription_Pikachu_2[] = _(
+ "PIKACHU schläft. Es entlädt manchmal\n"
+ "seine elektrische Ladung, wenn es gera-\n"
+ "de aufgewacht und noch schläfrig ist.");
+#else
static const u8 DexDescription_Pikachu_1[] = _(
"Immer wenn PIKACHU auf etwas Neues\n"
"stößt, jagt es einen Elektroschock \n"
@@ -216,7 +400,17 @@ static const u8 DexDescription_Pikachu_2[] = _(
"Wenn du eine verkohlte Beere findest,\n"
"hat dieses POKéMON seine elektrische\n"
"Ladung falsch eingeschätzt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Raichu_1[] = _(
+ "Dieses POKéMON gibt eine schwache\n"
+ "elektrische Ladung ab. Dadurch glüht\n"
+ "es bei Dunkelheit leicht. RAICHU entlädt");
+static const u8 DexDescription_Raichu_2[] = _(
+ "Elektrizität, indem es sein\n"
+ "Hinterteil in den Boden gräbt.");
+#else
static const u8 DexDescription_Raichu_1[] = _(
"Wenn seine elektrische Ladung zu groß\n"
"wird, entlädt RAICHU seine Energie ins\n"
@@ -224,7 +418,18 @@ static const u8 DexDescription_Raichu_1[] = _(
static const u8 DexDescription_Raichu_2[] = _(
"Neben dem Nest dieses POKéMON findet\n"
"man häufig versengtes Erdreich.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Sandan_1[] = _(
+ "SANDAN hat eine sehr trockene und\n"
+ "extrem robuste Haut. Dieses POKéMON\n"
+ "kann sich zu einem Ball zusammenrollen,");
+static const u8 DexDescription_Sandan_2[] = _(
+ "von dem jegliche Angriffe abprallen.\n"
+ "Nachts gräbt es sich im Wüstensand ein\n"
+ "und schläft dort.");
+#else
static const u8 DexDescription_Sandan_1[] = _(
"SANDANs Körper kann sehr viel Wasser\n"
"aufnehmen, so dass es auch in der\n"
@@ -232,7 +437,18 @@ static const u8 DexDescription_Sandan_1[] = _(
static const u8 DexDescription_Sandan_2[] = _(
"Dieses POKéMON rollt sich zusammen, um\n"
"sich vor Feinden zu schützen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Sandamer_1[] = _(
+ "SANDAMER kann sich zu einem Ball mit\n"
+ "langen Stacheln zusammenrollen. Im\n"
+ "Kampf schlägt es seine Gegner in die");
+static const u8 DexDescription_Sandamer_2[] = _(
+ "Flucht, indem es sie mit seinen Stacheln\n"
+ "sticht. Dann springt es sie an und\n"
+ "schlägt mit seinen scharfen Klauen zu.");
+#else
static const u8 DexDescription_Sandamer_1[] = _(
"SANDAMERs Körper ist übersät\n"
"mit spitzen Stacheln, die eigentlich\n"
@@ -240,7 +456,18 @@ static const u8 DexDescription_Sandamer_1[] = _(
static const u8 DexDescription_Sandamer_2[] = _(
"Einmal im Jahr fallen die alten Stacheln\n"
"aus und werden durch neue ersetzt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_NidoranF_1[] = _(
+ "NIDORAN besitzt Widerhaken, die ein\n"
+ "starkes Gift ausstoßen. Sie sind \n"
+ "vermutlich zum Schutz dieses");
+static const u8 DexDescription_NidoranF_2[] = _(
+ "schmächtigen POKéMON entstanden.\n"
+ "Wenn es wütend wird, stößt es ein\n"
+ "gefährliches Gift aus seinem Horn aus.");
+#else
static const u8 DexDescription_NidoranF_1[] = _(
"NIDORAN besitzt Widerhaken, die ein\n"
"starkes Gift ausstoßen. Sie sind ver-\n"
@@ -249,7 +476,18 @@ static const u8 DexDescription_NidoranF_2[] = _(
"schmächtigen POKéMON entstanden.\n"
"Wenn es wütend wird, stößt es ein\n"
"gefährliches Gift aus seinem Horn aus.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Nidorina_1[] = _(
+ "Wenn NIDORINA mit seinen Freunden oder\n"
+ "seiner Familie zusammen ist, zieht\n"
+ "es seine Widerhaken ein, damit");
+static const u8 DexDescription_Nidorina_2[] = _(
+ "es niemanden verletzt. Dieses\n"
+ "POKéMON wird nervös, wenn man es\n"
+ "von seinen Artgenossen trennt.");
+#else
static const u8 DexDescription_Nidorina_1[] = _(
"Wenn NIDORINA mit seinen Freunden oder\n"
"seiner Familie zusammen ist, zieht\n"
@@ -258,7 +496,18 @@ static const u8 DexDescription_Nidorina_2[] = _(
"niemanden verletzt. Dieses\n"
"POKéMON wird nervös, wenn man es\n"
"von seinen Artgenossen trennt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Nidoqueen_1[] = _(
+ "NIDOQUEENs Körper ist mit sehr harten\n"
+ "Schuppen bedeckt. Es ist sehr\n"
+ "geschickt darin, Gegner mit harten");
+static const u8 DexDescription_Nidoqueen_2[] = _(
+ "Attacken wegzuschleudern.\n"
+ "Dieses POKéMON entwickelt die größte\n"
+ "Kraft, wenn es seine Jungen verteidigt.");
+#else
static const u8 DexDescription_Nidoqueen_1[] = _(
"NIDOQUEENs Körper ist mit sehr harten\n"
"Schuppen bedeckt. Es ist sehr ge-\n"
@@ -267,7 +516,18 @@ static const u8 DexDescription_Nidoqueen_2[] = _(
"Attacken wegzuschleudern.\n"
"Dieses POKéMON entwickelt am meisten\n"
"Kraft, wenn es seine Jungen verteidigt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_NidoranM_1[] = _(
+ "Das männliche NIDORAN hat Muskeln\n"
+ "entwickelt, um seine Ohren bewegen zu\n"
+ "können. Dadurch kann es sie in jede");
+static const u8 DexDescription_NidoranM_2[] = _(
+ "beliebige Richtung wenden. Diesem\n"
+ "POKéMON entgeht nicht das leiseste\n"
+ "Geräusch.");
+#else
static const u8 DexDescription_NidoranM_1[] = _(
"Das männliche NIDORAN hat Muskeln ent-\n"
"wickelt, um seine Ohren bewegen zu kön-\n"
@@ -276,6 +536,7 @@ static const u8 DexDescription_NidoranM_2[] = _(
"ge Richtung drehen. Diesem POKéMON \n"
"entgeht nicht einmal das leiseste Ge-\n"
"räusch.");
+#endif
static const u8 DexDescription_Nidorino_1[] = _(
"NIDORINO besitzt ein Horn, das sogar\n"
@@ -286,6 +547,15 @@ static const u8 DexDescription_Nidorino_2[] = _(
"auf und es schlägt den Gegner mit aller\n"
"Kraft in die Flucht.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Nidoking_1[] = _(
+ "NIDOKINGs Schweif ist enorm stark. Mit\n"
+ "einer Bewegung kann es einen \n"
+ "metallenen Sendemast zum Einsturz");
+static const u8 DexDescription_Nidoking_2[] = _(
+ "bringen. Wenn es in Rage gerät, ist es\n"
+ "nur schwer aufzuhalten.");
+#else
static const u8 DexDescription_Nidoking_1[] = _(
"NIDOKINGs Schweif ist enorm stark. Mit\n"
"einer Bewegung kann es einen metalle-\n"
@@ -293,7 +563,18 @@ static const u8 DexDescription_Nidoking_1[] = _(
static const u8 DexDescription_Nidoking_2[] = _(
"Wenn es in Rage gerät, ist es nur schwer\n"
"aufzuhalten.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Piepi_1[] = _(
+ "In Vollmondnächten zeigt sich dieses\n"
+ "POKéMON. Wenn es Tag wird, kehrt \n"
+ "PIEPI zu seinem Zufluchtsort in den");
+static const u8 DexDescription_Piepi_2[] = _(
+ "Bergen zurück und schläft \n"
+ "eingekuschelt neben seinen\n"
+ "Artgenossen ein.");
+#else
static const u8 DexDescription_Piepi_1[] = _(
"In Vollmondnächten sammeln sich einige\n"
"dieser POKéMON, um zu spielen. Wird es \n"
@@ -302,6 +583,7 @@ static const u8 DexDescription_Piepi_2[] = _(
"ort in den Bergen zurück und\n"
"schläft eingekuschelt neben\n"
"seinen Artgenossen ein.");
+#endif
static const u8 DexDescription_Pixi_1[] = _(
"PIXI bewegt sich fort, indem es leicht\n"
@@ -311,6 +593,16 @@ static const u8 DexDescription_Pixi_2[] = _(
"Wasser gehen. Bei Mondschein \n"
"unternimmt es Spaziergänge auf Seen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Vulpix_1[] = _(
+ "In VULPIX’ Körper brennt eine Flamme,\n"
+ "die niemals erlischt. Am Tage, wenn die\n"
+ "Temperaturen steigen, stößt dieses");
+static const u8 DexDescription_Vulpix_2[] = _(
+ "POKéMON Flammen aus seinem Mund aus.\n"
+ "So schützt es sich davor, dass sein\n"
+ "Körper zu heiß wird.");
+#else
static const u8 DexDescription_Vulpix_1[] = _(
"VULPIX kommt mit einem weißen Schweif\n"
"zur Welt. Dieser teilt sich sechsfach, \n"
@@ -319,7 +611,18 @@ static const u8 DexDescription_Vulpix_2[] = _(
"viel Zuneigung bekommt.\n"
"Seine sechs Schweife kräuseln sich\n"
"schließlich.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Vulnona_1[] = _(
+ "Eine Legende besagt, dass VULNONA\n"
+ "zu existieren begann, als neun\n"
+ "Zauberer mit heiligen Kräften zu einem");
+static const u8 DexDescription_Vulnona_2[] = _(
+ "verschmolzen. Dieses POKéMON ist\n"
+ "hochintelligent und versteht die\n"
+ "menschliche Sprache.");
+#else
static const u8 DexDescription_Vulnona_1[] = _(
"VULNONA sendet einen unheimlichen\n"
"Lichtstrahl aus seinen hellroten Augen\n"
@@ -328,7 +631,18 @@ static const u8 DexDescription_Vulnona_2[] = _(
"Gedanken seines Gegners zu erlangen.\n"
"Man sagt, dieses POKéMON könne 1000\n"
"Jahre leben.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pummeluff_1[] = _(
+ "Wenn dieses POKéMON singt, hört es\n"
+ "nicht auf zu atmen. Im Kampf gegen\n"
+ "einen Gegner, der nicht so leicht");
+static const u8 DexDescription_Pummeluff_2[] = _(
+ "in Schlaf zu versetzen ist, kann\n"
+ "PUMMELUFF nicht atmen. Leider\n"
+ "gefährdet es sich dadurch selbst.");
+#else
static const u8 DexDescription_Pummeluff_1[] = _(
"PUMMELUFFs Stimmbänder können die\n"
"Tonlage seiner Stimme beliebig vari-\n"
@@ -336,7 +650,17 @@ static const u8 DexDescription_Pummeluff_1[] = _(
static const u8 DexDescription_Pummeluff_2[] = _(
"Fähigkeit, um seine Gegner mit monoto-\n"
"nem Gesang in Tiefschlaf zu versetzen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Knuddeluff_1[] = _(
+ "KNUDDELUFFs Körper ist sehr dehnbar.\n"
+ "Indem es tief einatmet, kann sich\n"
+ "dieses POKéMON selbst aufblasen.");
+static const u8 DexDescription_Knuddeluff_2[] = _(
+ "Wenn es aufgepumpt ist, hüpft es\n"
+ "wie ein Luftballon umher.");
+#else
static const u8 DexDescription_Knuddeluff_1[] = _(
"KNUDDELUFF hat handtellergroße Augen,\n"
"die immer mit Tränenflüssigkeit bedeckt\n"
@@ -344,7 +668,17 @@ static const u8 DexDescription_Knuddeluff_1[] = _(
static const u8 DexDescription_Knuddeluff_2[] = _(
"POKéMON, so wird dieser sofort ausge-\n"
"spült.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Zubat_1[] = _(
+ "ZUBAT meidet Sonnenlicht, da es dadurch\n"
+ "krank würde. Am Tage hält es sich in\n"
+ "Höhlen oder unter den Dachrinnen alter");
+static const u8 DexDescription_Zubat_2[] = _(
+ "Häuser auf. Dort schläft es mit dem\n"
+ "Kopf nach unten.");
+#else
static const u8 DexDescription_Zubat_1[] = _(
"Tagsüber bleibt ZUBAT an einem dunklen\n"
"Ort und bewegt sich kaum. Wenn es dem \n"
@@ -352,7 +686,18 @@ static const u8 DexDescription_Zubat_1[] = _(
static const u8 DexDescription_Zubat_2[] = _(
"wird, zieht es sich Verbrennungen an\n"
"seinem Körper zu.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Golbat_1[] = _(
+ "GOLBAT beißt seine Beute mit seinen\n"
+ "vier Reißzähnen und trinkt das Blut\n"
+ "seiner Opfer. Es wird in Nächten aktiv,");
+static const u8 DexDescription_Golbat_2[] = _(
+ "in denen nicht einmal der Mond scheint.\n"
+ "Es fliegt dann durch die Dunkelheit und\n"
+ "greift Menschen und POKéMON an.");
+#else
static const u8 DexDescription_Golbat_1[] = _(
"GOLBAT hat es auf das Blut von Lebe-\n"
"wesen abgesehen. Im Schutze der Nacht\n"
@@ -361,7 +706,18 @@ static const u8 DexDescription_Golbat_2[] = _(
"Dieses POKéMON fliegt durch die\n"
"Nacht, um nach frischem Blut zu\n"
"suchen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Myrapla_1[] = _(
+ "MYRAPLA sucht nach fruchtbarem, \n"
+ "nahrhaftem Boden und pflanzt sich\n"
+ "selbst darin ein. Solange es");
+static const u8 DexDescription_Myrapla_2[] = _(
+ "eingepflanzt ist, nehmen seine Füße\n"
+ "tagsüber die Gestalt von Baumwurzeln\n"
+ "an.");
+#else
static const u8 DexDescription_Myrapla_1[] = _(
"Am Tage vergräbt sich MYRAPLA im Boden,\n"
"um mit seinem ganzen Körper Nahrung\n"
@@ -369,7 +725,17 @@ static const u8 DexDescription_Myrapla_1[] = _(
static const u8 DexDescription_Myrapla_2[] = _(
"Je fruchtbarer der Boden ist, desto\n"
"glänzender werden seine Blätter.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Duflor_1[] = _(
+ "Aus DUFLORs Mund tropft übelst\n"
+ "riechender Honig. Diesen Gestank\n"
+ "scheint es zu lieben, denn es");
+static const u8 DexDescription_Duflor_2[] = _(
+ "schnieft die giftigen Dämpfe ein und\n"
+ "sabbert danach noch mehr Honig.");
+#else
static const u8 DexDescription_Duflor_1[] = _(
"DUFLOR produziert einen Ekel\n"
"erregenden Gestank aus dem Stempel\n"
@@ -378,7 +744,17 @@ static const u8 DexDescription_Duflor_2[] = _(
"wird der Gestank noch unerträglicher. \n"
"Wenn sich dieses POKéMON in Sicherheit\n"
"befindet, stößt es keinen Gestank aus.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Giflor_1[] = _(
+ "GIFLOR hat die größten Blätter der Welt.\n"
+ "Sie ziehen Beute an und bestäuben sie\n"
+ "mit giftigen Sporen. Wenn die Beute");
+static const u8 DexDescription_Giflor_2[] = _(
+ "sich nicht mehr rührt, fängt dieses\n"
+ "POKéMON sie und frisst sie auf.");
+#else
static const u8 DexDescription_Giflor_1[] = _(
"GIFLORs giftige Pollen rufen böse\n"
"allergische Anfälle hervor. Deshalb ist\n"
@@ -386,7 +762,18 @@ static const u8 DexDescription_Giflor_1[] = _(
static const u8 DexDescription_Giflor_2[] = _(
"Dschungel zu nähern, so anziehend sie\n"
"auch sein mag.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Paras_1[] = _(
+ "Auf PARAS’ Rücken wachsen parasitäre\n"
+ "Pilze, die Tochukaso genannt werden.\n"
+ "Sie wachsen, indem sie diesem");
+static const u8 DexDescription_Paras_2[] = _(
+ "KÄFER-/PFLANZEN-PKMN Nährstoffe\n"
+ "entziehen. Sie sind sehr wertvoll als\n"
+ "lebensverlängernde Medizin.");
+#else
static const u8 DexDescription_Paras_1[] = _(
"Auf PARAS’ Rücken wachsen parasitäre\n"
"Pilze, die Tochukaso genannt werden.\n"
@@ -395,7 +782,18 @@ static const u8 DexDescription_Paras_2[] = _(
"KÄFER/PFLANZEN-PKMN Nährstoffe\n"
"entziehen. Sie sind sehr wertvoll als\n"
"lebensverlängernde Medizin.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Parasek_1[] = _(
+ "PARASEK sucht große Bäume heim und\n"
+ "entzieht Nährstoffe aus Stamm und \n"
+ "Wurzeln.");
+static const u8 DexDescription_Parasek_2[] = _(
+ "Wenn ein befallener Baum stirbt, sucht\n"
+ "es sich zusammen mit seinen \n"
+ "Artgenossen einen neuen Wirt.");
+#else
static const u8 DexDescription_Parasek_1[] = _(
"PARASEK sucht große Bäume heim und\n"
"entzieht Nährstoffe aus Stamm und \n"
@@ -404,6 +802,7 @@ static const u8 DexDescription_Parasek_2[] = _(
"Wenn ein befallener Baum stirbt, sucht\n"
"es sich zusammen mit seinen Artge-\n"
"nossen einen neuen Wirt.");
+#endif
static const u8 DexDescription_Bluzuk_1[] = _(
"BLUZUK hat einen Pelz aus dünnen\n"
@@ -413,6 +812,15 @@ static const u8 DexDescription_Bluzuk_2[] = _(
"Es hat große Augen, denen auch winzig\n"
"kleine Beute nicht entgeht.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Omot_1[] = _(
+ "OMOT ist ein nachtaktives POKéMON.\n"
+ "Kleine Insekten, die vom Licht in der\n"
+ "Dunkelheit angezogen, Straßenlaternen");
+static const u8 DexDescription_Omot_2[] = _(
+ "umschwärmen, sind seine bevorzugte\n"
+ "Beute.");
+#else
static const u8 DexDescription_Omot_1[] = _(
"OMOT ist ein nachtaktives POKéMON.\n"
"Kleine Insekten, die vom Licht in der\n"
@@ -420,6 +828,7 @@ static const u8 DexDescription_Omot_1[] = _(
static const u8 DexDescription_Omot_2[] = _(
"umschwärmen, sind seine bevorzugte\n"
"Beute.");
+#endif
static const u8 DexDescription_Digda_1[] = _(
"DIGDA wird zumeist auf Farmen\n"
@@ -438,6 +847,15 @@ static const u8 DexDescription_Digdri_2[] = _(
"Sie arbeiten so gut zusammen, dass sie \n"
"endlos graben können.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Mauzi_1[] = _(
+ "MAUZI zieht seine scharfen Krallen ein,\n"
+ "um umherschleichen zu können, ohne\n"
+ "verräterische Spuren zu hinterlassen.");
+static const u8 DexDescription_Mauzi_2[] = _(
+ "Dieses POKéMON hat eine Vorliebe für\n"
+ "Münzen, die das Licht reflektieren.");
+#else
static const u8 DexDescription_Mauzi_1[] = _(
"MAUZI zieht seine scharfen Krallen ein,\n"
"um umherschleichen zu können, ohne\n"
@@ -445,6 +863,7 @@ static const u8 DexDescription_Mauzi_1[] = _(
static const u8 DexDescription_Mauzi_2[] = _(
"Dieses POKéMON hat eine Vorliebe für\n"
"Münzen, die im Licht glitzern.");
+#endif
static const u8 DexDescription_Snobilikat_1[] = _(
"SNOBILIKAT hat sechs dicke Schnurr-\n"
@@ -455,6 +874,16 @@ static const u8 DexDescription_Snobilikat_2[] = _(
"wird sehr zutraulich, wenn man es an den\n"
"Schnurrhaaren berührt.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Enton_1[] = _(
+ "ENTON besitzt mystische Kräfte. Wenn\n"
+ "es sie einsetzt, erinnert es sich nicht\n"
+ "mehr daran. Es kann ein solches");
+static const u8 DexDescription_Enton_2[] = _(
+ "Ereignis offensichtlich nicht im Ge-\n"
+ "dächtnis behalten, da es sich in einen\n"
+ "tiefschlafähnlichen Zustand versetzt.");
+#else
static const u8 DexDescription_Enton_1[] = _(
"ENTON verwendet eine geheimnisvolle\n"
"Kraft. Dabei erzeugt es Gehirnströme,\n"
@@ -463,7 +892,18 @@ static const u8 DexDescription_Enton_2[] = _(
"kennt. Diese Entdeckung führte zu \n"
"einer umstrittenen Diskussion unter\n"
"Wissenschaftlern.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Entoron_1[] = _(
+ "ENTORON ist der schnellste Schwimmer\n"
+ "von allen POKéMON. Es schwimmt mit\n"
+ "Leichtigkeit auch durch eine raue,");
+static const u8 DexDescription_Entoron_2[] = _(
+ "stürmische See. Manchmal rettet es\n"
+ "Menschen, die in Seenot geraten sind\n"
+ "und auf dem Meer treiben.");
+#else
static const u8 DexDescription_Entoron_1[] = _(
"Die schwimmhäutigen Flossen an seinen\n"
"Vorder- und Hinterbeinen und der \n"
@@ -472,7 +912,17 @@ static const u8 DexDescription_Entoron_2[] = _(
"ENTORON unheimlich schnell. Dieses\n"
"POKéMON ist auf jeden Fall schneller als\n"
"die meisten Hochleistungsschwimmer.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Menki_1[] = _(
+ "Wenn MENKI sich schüttelt und schwer\n"
+ "durch die Nase atmet, dann ist es \n"
+ "wütend. Da es blitzartig in Raserei");
+static const u8 DexDescription_Menki_2[] = _(
+ "gerät, ist es unmöglich, seinem Zorn\n"
+ "zu entkommen.");
+#else
static const u8 DexDescription_Menki_1[] = _(
"Wenn MENKI sich schüttelt und schwer\n"
"durch die Nase atmet, dann ist es \n"
@@ -480,7 +930,17 @@ static const u8 DexDescription_Menki_1[] = _(
static const u8 DexDescription_Menki_2[] = _(
"gerät, ist es unmöglich seinem Zorn\n"
"zu entkommen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Rasaff_1[] = _(
+ "Wenn RASAFF wütend ist, wird seine Blut-\n"
+ "zirkulation gesteigert und seine Mus-\n"
+ "keln werden noch stärker.");
+static const u8 DexDescription_Rasaff_2[] = _(
+ "Allerdings sinkt dabei auch die\n"
+ "Fähigkeit logischen Denkens.");
+#else
static const u8 DexDescription_Rasaff_1[] = _(
"Wenn RASAFF wütend ist, wird seine Blut-\n"
"zirkulation gesteigert und seine Mus-\n"
@@ -488,7 +948,18 @@ static const u8 DexDescription_Rasaff_1[] = _(
static const u8 DexDescription_Rasaff_2[] = _(
"Allerdings mindert das auch die \n"
"Fähigkeit zum logischen Denken.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Fukano_1[] = _(
+ "FUKANO hat einen ausgezeichneten Ge-\n"
+ "ruchssinn. Wenn dieses POKéMON ein-\n"
+ "mal einen Geruch wahrgenommen hat,");
+static const u8 DexDescription_Fukano_2[] = _(
+ "vergisst es ihn nicht mehr. Es benutzt\n"
+ "diese Fähigkeit dazu, die Gefühlslage\n"
+ "von Lebewesen zu erkennen.");
+#else
static const u8 DexDescription_Fukano_1[] = _(
"FUKANO hat einen ausgezeichneten Ge-\n"
"ruchssinn. Wenn dieses POKéMON ein-\n"
@@ -497,6 +968,7 @@ static const u8 DexDescription_Fukano_2[] = _(
"vergisst es ihn nicht mehr. Es benutzt\n"
"diese Fähigkeit dazu, die Gefühlslage\n"
"von Lebewesen auszuloten.");
+#endif
static const u8 DexDescription_Arkani_1[] = _(
"ARKANI ist sehr schnell. Es kann an\n"
@@ -521,6 +993,14 @@ static const u8 DexDescription_Quaputzi_1[] = _(
static const u8 DexDescription_Quaputzi_2[] = _(
"eines Gegners entkommen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Quappo_1[] = _(
+ "QUAPPO besitzt hochentwickelte, starke\n"
+ "Muskeln, die niemals ermüden. Es ist so\n"
+ "kräftig, dass es mühelos den Pazifik");
+static const u8 DexDescription_Quappo_2[] = _(
+ "durchschwimmen kann.");
+#else
static const u8 DexDescription_Quappo_1[] = _(
"QUAPPO besitzt hochentwickelte, starke\n"
"Muskeln, die niemals ermüden, egal, wie\n"
@@ -528,7 +1008,17 @@ static const u8 DexDescription_Quappo_1[] = _(
static const u8 DexDescription_Quappo_2[] = _(
"Es ist so kräftig, dass es mühelos den\n"
"Pazifik durchschwimmen kann.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Abra_1[] = _(
+ "ABRA braucht achtzehn Stunden Schlaf\n"
+ "pro Tag, sonst verliert es die Fähigkeit,\n"
+ "seine telekinetischen Kräfte zu");
+static const u8 DexDescription_Abra_2[] = _(
+ "nutzen. ABRA flüchtet mit Hilfe des\n"
+ "TELEPORT, schläft dabei aber weiter.");
+#else
static const u8 DexDescription_Abra_1[] = _(
"ABRA schläft 18 Stunden am Tag.\n"
"Es nimmt die Gegenwart von Feinden\n"
@@ -537,7 +1027,18 @@ static const u8 DexDescription_Abra_2[] = _(
"In einer solchen Situation bringt es\n"
"sich umgehend mit TELEPORT in\n"
"Sicherheit.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kadabra_1[] = _(
+ "KADABRA hält einen silbernen Löffel in\n"
+ "der Hand. Es verstärkt damit die\n"
+ "Alphawellen in seinem Gehirn. Ohne den");
+static const u8 DexDescription_Kadabra_2[] = _(
+ "Löffel könnte dieses POKéMON nur die\n"
+ "Hälfte seiner telekinetischen Kräfte\n"
+ "nutzen.");
+#else
static const u8 DexDescription_Kadabra_1[] = _(
"KADABRA sendet Alphawellen aus, wenn es\n"
"Kopfschmerzen hat. Nur wer eine beson-\n"
@@ -545,7 +1046,18 @@ static const u8 DexDescription_Kadabra_1[] = _(
static const u8 DexDescription_Kadabra_2[] = _(
"dieses POKéMON unter seine Fittiche\n"
"nehmen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Simsala_1[] = _(
+ "SIMSALAs Hirn wächst stetig weiter und\n"
+ "seine Gehirnzellen werden unendlich\n"
+ "vervielfacht. Durch sein verblüffendes");
+static const u8 DexDescription_Simsala_2[] = _(
+ "Gehirn erreicht dieses POKéMON einen IQ\n"
+ "von 5.000. Es erinnert sich an alles, was\n"
+ "in der Welt passiert ist.");
+#else
static const u8 DexDescription_Simsala_1[] = _(
"SIMSALAs Gehirn hört nicht auf zu\n"
"wachsen, so dass sein Kopf zu schwer\n"
@@ -553,7 +1065,17 @@ static const u8 DexDescription_Simsala_1[] = _(
static const u8 DexDescription_Simsala_2[] = _(
"Dieses POKéMON hält seinen Kopf mit\n"
"psychokinetischer Energie aufrecht.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Machollo_1[] = _(
+ "MACHOLLO trainiert, indem es ein GEOROK\n"
+ "hochhebt, als wäre es eine Hantel. Es\n"
+ "gibt auch MACHOLLO, die durch die Welt");
+static const u8 DexDescription_Machollo_2[] = _(
+ "reisen, um alle Arten der Kampfkunst \n"
+ "zu erlernen.");
+#else
static const u8 DexDescription_Machollo_1[] = _(
"MACHOLLOs Muskeln sind etwas Beson-\n"
"deres. Sie schmerzen nie, egal, wie sehr\n"
@@ -561,7 +1083,17 @@ static const u8 DexDescription_Machollo_1[] = _(
static const u8 DexDescription_Machollo_2[] = _(
"Dieses POKéMON hat genug Kraft, um 100\n"
"Erwachsene umherzuwerfen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Maschock_1[] = _(
+ "MASCHOCK stählt seinen Körper jeden\n"
+ "Tag, zum Beispiel indem es Menschen bei\n"
+ "einer harten körperlichen Arbeit hilft.");
+static const u8 DexDescription_Maschock_2[] = _(
+ "An seinen freien Tagen begibt es sich\n"
+ "auf Felder und Berge, um zu trainieren.");
+#else
static const u8 DexDescription_Maschock_1[] = _(
"MASCHOCKs starke Muskeln sind so hart\n"
"wie Stahl. Dieses POKéMON hat so viel\n"
@@ -569,7 +1101,18 @@ static const u8 DexDescription_Maschock_1[] = _(
static const u8 DexDescription_Maschock_2[] = _(
"einen Sumo-Ringer in der Luft halten\n"
"kann.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Machomei_1[] = _(
+ "MACHOMEI wurde berühmt, da es alle\n"
+ "Arten der Kampfkunst beherrscht. Wenn\n"
+ "es einen Gegner mit seinen vier Armen zu");
+static const u8 DexDescription_Machomei_2[] = _(
+ "fassen gekriegt hat, ist der Kampf noch\n"
+ "nicht vorbei. Es schleudert ihn dann\n"
+ "nämlich weit über den Horizont hinaus.");
+#else
static const u8 DexDescription_Machomei_1[] = _(
"MACHOMEI hat genug Kraft, um alles \n"
"Mögliche zu stemmen. Bei Tätigkeiten,\n"
@@ -578,7 +1121,18 @@ static const u8 DexDescription_Machomei_2[] = _(
"machen es ihm seine Arme jedoch nicht\n"
"leicht. Dieses POKéMON neigt dazu,\n"
"zuerst zu handeln und dann zu denken.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Knofensa_1[] = _(
+ "KNOFENSAs schlanker und elastischer\n"
+ "Körper ermöglicht es ihm, jeglichem\n"
+ "Angriff auszuweichen, so heftig dieser");
+static const u8 DexDescription_Knofensa_2[] = _(
+ "auch sein mag. Dieses POKéMON spuckt\n"
+ "eine ätzende Flüssigkeit aus, die sogar\n"
+ "Eisen zersetzen kann.");
+#else
static const u8 DexDescription_Knofensa_1[] = _(
"KNOFENSAs schlanker und elastischer\n"
"Körper ermöglicht es ihm, jedem\n"
@@ -587,7 +1141,18 @@ static const u8 DexDescription_Knofensa_2[] = _(
"auch sein mag. Dieses POKéMON spuckt\n"
"eine ätzende Flüssigkeit aus, die sogar\n"
"Eisen zersetzen kann.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Ultrigaria_1[] = _(
+ "ULTRIGARIA hat einen großen Haken\n"
+ "an seinem Hinterteil. Nachts hängt\n"
+ "sich dieses POKéMON zum Schlafen an");
+static const u8 DexDescription_Ultrigaria_2[] = _(
+ "einen Ast. Wenn es sich im Schlaf \n"
+ "bewegt, kann es passieren, dass es auf\n"
+ "dem Boden wieder aufwacht.");
+#else
static const u8 DexDescription_Ultrigaria_1[] = _(
"ULTRIGARIA hat einen großen Haken\n"
"an seinem Hinterteil. Nachts hängt\n"
@@ -596,6 +1161,7 @@ static const u8 DexDescription_Ultrigaria_2[] = _(
"einen Ast. Wenn es sich im Schlaf be-\n"
"wegt, kann es passieren, dass es auf\n"
"dem Boden wieder aufwacht.");
+#endif
static const u8 DexDescription_Sarzenia_1[] = _(
"Aus SARZENIAs Kopf ragt eine lange\n"
@@ -606,6 +1172,16 @@ static const u8 DexDescription_Sarzenia_2[] = _(
"nähert, wird sie von diesem POKéMON\n"
"im Ganzen verschlungen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tentacha_1[] = _(
+ "TENTACHA nimmt Sonnenlicht auf und\n"
+ "bricht es in seinem Körper mit Hilfe von\n"
+ "Wasser, um es in Strahlenenergie");
+static const u8 DexDescription_Tentacha_2[] = _(
+ "umzuwandeln. Dieses POKéMON verschießt\n"
+ "Strahlen aus seinen kristallartigen\n"
+ "Augen.");
+#else
static const u8 DexDescription_Tentacha_1[] = _(
"TENTACHAs Körper setzt sich zum größ-\n"
"ten Teil aus Wasser zusammen. Wenn es\n"
@@ -614,7 +1190,18 @@ static const u8 DexDescription_Tentacha_2[] = _(
"Wenn dieses POKéMON auszutrocknen be-\n"
"ginnt, sollte man es schnell wieder ins\n"
"Wasser zurückbringen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tentoxa_1[] = _(
+ "TENTOXA besitzt Tentakel, die es\n"
+ "jederzeit ausfahren und einziehen\n"
+ "kann. Es fängt damit Beute und");
+static const u8 DexDescription_Tentoxa_2[] = _(
+ "schwächt diese, indem es ihr ein\n"
+ "starkes Gift verabreicht. Es kann bis\n"
+ "zu 80 Opfer gleichzeitig fangen.");
+#else
static const u8 DexDescription_Tentoxa_1[] = _(
"TENTOXA hat große, rote Kugeln auf \n"
"seinem Kopf. Sie glühen auf, bevor sie \n"
@@ -623,7 +1210,18 @@ static const u8 DexDescription_Tentoxa_2[] = _(
"erschüttern. Ein Ausbruch dieses \n"
"POKéMON erzeugt starke Wellen \n"
"in seiner Umgebung.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kleinstein_1[] = _(
+ "Wenn KLEINSTEIN tief und fest schläft,\n"
+ "gräbt es sich selbst zur Hälfte im Boden\n"
+ "ein. Selbst wenn Wanderer versehentlich");
+static const u8 DexDescription_Kleinstein_2[] = _(
+ "auf KLEINSTEIN treten, wacht es nicht\n"
+ "auf. Am Morgen rollt es auf der Suche\n"
+ "nach Nahrung den Berg herunter.");
+#else
static const u8 DexDescription_Kleinstein_1[] = _(
"Je länger ein KLEINSTEIN lebt, desto\n"
"mehr wird seine raue Oberfläche ab-\n"
@@ -631,7 +1229,18 @@ static const u8 DexDescription_Kleinstein_1[] = _(
static const u8 DexDescription_Kleinstein_2[] = _(
"Das Herz dieses POKéMON bleibt aber\n"
"für immer versteinert, hart und rau.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Georok_1[] = _(
+ "Steine sind GEOROKs Lieblingsspeise.\n"
+ "Dieses POKéMON klettert vom Fuße\n"
+ "eines Berges zu seinem Gipfel empor");
+static const u8 DexDescription_Georok_2[] = _(
+ "und zermalmt dabei das Gestein. Wenn es\n"
+ "den Gipfel erreicht hat, rollt es wieder\n"
+ "herunter.");
+#else
static const u8 DexDescription_Georok_1[] = _(
"GEOROK wächst, indem es sich von Stei-\n"
"nen ernährt. Am liebsten mag es Steine,\n"
@@ -639,14 +1248,36 @@ static const u8 DexDescription_Georok_1[] = _(
static const u8 DexDescription_Georok_2[] = _(
"Dieses POKéMON frisst sich täglich\n"
"durch eine riesige Menge von Steinen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Geowaz_1[] = _(
+ "GEOWAZ ist dafür bekannt, dass es\n"
+ "Berghänge herunterrollt. Damit es nicht\n"
+ "in die Häuser der Menschen hineinrollt,");
+static const u8 DexDescription_Geowaz_2[] = _(
+ "wurden Gräben so an den Bergen\n"
+ "angelegt, dass der Weg dieses POKéMON\n"
+ "umgeleitet wird.");
+#else
static const u8 DexDescription_Geowaz_1[] = _(
"GEOWAZ lebt hoch in den Bergen. Gibt es \n"
"ein starkes Erdbeben, rollt dieses\n"
"POKéMON so lange den Berg hinunter,");
static const u8 DexDescription_Geowaz_2[] = _(
"bis es schließlich unten angekommen ist.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Ponita_1[] = _(
+ "Nach seiner Geburt ist PONITA sehr\n"
+ "schwach. Es braucht sehr lange, bis es\n"
+ "auf allen Vieren steht. Dieses POKéMON");
+static const u8 DexDescription_Ponita_2[] = _(
+ "wird stärker, da es bei dem Versuch, mit\n"
+ "seinen Eltern Schritt zu halten, immer\n"
+ "wieder stolpert und hinfällt.");
+#else
static const u8 DexDescription_Ponita_1[] = _(
"Nach seiner Geburt ist PONITA so\n"
"schwach, dass es kaum von alleine\n"
@@ -655,7 +1286,18 @@ static const u8 DexDescription_Ponita_2[] = _(
"dadurch schnell stärker, dass es sich\n"
"beim Versuch, mit seinen Eltern Schritt\n"
"zu halten, immer wieder aufrappeln muss.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Gallopa_1[] = _(
+ "Man kann GALLOPA dabei beobachten, \n"
+ "wie es fröhlich über Felder und Wiesen\n"
+ "galoppiert. Wenn dieses POKéMON");
+static const u8 DexDescription_Gallopa_2[] = _(
+ "jedoch Ernst macht, erreicht es bis zu\n"
+ "240 km/h. Dann beginnt seine Mähne\n"
+ "zu lodern.");
+#else
static const u8 DexDescription_Gallopa_1[] = _(
"Man kann GALLOPA dabei beobachten, \n"
"wie es lässig über Felder und Wiesen\n"
@@ -664,6 +1306,7 @@ static const u8 DexDescription_Gallopa_2[] = _(
"jedoch Ernst macht, erreicht es bis zu\n"
"240 km/h. Dann beginnt seine Mähne\n"
"zu lodern.");
+#endif
static const u8 DexDescription_Flegmon_1[] = _(
"FLEGMON benutzt seinen Schweif, um \n"
@@ -674,6 +1317,16 @@ static const u8 DexDescription_Flegmon_2[] = _(
"gerade tun wollte, und verbringt ganze \n"
"Tage damit, am Ufer herumzutrödeln.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Lahmus_1[] = _(
+ "An LAHMUS’ Schweif hat sich ein \n"
+ "MUSCHAS festgebissen. Daher kann es\n"
+ "ihn nicht mehr zum Fischen benutzen");
+static const u8 DexDescription_Lahmus_2[] = _(
+ "und ist dazu gezwungen, umherzu-\n"
+ "schwimmen und Ausschau nach Beute zu\n"
+ "halten.");
+#else
static const u8 DexDescription_Lahmus_1[] = _(
"An LAHMUS’ Rute hat sich ein MUSCHAS\n"
"festgebissen. Daher kann es ihn nicht\n"
@@ -682,7 +1335,18 @@ static const u8 DexDescription_Lahmus_2[] = _(
"und es ist dazu gezwungen, umherzu-\n"
"schwimmen und nach Beute Ausschau\n"
"zu halten.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Magnetilo_1[] = _(
+ "MAGNETILO segelt durch die Luft und \n"
+ "sendet dabei elektromagnetische Wellen\n"
+ "an beiden Seiten seines Körpers aus.");
+static const u8 DexDescription_Magnetilo_2[] = _(
+ "Dieses POKéMON wird flugunfähig, wenn\n"
+ "die Stromquelle in seinem Inneren\n"
+ "erschöpft ist.");
+#else
static const u8 DexDescription_Magnetilo_1[] = _(
"MAGNETILO ernährt sich von Elektri-\n"
"zität aus Stromleitungen. Dieses\n"
@@ -691,7 +1355,18 @@ static const u8 DexDescription_Magnetilo_2[] = _(
"Sicherungskästen. Wenn es in deinem\n"
"Haus zu einem Stromausfall kommt,\n"
"solltest du die Sicherungen überprüfen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Magneton_1[] = _(
+ "MAGNETON strahlt eine starke magne-\n"
+ "tische Energie ab, die für elektronische\n"
+ "Geräte und Präzisionsinstrumente sehr");
+static const u8 DexDescription_Magneton_2[] = _(
+ "schädlich ist. In einigen Städten\n"
+ "werden die Bewohner gebeten, dieses\n"
+ "POKéMON in einem POKéBALL zu halten.");
+#else
static const u8 DexDescription_Magneton_1[] = _(
"MAGNETON erzeugt ein sehr starkes Mag-\n"
"netfeld, das Maschinen zerstören kann.\n"
@@ -699,7 +1374,18 @@ static const u8 DexDescription_Magneton_1[] = _(
static const u8 DexDescription_Magneton_2[] = _(
"Sirenen, die die Bürger vor Scharen\n"
"dieses POKéMON warnen sollen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Porenta_1[] = _(
+ "PORENTA trifft man immer mit einem\n"
+ "Stock irgendeiner Pflanze an. Es gibt\n"
+ "gute und schlechte Stöcke.");
+static const u8 DexDescription_Porenta_2[] = _(
+ "Von diesem POKéMON wird behauptet, es \n"
+ "kämpfe gegen die eigenen Artgenossen\n"
+ "um die besten Stöcke.");
+#else
static const u8 DexDescription_Porenta_1[] = _(
"PORENTA trifft man immer mit einer\n"
"Lauchstange an. Es gibt gute und\n"
@@ -707,14 +1393,35 @@ static const u8 DexDescription_Porenta_1[] = _(
static const u8 DexDescription_Porenta_2[] = _(
"Dieses POKéMON kämpft mit Hilfe seiner\n"
"Stange gegen seine Gegner.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Dodu_1[] = _(
+ "DODU hat zwei Köpfe mit absolut\n"
+ "identischen Gehirnen. Eine wissen-\n"
+ "schaftliche Studie hat allerdings");
+static const u8 DexDescription_Dodu_2[] = _(
+ "nachgewiesen, dass es auch Exemplare\n"
+ "dieses POKéMON gibt, die zwei\n"
+ "unterschiedliche Gehirne haben.");
+#else
static const u8 DexDescription_Dodu_1[] = _(
"DODU hat zwei Köpfe, die nie zur \n"
"selben Zeit, sondern abwechselnd\n"
"schlafen. Während ein Kopf schläft,");
static const u8 DexDescription_Dodu_2[] = _(
"hält der andere Ausschau nach Feinden.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Dodri_1[] = _(
+ "DODRI hat nicht nur drei Köpfe, auch\n"
+ "andere Körperteile sind dreifach\n"
+ "vorhanden. Es besitzt drei Herzen und");
+static const u8 DexDescription_Dodri_2[] = _(
+ "drei Lungen, so dass es lange Strecken\n"
+ "ohne Pause rennen kann.");
+#else
static const u8 DexDescription_Dodri_1[] = _(
"DODRIs drei Köpfe blicken in drei ver-\n"
"schiedene Richtungen. Es ist immer auf\n"
@@ -723,7 +1430,17 @@ static const u8 DexDescription_Dodri_2[] = _(
"Du solltest dich diesem POKéMON nicht\n"
"nähern, wenn es bereits misstrauisch \n"
"ist. Es könnte nach dir hacken.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Jurob_1[] = _(
+ "JUROB jagt unter der frostigen Ober-\n"
+ "fläche des Eismeeres nach Beute. Zum\n"
+ "Luft holen schlägt es mit dem");
+static const u8 DexDescription_Jurob_2[] = _(
+ "vorstehenden Teil seines Kopfes ein \n"
+ "Loch ins Eis.");
+#else
static const u8 DexDescription_Jurob_1[] = _(
"JUROB jagt unter der eisigen Ober-\n"
"fläche des Eismeeres nach Beute. Zum\n"
@@ -731,7 +1448,17 @@ static const u8 DexDescription_Jurob_1[] = _(
static const u8 DexDescription_Jurob_2[] = _(
"vorstehenden Teil seines Kopfes ein \n"
"Loch ins Eis.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Jugong_1[] = _(
+ "JUGONG liebt es, auf bitterkalten \n"
+ "Eisschollen ein Nickerchen zu machen.\n"
+ "Ein Seemann, der ein solches POKéMON");
+static const u8 DexDescription_Jugong_2[] = _(
+ "eines Tages auf einem Eisberg schlafen\n"
+ "sah, hielt es für eine Meerjungfrau.");
+#else
static const u8 DexDescription_Jugong_1[] = _(
"JUGONG liebt es, auf bitterkalten Eis-\n"
"schollen ein Nickerchen zu machen.\n"
@@ -740,7 +1467,18 @@ static const u8 DexDescription_Jugong_2[] = _(
"POKéMON schlafend auf einem\n"
"Eisberg sah, hielt es irrtümlicherweise\n"
"für eine Meerjungfrau.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Sleima_1[] = _(
+ "SLEIMA ist aus dem Schlamm eines\n"
+ "verseuchten Flussbetts entstanden.\n"
+ "Dieses POKéMON liebt verschmutzte");
+static const u8 DexDescription_Sleima_2[] = _(
+ "Dinge. Es scheidet ständig eine mit\n"
+ "Bakterien verseuchte Flüssigkeit aus\n"
+ "seinem ganzen Körper aus.");
+#else
static const u8 DexDescription_Sleima_1[] = _(
"SLEIMAs glitschiger, gummiartiger\n"
"Körper passt durch jede noch so kleine\n"
@@ -748,14 +1486,35 @@ static const u8 DexDescription_Sleima_1[] = _(
static const u8 DexDescription_Sleima_2[] = _(
"Kanalisation hinab, um fauliges\n"
"Abwasser zu trinken.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Sleimok_1[] = _(
+ "SLEIMOKs Lieblingsspeise ist alles, was\n"
+ "widerlich verschmutzt ist. In dreckigen\n"
+ "Städten, in denen sich Menschen nichts");
+static const u8 DexDescription_Sleimok_2[] = _(
+ "dabei denken, wenn sie Müll auf die\n"
+ "Straße werfen, lassen sich diese\n"
+ "POKéMON mit Vorliebe in Scharen nieder.");
+#else
static const u8 DexDescription_Sleimok_1[] = _(
"SLEIMOK scheidet eine widerlich\n"
"stinkende Substanz aus. Ein einziger\n"
"Tropfen seiner Körpersubstanz reicht");
static const u8 DexDescription_Sleimok_2[] = _(
"aus, um ein Gewässer zu verseuchen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Muschas_1[] = _(
+ "Nachts verwendet dieses POKéMON seine\n"
+ "breite Zunge, um ein Loch in den \n"
+ "Meeresboden zu graben. Darin schläft");
+static const u8 DexDescription_Muschas_2[] = _(
+ "es. Dabei schließt es seine Schale,\n"
+ "lässt aber seine Zunge heraushängen.");
+#else
static const u8 DexDescription_Muschas_1[] = _(
"Nachts benutzt dieses POKéMON seine\n"
"breite Zunge, um ein Loch in den \n"
@@ -764,7 +1523,17 @@ static const u8 DexDescription_Muschas_2[] = _(
"Darin schläft es. Dabei schließt es\n"
"seine Schale, aber die Zunge hängt\n"
"heraus.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Austos_1[] = _(
+ "AUSTOS kann im Meerwasser schwimmen,\n"
+ "indem es Wasser schluckt und mit Druck\n"
+ "wieder herausspritzt.");
+static const u8 DexDescription_Austos_2[] = _(
+ "Auf dieselbe Weise verschießt dieses\n"
+ "POKéMON scharfe Stacheln.");
+#else
static const u8 DexDescription_Austos_1[] = _(
"AUSTOS kann im Meerwasser schwimmen,\n"
"indem es Wasser schluckt und wieder\n"
@@ -773,6 +1542,7 @@ static const u8 DexDescription_Austos_2[] = _(
"Dieses POKéMON kann sich auch ver- \n"
"teidigen, indem es spitze Stacheln mit\n"
"Hilfe des Wasserdrucks verschießt.");
+#endif
static const u8 DexDescription_Nebulak_1[] = _(
"NEBULAK hat einen gasförmigen Körper.\n"
@@ -783,6 +1553,16 @@ static const u8 DexDescription_Nebulak_2[] = _(
"unter Dachrinnen, um sich vor dem\n"
"gefährlichen Wind zu schützen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Alpollo_1[] = _(
+ "ALPOLLO ist ein gefährliches POKéMON.\n"
+ "Wenn es dir ein Zeichen gibt, während es\n"
+ "durch die Dunkelheit schwebt, darfst");
+static const u8 DexDescription_Alpollo_2[] = _(
+ "du es nicht berühren. Dieses POKéMON\n"
+ "wird versuchen, an dir zu lecken und\n"
+ "dein Leben zu stehlen.");
+#else
static const u8 DexDescription_Alpollo_1[] = _(
"ALPOLLO ist ein gefährliches POKéMON.\n"
"Wenn es dich zu sich lockt, während es\n"
@@ -791,6 +1571,7 @@ static const u8 DexDescription_Alpollo_2[] = _(
"du ihm keinesfalls zu nahe kommen.\n"
"Dieses POKéMON wird versuchen, an dir\n"
"zu lecken und dein Leben zu stehlen.");
+#endif
static const u8 DexDescription_Gengar_1[] = _(
"Nachts kann es passieren, dass dich\n"
@@ -810,6 +1591,16 @@ static const u8 DexDescription_Onix_2[] = _(
"älter wird, wird sein Körper immer\n"
"runder und glatter.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Traumato_1[] = _(
+ "Wenn dir im Schlaf die Nase juckt, ist\n"
+ "das ein sicheres Zeichen dafür, dass\n"
+ "eines dieser POKéMON über deinem");
+static const u8 DexDescription_Traumato_2[] = _(
+ "Kissen schwebt, um deinen Traum durch\n"
+ "deine Nasenlöcher hindurch zu\n"
+ "verspeisen.");
+#else
static const u8 DexDescription_Traumato_1[] = _(
"Wenn dir im Schlaf die Nase juckt, ist\n"
"das ein sicheres Zeichen dafür, dass\n"
@@ -818,6 +1609,7 @@ static const u8 DexDescription_Traumato_2[] = _(
"Kissen sitzt, um deinen Traum durch\n"
"deine Nasenlöcher hindurch zu\n"
"verspeisen.");
+#endif
static const u8 DexDescription_Hypno_1[] = _(
"HYPNO hält ein Pendel in der Hand. Das\n"
@@ -828,6 +1620,14 @@ static const u8 DexDescription_Hypno_2[] = _(
"der Suche nach Beute ist, poliert es \n"
"sein Pendel.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Krabby_1[] = _(
+ "KRABBY lebt an Stränden, in Löchern im \n"
+ "Sand. An Sandstränden, an denen es\n"
+ "wenig Nahrung findet, sieht man dieses");
+static const u8 DexDescription_Krabby_2[] = _(
+ "POKéMON mit Artgenossen streiten.");
+#else
static const u8 DexDescription_Krabby_1[] = _(
"KRABBY lebt an Stränden, in Löchern im \n"
"Sand. An Sandstränden, an denen es\n"
@@ -835,6 +1635,7 @@ static const u8 DexDescription_Krabby_1[] = _(
static const u8 DexDescription_Krabby_2[] = _(
"POKéMON mit Artgenossen um sein\n"
"Revier streiten.");
+#endif
static const u8 DexDescription_Kingler_1[] = _(
"KINGLER hat eine riesige Schere. Es\n"
@@ -844,6 +1645,16 @@ static const u8 DexDescription_Kingler_2[] = _(
"Da seine Schere aber so schwer ist, wird\n"
"dieses POKéMON schnell müde.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Voltobal_1[] = _(
+ "VOLTOBAL ist äußerst empfindlich, es\n"
+ "explodiert schon bei der leichtesten\n"
+ "Erschütterung. Man munkelt, es");
+static const u8 DexDescription_Voltobal_2[] = _(
+ "sei entstanden, als ein POKéBALL einen\n"
+ "starken elektrischen Schlag bekommen\n"
+ "hat.");
+#else
static const u8 DexDescription_Voltobal_1[] = _(
"VOLTOBAL wurde zuerst bei einer Firma\n"
"beobachtet, die POKéBÄLLE herstellt.\n"
@@ -852,7 +1663,18 @@ static const u8 DexDescription_Voltobal_2[] = _(
"Beobachtung und der Tatsache, dass\n"
"dieses POKéMON wie ein POKéBALL\n"
"aussieht, ist noch ungeklärt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Lektrobal_1[] = _(
+ "Typisch für LEKTROBAL ist seine große\n"
+ "Faszination für Elektrizität. Es ist ein\n"
+ "problematisches POKéMON, das sich");
+static const u8 DexDescription_Lektrobal_2[] = _(
+ "meistens in Kraftwerken niederlässt, wo\n"
+ "es sich von frisch erzeugtem Strom\n"
+ "ernähren kann.");
+#else
static const u8 DexDescription_Lektrobal_1[] = _(
"LEKTROBAL ernährt sich von\n"
"Elektrizität aus der Atmosphäre. An\n"
@@ -860,6 +1682,7 @@ static const u8 DexDescription_Lektrobal_1[] = _(
static const u8 DexDescription_Lektrobal_2[] = _(
"dieses POKéMON dauernd, da es zu viel\n"
"Elektrizität zu sich nimmt.");
+#endif
static const u8 DexDescription_Owei_1[] = _(
"Dieses POKéMON besteht aus sechs\n"
@@ -921,13 +1744,34 @@ static const u8 DexDescription_Schlurp_2[] = _(
"des Geschmacks.\n"
"Saure Sachen schrecken es eher ab.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Smogon_1[] = _(
+ "SMOGONs Körper enthält giftige\n"
+ "Substanzen. Es vermischt die Toxine mit\n"
+ "Müll, um eine chemische Reaktion in Gang");
+static const u8 DexDescription_Smogon_2[] = _(
+ "zu bringen, die ein unheimlich starkes\n"
+ "Giftgas hervorbringt. Je höher die Tem-\n"
+ "peratur, desto mehr Gas produziert es.");
+#else
static const u8 DexDescription_Smogon_1[] = _(
"Wenn SMOGON sich aufregt, lässt es\n"
"das giftige Gas in seinem Inneren\n"
"entweichen. Wenn es sich zu sehr");
static const u8 DexDescription_Smogon_2[] = _(
"aufbläht, explodiert dieses POKéMON.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Smogmog_1[] = _(
+ "SMOGMOG bläst seine beiden Körper\n"
+ "abwechselnd auf und lässt sie wieder\n"
+ "zusammenschrumpfen, um die giftigen");
+static const u8 DexDescription_Smogmog_2[] = _(
+ "Gase darin zu vermischen. Je mehr Gase\n"
+ "vermischt werden, desto stärker werden\n"
+ "die Toxine.");
+#else
static const u8 DexDescription_Smogmog_1[] = _(
"SMOGMOG liebt die Gase verrottender,\n"
"fauler Küchenabfälle. Dieses POKéMON\n"
@@ -936,7 +1780,18 @@ static const u8 DexDescription_Smogmog_2[] = _(
"schmutziges Gebäude und richtet sich\n"
"dort häuslich ein. Nachts, wenn die\n"
"Menschen schlafen, wühlt es im Müll.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Rihorn_1[] = _(
+ "RIHORNs Hirn ist sehr klein. Es ist so\n"
+ "beschränkt, dass es während des\n"
+ "Laufens vergisst, warum es überhaupt");
+static const u8 DexDescription_Rihorn_2[] = _(
+ "losgelaufen ist. Manchmal erinnert es\n"
+ "sich aber daran, dass es etwas\n"
+ "zerstört hat.");
+#else
static const u8 DexDescription_Rihorn_1[] = _(
"RIHORN läuft immer geradeaus und\n"
"zerstampft alles, was ihm in die Quere\n"
@@ -945,7 +1800,18 @@ static const u8 DexDescription_Rihorn_2[] = _(
"wenn es mit dem Kopf voran gegen einen\n"
"Stahlklotz rennt. Am nächsten Tag\n"
"allerdings könnte es Schmerzen haben.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Rizeros_1[] = _(
+ "RIZEROS hat ein Horn, das es als Bohrer\n"
+ "benutzen kann. Damit zerstört es \n"
+ "Felsblöcke und Steine. Dieses POKéMON");
+static const u8 DexDescription_Rizeros_2[] = _(
+ "rammt sein Horn manchmal in Ströme von\n"
+ "Magma. Seine panzerähnliche Haut\n"
+ "schützt es dabei vor der Hitze.");
+#else
static const u8 DexDescription_Rizeros_1[] = _(
"Mit seinem Horn kann RIZEROS selbst\n"
"Diamanten zerbrechen. Ein einziger\n"
@@ -954,6 +1820,7 @@ static const u8 DexDescription_Rizeros_2[] = _(
"zum Einsturz bringen. Die Haut dieses\n"
"POKéMON ist so hart, dass nicht einmal\n"
"Kanonenkugeln Kratzer hinterlassen.");
+#endif
static const u8 DexDescription_Chaneira_1[] = _(
"CHANEIRA legt täglich ausgesprochen\n"
@@ -962,6 +1829,16 @@ static const u8 DexDescription_Chaneira_1[] = _(
static const u8 DexDescription_Chaneira_2[] = _(
"werden, die gar keinen Appetit haben.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tangela_1[] = _(
+ "Wenn man TANGELAs Ranken berührt, \n"
+ "fallen diese oft ab. Dabei empfindet\n"
+ "es keine Schmerzen und es kann");
+static const u8 DexDescription_Tangela_2[] = _(
+ "sich schnell in Sicherheit bringen. \n"
+ "Verliert es Ranken, werden diese am\n"
+ "nächsten Tag durch neue ersetzt.");
+#else
static const u8 DexDescription_Tangela_1[] = _(
"Wenn man TANGELAs Ranken berührt, \n"
"fallen diese sofort ab. Das tut ihm\n"
@@ -970,7 +1847,18 @@ static const u8 DexDescription_Tangela_2[] = _(
"sich schnell in Sicherheit bringen. \n"
"Verliert es Ranken, werden diese am\n"
"nächsten Tag durch neue ersetzt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kangama_1[] = _(
+ "Wenn du auf ein junges, spielendes\n"
+ "KANGAMA stößt, solltest du es nicht\n"
+ "stören oder versuchen es einzufangen.");
+static const u8 DexDescription_Kangama_2[] = _(
+ "Die Mutter dieses Baby-POKéMON ist\n"
+ "bestimmt in Reichweite und könnte\n"
+ "sehr wütend auf dich werden.");
+#else
static const u8 DexDescription_Kangama_1[] = _(
"Wenn du auf ein spielendes KANGAMA\n"
"stößt, solltest du es nicht stören oder\n"
@@ -979,7 +1867,18 @@ static const u8 DexDescription_Kangama_2[] = _(
"Die Mutter dieses Baby-POKéMON ist\n"
"bestimmt in Reichweite und könnte\n"
"sehr wütend auf dich werden.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Seeper_1[] = _(
+ "Wenn SEEPER Gefahr wittert, versprüht\n"
+ "es reflexartig eine tiefschwarze Tinte\n"
+ "aus seinem Mund und ergreift die Flucht.");
+static const u8 DexDescription_Seeper_2[] = _(
+ "Dieses POKéMON kann schwimmen, indem\n"
+ "es geschickt mit den Flossen auf seinem\n"
+ "Rücken schlägt.");
+#else
static const u8 DexDescription_Seeper_1[] = _(
"SEEPER ernährt sich von kleinen\n"
"Insekten und dem Moos auf Steinen.\n"
@@ -988,7 +1887,18 @@ static const u8 DexDescription_Seeper_2[] = _(
"dieses POKéMON mit seinem Schweif an\n"
"Steinen oder Korallen, damit es nicht\n"
"weggespült wird.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Seemon_1[] = _(
+ "SEEMON erzeugt Strudel, indem es sich\n"
+ "schnell um die eigene Achse dreht. Diese\n"
+ "Strudel können sogar Fischerboote in");
+static const u8 DexDescription_Seemon_2[] = _(
+ "die Tiefe reißen. Damit schwächt es\n"
+ "Beute, bevor es sie im Ganzen\n"
+ "verschlingt.");
+#else
static const u8 DexDescription_Seemon_1[] = _(
"Sobald sich SEEMON um eine Koralle\n"
"gewickelt hat, schläft es. Von Zeit zu\n"
@@ -997,7 +1907,18 @@ static const u8 DexDescription_Seemon_2[] = _(
"Widerhaken dieses POKéMON verletzt, \n"
"wenn sie versuchen, Korallen zu ernten\n"
"und es dabei nicht bemerken.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Goldini_1[] = _(
+ "GOLDINI liebt es, in Teichen und Flüssen\n"
+ "zu schwimmen. Wenn ein solches\n"
+ "POKéMON in ein Aquarium gebracht wird,");
+static const u8 DexDescription_Goldini_2[] = _(
+ "wird es selbst das dickste Glas mit\n"
+ "einem Stoß seines Horns zum Zerbersten\n"
+ "bringen und die Flucht ergreifen.");
+#else
static const u8 DexDescription_Goldini_1[] = _(
"GOLDINI ist ein wunderschönes POKéMON,\n"
"dessen Flossen sich elegant im Wasser\n"
@@ -1005,7 +1926,18 @@ static const u8 DexDescription_Goldini_1[] = _(
static const u8 DexDescription_Goldini_2[] = _(
"POKéMON Acht geben. Es könnte einen\n"
"sonst heftig mit seinem Horn rammen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Golking_1[] = _(
+ "GOLKING gibt sehr viel Acht auf seine\n"
+ "Brut. Es patrouilliert um sein Nest und\n"
+ "die Eier herum, wobei sich das männliche");
+static const u8 DexDescription_Golking_2[] = _(
+ "und das weibliche Exemplar abwechseln.\n"
+ "Das Bewachen der Eier beschäftigt\n"
+ "dieses POKéMON für über einen Monat.");
+#else
static const u8 DexDescription_Golking_1[] = _(
"Im Herbst kann man männliche GOLKING\n"
"dabei beobachten, wie sie Balztänze in \n"
@@ -1014,7 +1946,18 @@ static const u8 DexDescription_Golking_2[] = _(
"weiblichen Exemplare zu beeindrucken.\n"
"Während dieser Zeit ist die Farbe\n"
"dieser POKéMON am schönsten.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Sterndu_1[] = _(
+ "STERNDU kommuniziert mit den Sternen\n"
+ "am Nachthimmel, indem es den roten\n"
+ "Kern in seiner Körpermitte blinken");
+static const u8 DexDescription_Sterndu_2[] = _(
+ "lässt. Wenn Teile seines Körpers\n"
+ "beschädigt wurden, stellt es die\n"
+ "fehlenden Teile selber wieder her.");
+#else
static const u8 DexDescription_Sterndu_1[] = _(
"In STERNDUs Körpermitte befindet sich\n"
"ein hellrot leuchtendes Organ - \n"
@@ -1023,13 +1966,24 @@ static const u8 DexDescription_Sterndu_2[] = _(
"an einen Strand gehst, sehen die\n"
"leuchtenden Kerne dieser POKéMON aus\n"
"wie Sterne.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Starmie_1[] = _(
+ "STARMIE kann schwimmen, indem es\n"
+ "seinen sternförmigen Körper wie eine\n"
+ "Schiffsschraube dreht. Der Kern in");
+static const u8 DexDescription_Starmie_2[] = _(
+ "seiner Körpermitte leuchtet in sieben\n"
+ "Farben.");
+#else
static const u8 DexDescription_Starmie_1[] = _(
"STARMIEs Mittelteil, sein Kern, leuchtet\n"
"in sieben Farben. Aufgrund dieser\n"
"Eigenschaft wird es auch");
static const u8 DexDescription_Starmie_2[] = _(
"“Juwel des Meeres” genannt.");
+#endif
static const u8 DexDescription_Pantimos_1[] = _(
"PANTIMOS ist ein Meister der Pantomime.\n"
@@ -1076,6 +2030,16 @@ static const u8 DexDescription_Magmar_2[] = _(
"die das Gras und die Bäume der Umgebung\n"
"in Brand setzen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pinsir_1[] = _(
+ "PINSIR hat ein Paar massive Hörner. Aus\n"
+ "diesen ragen Dornen hervor, die sich in\n"
+ "den Körper seines Gegners");
+static const u8 DexDescription_Pinsir_2[] = _(
+ "hineinbohren, wenn sich die Zange\n"
+ "schließt, und ihm das Entkommen\n"
+ "schwer machen.");
+#else
static const u8 DexDescription_Pinsir_1[] = _(
"PINSIR ist erstaunlich stark. Es kann\n"
"einen Feind, der doppelt so viel wiegt\n"
@@ -1084,7 +2048,17 @@ static const u8 DexDescription_Pinsir_2[] = _(
"packen und hochheben. Bei niedrigen\n"
"Temperaturen werden die Bewegungen\n"
"dieses POKéMON schwerfällig.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tauros_1[] = _(
+ "Dieses POKéMON ist nur zufrieden, wenn\n"
+ "es kämpfen kann. Wenn TAUROS keinen\n"
+ "Gegner findet, sucht es sich robuste");
+static const u8 DexDescription_Tauros_2[] = _(
+ "Bäume und haut sie um, um sich\n"
+ "abzureagieren.");
+#else
static const u8 DexDescription_Tauros_1[] = _(
"Dieses POKéMON ist nur zufrieden, wenn\n"
"es kämpfen kann. Wenn TAUROS keinen\n"
@@ -1092,7 +2066,18 @@ static const u8 DexDescription_Tauros_1[] = _(
static const u8 DexDescription_Tauros_2[] = _(
"Bäume und lässt sich an ihnen aus,\n"
"um sich abzureagieren.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Karpador_1[] = _(
+ "KARPADOR ist im Kampf praktisch nutz-\n"
+ "los, da es nur platschen kann.\n"
+ "Daher wird es als schwach eingeschätzt.");
+static const u8 DexDescription_Karpador_2[] = _(
+ "Es ist aber tatsächlich sehr robust und\n"
+ "kann in jedem Gewässer überleben, egal,\n"
+ "wie verseucht dieses ist.");
+#else
static const u8 DexDescription_Karpador_1[] = _(
"KARPADOR ist ein armseliges POKéMON,\n"
"das nur platschen kann. Sein\n"
@@ -1100,7 +2085,18 @@ static const u8 DexDescription_Karpador_1[] = _(
static const u8 DexDescription_Karpador_2[] = _(
"Wissenschaftler zum Forschen\n"
"angeregt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Garados_1[] = _(
+ "Wenn GARADOS in Rage gerät, ist sein\n"
+ "wildes Blut kaum zu beruhigen, bis es\n"
+ "alles niedergebrannt hat.");
+static const u8 DexDescription_Garados_2[] = _(
+ "Aufzeichnungen belegen, dass die\n"
+ "Zerstörungswut dieses POKéMON einen\n"
+ "ganzen Monat anhalten kann.");
+#else
static const u8 DexDescription_Garados_1[] = _(
"Wenn sich KARPADOR zu GARADOS\n"
"entwickelt, durchlaufen seine\n"
@@ -1109,6 +2105,7 @@ static const u8 DexDescription_Garados_2[] = _(
"Veränderung, was wohl der Grund für die\n"
"zügellose, gewalttätige Natur dieses\n"
"POKéMON ist.");
+#endif
static const u8 DexDescription_Lapras_1[] = _(
"Die Menschen sind dafür verantwortlich,\n"
@@ -1126,6 +2123,15 @@ static const u8 DexDescription_Ditto_2[] = _(
"Gedächtnis verlässt, unterlaufen \n"
"diesem POKéMON schon mal Fehler.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Evoli_1[] = _(
+ "EVOLIs genetisches Erbmaterial ist so\n"
+ "instabil, dass die Umgebung plötzliche\n"
+ "Mutationen auslösen kann.");
+static const u8 DexDescription_Evoli_2[] = _(
+ "Die Wirkung verschiedener STEINE\n"
+ "führt zur Entwicklung dieses POKéMON.");
+#else
static const u8 DexDescription_Evoli_1[] = _(
"EVOLIs genetisches Erbmaterial ist so\n"
"instabil, dass die Umgebung plötzliche\n"
@@ -1134,7 +2140,18 @@ static const u8 DexDescription_Evoli_2[] = _(
"Die Wirkung verschiedener \n"
"STEINE führt zur Entwicklung dieses \n"
"POKéMON.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Aquana_1[] = _(
+ "AQUANA hat eine spontane Mutation\n"
+ "durchlaufen. Ihm sind Flossen und \n"
+ "Kiemen gewachsen. Dadurch kann es");
+static const u8 DexDescription_Aquana_2[] = _(
+ "unter Wasser leben.\n"
+ "Dieses POKéMON kann Wasser nach\n"
+ "Belieben manipulieren.");
+#else
static const u8 DexDescription_Aquana_1[] = _(
"AQUANA hat eine spontane Mutation\n"
"durchgemacht und ihm sind Flossen und \n"
@@ -1143,6 +2160,7 @@ static const u8 DexDescription_Aquana_2[] = _(
"unter Wasser leben.\n"
"Dieses POKéMON kann Wasser nach\n"
"Belieben manipulieren.");
+#endif
static const u8 DexDescription_Blitza_1[] = _(
"BLITZAs Zellen erzeugen schwache\n"
@@ -1171,6 +2189,16 @@ static const u8 DexDescription_Porygon_2[] = _(
"dass es durch Kopieren nicht\n"
"vervielfältigt werden kann.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Amonitas_1[] = _(
+ "AMONITAS ist ein POKéMON, das seit\n"
+ "langer Zeit ausgestorben war, aber\n"
+ "durch die Menschen aus Fossilien");
+static const u8 DexDescription_Amonitas_2[] = _(
+ "reproduziert wurde. Wenn es von einem\n"
+ "Feind angegriffen wird, zieht es sich in\n"
+ "sein hartes Gehäuse zurück.");
+#else
static const u8 DexDescription_Amonitas_1[] = _(
"AMONITAS ist ein POKéMON, das seit\n"
"langer Zeit ausgestorben war, aber\n"
@@ -1179,7 +2207,18 @@ static const u8 DexDescription_Amonitas_2[] = _(
"reproduziert wurde. Wenn es von einem\n"
"Feind angegriffen wird, zieht es sich in\n"
"sein hartes Gehäuse zurück.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Amoroso_1[] = _(
+ "AMOROSO benutzt seine Tentakel, um\n"
+ "Beute einzufangen. Man nimmt an,\n"
+ "dass es ausgestorben ist, weil seine");
+static const u8 DexDescription_Amoroso_2[] = _(
+ "Schale zu groß und zu schwer geworden\n"
+ "ist, so dass seine Bewegungen immer\n"
+ "langsamer und schwerfälliger wurden.");
+#else
static const u8 DexDescription_Amoroso_1[] = _(
"AMOROSO benutzt seine Tentakel, um\n"
"Beute einzufangen. Man nimmt an,\n"
@@ -1188,6 +2227,7 @@ static const u8 DexDescription_Amoroso_2[] = _(
"Schale zu groß und zu schwer geworden\n"
"war, so dass seine Bewegungen immer\n"
"langsamer und schwerfälliger wurden.");
+#endif
static const u8 DexDescription_Kabuto_1[] = _(
"KABUTO ist ein POKéMON, das aus einem\n"
@@ -1224,6 +2264,16 @@ static const u8 DexDescription_Relaxo_2[] = _(
"Kinder seinen dicken Bauch als Platz\n"
"zum Spielen nutzen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Arktos_1[] = _(
+ "ARKTOS ist ein sagenumwobenes\n"
+ "Vogel-POKéMON, das Eis manipulieren\n"
+ "kann. Das Schlagen seiner Flügel");
+static const u8 DexDescription_Arktos_2[] = _(
+ "bringt die Luft zum Gefrieren. Man nimmt\n"
+ "an, dass es zu schneien beginnt, wenn\n"
+ "dieses POKéMON fliegt.");
+#else
static const u8 DexDescription_Arktos_1[] = _(
"ARKTOS ist ein sagenumwobenes\n"
"Vogel-POKéMON, das Eis manipulieren\n"
@@ -1232,6 +2282,7 @@ static const u8 DexDescription_Arktos_2[] = _(
"bringt die Luft zum Gefrieren. Es wird\n"
"behauptet, dass es zu schneien\n"
"beginnt, wenn dieses POKéMON fliegt.");
+#endif
static const u8 DexDescription_Zapdos_1[] = _(
"ZAPDOS ist ein legendäres\n"
@@ -1251,12 +2302,21 @@ static const u8 DexDescription_Lavados_2[] = _(
"Vulkans, um sich zu verbrennen\n"
"und selbst zu heilen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Dratini_1[] = _(
+ "DRATINI häutet sich ständig, da die\n"
+ "Lebensenergie in seinem Körper\n"
+ "stetig und unkontrollierbar ansteigt.");
+static const u8 DexDescription_Dratini_2[] = _(
+ "");
+#else
static const u8 DexDescription_Dratini_1[] = _(
"DRATINI häutet sich ständig und\n"
"entledigt sich so seiner Haut, da die\n"
"Lebensenergie in seinem Körper");
static const u8 DexDescription_Dratini_2[] = _(
"stetig und unkontrollierbar ansteigt.");
+#endif
static const u8 DexDescription_Dragonir_1[] = _(
"DRAGONIR speichert eine enorme Menge\n"
@@ -1292,6 +2352,16 @@ static const u8 DexDescription_Mew_2[] = _(
"machen, so dass es sich auch Menschen\n"
"nähern kann, ohne bemerkt zu werden.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Endivie_1[] = _(
+ "Im Kampf wedelt ENDIVIE mit seinem\n"
+ "Blatt, um den Feind fern zu halten. Von\n"
+ "dem Blatt geht auch ein süßlicher Duft");
+static const u8 DexDescription_Endivie_2[] = _(
+ "aus, der das gegnerische POKéMON im\n"
+ "Kampf beruhigt und eine gemütliche,\n"
+ "freundliche Atmosphäre schafft.");
+#else
static const u8 DexDescription_Endivie_1[] = _(
"Im Kampf wedelt ENDIVIE mit seinem\n"
"Blatt, um den Feind fern zu halten. Von\n"
@@ -1300,6 +2370,7 @@ static const u8 DexDescription_Endivie_2[] = _(
"aus, der die kämpfenden POKéMON\n"
"beruhigt und eine gemütliche,\n"
"freundliche Atmosphäre schafft.");
+#endif
static const u8 DexDescription_Lorblatt_1[] = _(
"LORBLATTs Nacken ist mit\n"
@@ -1310,6 +2381,15 @@ static const u8 DexDescription_Lorblatt_2[] = _(
"Der Duft dieses Triebes bringt\n"
"Menschen auf Trab.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Meganie_1[] = _(
+ "Der Duft von MEGANIEs Blume besänftigt\n"
+ "die Gemüter. Im Kampf gibt dieses\n"
+ "POKéMON mehr von seinem beruhigenden");
+static const u8 DexDescription_Meganie_2[] = _(
+ "Duftstoff ab, um den Kampfgeist des\n"
+ "Gegners zu besänftigen.");
+#else
static const u8 DexDescription_Meganie_1[] = _(
"Der Duft von MEGANIEs Blume besänftigt\n"
"Gemüter. Im Kampf gibt dieses POKéMON\n"
@@ -1317,7 +2397,18 @@ static const u8 DexDescription_Meganie_1[] = _(
static const u8 DexDescription_Meganie_2[] = _(
"Duftstoff ab, um den Kampfgeist des\n"
"Gegners zu schwächen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Feurigel_1[] = _(
+ "FEURIGEL lässt Flammen aus seinem\n"
+ "Rücken lodern, wenn es sich schützen\n"
+ "muss. Die Flammen sind sehr stark,");
+static const u8 DexDescription_Feurigel_2[] = _(
+ "wenn dieses POKéMON wütend ist. Ist es\n"
+ "aber müde, flackern die Flammen nur\n"
+ "unregelmäßig und schwach.");
+#else
static const u8 DexDescription_Feurigel_1[] = _(
"FEURIGEL lässt Flammen aus seinem\n"
"Rücken lodern, wenn es sich schützen\n"
@@ -1326,6 +2417,7 @@ static const u8 DexDescription_Feurigel_2[] = _(
"wenn dieses POKéMON wütend ist. Ist es\n"
"aber müde, flackern die Flammen nur\n"
"unregelmäßig und schwach.");
+#endif
static const u8 DexDescription_Igelavar_1[] = _(
"IGELAVAR hält seine Gegner mit Flammen\n"
@@ -1336,6 +2428,15 @@ static const u8 DexDescription_Igelavar_2[] = _(
"Angriffen auszuweichen und seinen\n"
"Gegner gleichzeitig zu versengen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tornupto_1[] = _(
+ "TORNUPTO versteckt sich hinter einem\n"
+ "flimmernden Hitzeschild, den es mit\n"
+ "Hilfe seiner heißen Flammen erzeugt.");
+static const u8 DexDescription_Tornupto_2[] = _(
+ "Dieses POKéMON erzeugt Explosionen,\n"
+ "die alles in Schutt und Asche legen.");
+#else
static const u8 DexDescription_Tornupto_1[] = _(
"TORNUPTO versteckt sich hinter einem\n"
"flimmernden Hitzeschild, den es mit\n"
@@ -1344,6 +2445,7 @@ static const u8 DexDescription_Tornupto_2[] = _(
"Dieses POKéMON erzeugt Explosionen,\n"
"die alles in Schutt und Asche\n"
"legen.");
+#endif
static const u8 DexDescription_Karnimani_1[] = _(
"KARNIMANI ist zwar sehr klein, aber\n"
@@ -1390,6 +2492,15 @@ static const u8 DexDescription_Wiesenior_2[] = _(
"Gliedmaßen ist dieses POKéMON sehr\n"
"wendig und flink.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Hoothoot_1[] = _(
+ "HOOTHOOT besitzt ein inneres Organ, das\n"
+ "die Erdumdrehung wahrnimmt. Dieses\n"
+ "besondere Organ ermöglicht es diesem");
+static const u8 DexDescription_Hoothoot_2[] = _(
+ "POKéMON, jeden Tag zur selben Zeit\n"
+ "zu schreien.");
+#else
static const u8 DexDescription_Hoothoot_1[] = _(
"HOOTHOOT besitzt ein inneres Organ, das\n"
"die Erdumdrehung wahrnimmt. Dieses\n"
@@ -1397,7 +2508,18 @@ static const u8 DexDescription_Hoothoot_1[] = _(
static const u8 DexDescription_Hoothoot_2[] = _(
"POKéMON, jeden Tag zur selben Zeit zu\n"
"schreien.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Noctuh_1[] = _(
+ "Dank seines hervorragenden\n"
+ "Sehvermögens, mit dem es auch bei\n"
+ "geringer Beleuchtung sehen kann, und");
+static const u8 DexDescription_Noctuh_2[] = _(
+ "dank seiner geschmeidigen Flügel,\n"
+ "mit denen es geräuschlos fliegen kann,\n"
+ "entgeht NOCTUH keine Beute.");
+#else
static const u8 DexDescription_Noctuh_1[] = _(
"Dank seines hervorragenden\n"
"Sehvermögens, mit dem es auch bei\n"
@@ -1406,6 +2528,7 @@ static const u8 DexDescription_Noctuh_2[] = _(
"dank seiner geschmeidigen Flügel,\n"
"mit denen es geräuschlos fliegt,\n"
"entgeht NOCTUH keine Beute.");
+#endif
static const u8 DexDescription_Ledyba_1[] = _(
"LEDYBA sondert eine duftende\n"
@@ -1432,6 +2555,15 @@ static const u8 DexDescription_Webarak_2[] = _(
"Vibrationen der Netzfäden bestimmen,\n"
"welche Art Beute sich darauf befindet.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Ariados_1[] = _(
+ "ARIADOS hat kleine hakenförmige Krallen\n"
+ "an seinen Füßen. Damit kann es an\n"
+ "Decken und Wänden entlangflitzen.");
+static const u8 DexDescription_Ariados_2[] = _(
+ "Dieses POKéMON erdrückt seine Gegner\n"
+ "mit starkem, dünnem Seidenfaden.");
+#else
static const u8 DexDescription_Ariados_1[] = _(
"ARIADOS hat kleine hakenförmige Krallen\n"
"an seinen Füßen. Damit kann es an\n"
@@ -1439,7 +2571,18 @@ static const u8 DexDescription_Ariados_1[] = _(
static const u8 DexDescription_Ariados_2[] = _(
"Dieses POKéMON erdrückt seine Gegner\n"
"mit starkem, dünnem Seidenfaden.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Iksbat_1[] = _(
+ "IKSBATs Flügelschlag ist so leise, dass\n"
+ "die Beute lautlos überrascht wird.\n"
+ "Dieses POKéMON ruht sich");
+static const u8 DexDescription_Iksbat_2[] = _(
+ "aus, indem es sich mit seinen\n"
+ "Hinterbeinen, die ihm als Flügel\n"
+ "dienen, an einen Ast hängt.");
+#else
static const u8 DexDescription_Iksbat_1[] = _(
"Wenn IKSBAT fliegt, indem es nur ein \n"
"Paar Flügel, entweder an seinen Vorder-\n"
@@ -1448,7 +2591,17 @@ static const u8 DexDescription_Iksbat_2[] = _(
"Anzeichen dafür, dass dieses POKéMON \n"
"bereits eine lange Strecke hinter sich\n"
"hat. Dann wechselt es die Flügel häufig.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Lampi_1[] = _(
+ "LAMPIs zwei Antennen sind mit Zellen\n"
+ "gefüllt, die Elektrizität erzeugen. \n"
+ "Die elektrische Ladung ist so stark,");
+static const u8 DexDescription_Lampi_2[] = _(
+ "dass es sogar ein leichtes Kribbeln\n"
+ "verspürt.");
+#else
static const u8 DexDescription_Lampi_1[] = _(
"LAMPI gibt positive und negative\n"
"elektrische Ladungen durch seine\n"
@@ -1457,7 +2610,18 @@ static const u8 DexDescription_Lampi_2[] = _(
"Dieses POKéMON lässt seine Lichter\n"
"aufflackern und tauscht Signale mit\n"
"seinen Artgenossen aus.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Lanturn_1[] = _(
+ "LANTURN strahlt Licht ab. Wenn du\n"
+ "nachts aufs dunkle Meer hinausblickst,\n"
+ "kannst du vielleicht das Licht dieses");
+static const u8 DexDescription_Lanturn_2[] = _(
+ "PKMN aus der Tiefe, in der es schwimmt,\n"
+ "heraufschimmern sehen. Es lässt das\n"
+ "Meer wie eine sternklare Nacht wirken.");
+#else
static const u8 DexDescription_Lanturn_1[] = _(
"LANTURN wird auch “Tiefseestern”\n"
"genannt, da es leuchtende Antennen\n"
@@ -1466,7 +2630,18 @@ static const u8 DexDescription_Lanturn_2[] = _(
"indem es in den Antennen eine chemische\n"
"Reaktion zwischen Bakterien und seinen\n"
"Körperflüssigkeiten erzeugt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pichu_1[] = _(
+ "Wenn PICHU mit anderen spielt, kann es\n"
+ "einen Kurzschluss mit einem seiner \n"
+ "Artgenossen erzeugen, so dass die");
+static const u8 DexDescription_Pichu_2[] = _(
+ "Funken sprühen. Dann beginnt es zu\n"
+ "weinen, weil es vor den Funken\n"
+ "erschrickt.");
+#else
static const u8 DexDescription_Pichu_1[] = _(
"An Gewittertagen oder Tagen, an denen\n"
"die Luft sehr trocken ist, kann sich\n"
@@ -1474,7 +2649,17 @@ static const u8 DexDescription_Pichu_1[] = _(
static const u8 DexDescription_Pichu_2[] = _(
"aufladen. Dann kann man das Knistern\n"
"statischer Aufladung hören.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pii_1[] = _(
+ "In Nächten mit vielen Sternschnuppen\n"
+ "kann man PII im Kreis tanzen sehen. Es\n"
+ "tanzt die ganze Nacht hindurch und");
+static const u8 DexDescription_Pii_2[] = _(
+ "hört erst bei Sonnenaufgang auf, um\n"
+ "seinen Durst mit Morgentau zu stillen.");
+#else
static const u8 DexDescription_Pii_1[] = _(
"In Nächten mit vielen Sternschnuppen,\n"
"kann man PII im Kreis tanzen sehen. Es\n"
@@ -1482,7 +2667,16 @@ static const u8 DexDescription_Pii_1[] = _(
static const u8 DexDescription_Pii_2[] = _(
"hört erst bei Sonnenaufgang auf, um\n"
"seinen Durst mit Morgentau zu stillen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Fluffeluff_1[] = _(
+ "FLUFFELUFF hat einen weichen Körper,\n"
+ "der sich anfühlt wie ein Marshmallow. Es\n"
+ "verströmt einen süßlichen Duft, der");
+static const u8 DexDescription_Fluffeluff_2[] = _(
+ "die Emotionen seiner Gegner beruhigt.");
+#else
static const u8 DexDescription_Fluffeluff_1[] = _(
"FLUFFELUFFs Stimmbänder sind noch\n"
"nicht voll entwickelt. Wenn es zu viel\n"
@@ -1490,7 +2684,18 @@ static const u8 DexDescription_Fluffeluff_1[] = _(
static const u8 DexDescription_Fluffeluff_2[] = _(
"Dieses POKéMON gurgelt mit Süßwasser\n"
"aus einem sauberen Fluss.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Togepi_1[] = _(
+ "TOGEPI benutzt die positiven Emotionen\n"
+ "Freude und Mitgefühl von Menschen und\n"
+ "POKéMON als Energie.");
+static const u8 DexDescription_Togepi_2[] = _(
+ "Dieses POKéMON speichert Glücksgefühle\n"
+ "in seiner Schale und teilt sie mit\n"
+ "anderen.");
+#else
static const u8 DexDescription_Togepi_1[] = _(
"TOGEPI nutzt die positiven Emotionen,\n"
"wie Freude und Mitgefühl, von Menschen\n"
@@ -1499,14 +2704,33 @@ static const u8 DexDescription_Togepi_2[] = _(
"Dieses POKéMON speichert Glücksgefühle\n"
"in seiner Schale und teilt sie mit\n"
"anderen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Togetic_1[] = _(
+ "TOGETIC ist ein POKéMON, das Glück\n"
+ "bringt. Wenn es jemanden trifft, der\n"
+ "gutherzig ist, teilt es seine Freude mit");
+static const u8 DexDescription_Togetic_2[] = _(
+ "dieser Person.");
+#else
static const u8 DexDescription_Togetic_1[] = _(
"TOGETIC ist ein POKéMON, das Glück\n"
"bringt. Wenn es jemanden trifft, der\n"
"reinen Herzens ist, zeigt es sich und");
static const u8 DexDescription_Togetic_2[] = _(
"teilt sein Glück mit dieser Person.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Natu_1[] = _(
+ "NATU kann hervorragend springen.\n"
+ "Dieses POKéMON schlägt mit den Flügeln\n"
+ "und springt auf Äste, die höher liegen,");
+static const u8 DexDescription_Natu_2[] = _(
+ "als ein Erwachsener groß ist, um an die\n"
+ "neuen Triebe eines Baumes zu kommen.");
+#else
static const u8 DexDescription_Natu_1[] = _(
"NATU kann nicht fliegen, da seine Flügel\n"
"noch nicht ausgewachsen sind. Wenn du\n"
@@ -1515,7 +2739,17 @@ static const u8 DexDescription_Natu_2[] = _(
"starrt es dich konzentriert an. Wenn du\n"
"dich aber bewegst, hüpft es weg, um sich\n"
"in Sicherheit zu bringen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Xatu_1[] = _(
+ "XATU steht den ganzen Tag \n"
+ "bewegungslos herum und starrt die\n"
+ "Sonne an. Einige Menschen verehren es");
+static const u8 DexDescription_Xatu_2[] = _(
+ "als ein mystisches POKéMON. Sie glauben,\n"
+ "dass XATU in die Zukunft sehen könne.");
+#else
static const u8 DexDescription_Xatu_1[] = _(
"XATU bleibt den ganzen Tag an ein und\n"
"demselben Ort wie angewurzelt stehen. \n"
@@ -1523,6 +2757,7 @@ static const u8 DexDescription_Xatu_1[] = _(
static const u8 DexDescription_Xatu_2[] = _(
"Angst vor den Dingen tut, die es für die\n"
"Zukunft vorausgesehen hat.");
+#endif
static const u8 DexDescription_Voltilamm_1[] = _(
"VOLTILAMMs flauschiges, wollenes Fell\n"
@@ -1549,6 +2784,15 @@ static const u8 DexDescription_Ampharos_2[] = _(
"dieses POKéMON dazu, Signale über\n"
"weite Entfernungen auszutauschen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Blubella_1[] = _(
+ "BLUBELLA wachsen schönere Blumen,\n"
+ "wenn es sich aus einem übel riechenden\n"
+ "DUFLOR entwickelt hat - je stinkender,");
+static const u8 DexDescription_Blubella_2[] = _(
+ "desto besser. Nachts schließt dieses\n"
+ "POKéMON seine Blätter und schläft.");
+#else
static const u8 DexDescription_Blubella_1[] = _(
"Wenn BLUBELLA starkem Sonnenlicht\n"
"ausgesetzt ist, beginnen sich die Blät-\n"
@@ -1556,7 +2800,17 @@ static const u8 DexDescription_Blubella_1[] = _(
static const u8 DexDescription_Blubella_2[] = _(
"Der Tanz dieses POKéMON ist in\n"
"südlichen Ländern sehr bekannt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Marill_1[] = _(
+ "Wenn es am Ufer eines reißenden Flusses\n"
+ "fischt, wickelt MARILL seinen Schweif\n"
+ "um einen Baumstamm. Der Schweif dieses");
+static const u8 DexDescription_Marill_2[] = _(
+ "POKéMON ist flexibel und elastisch, so\n"
+ "dass es ihn ausdehnen kann.");
+#else
static const u8 DexDescription_Marill_1[] = _(
"MARILLs Schweif ist mit Öl gefüllt und\n"
"dient ihm als eine Art Rettungsring.\n"
@@ -1565,7 +2819,18 @@ static const u8 DexDescription_Marill_2[] = _(
"Wasseroberfläche zu sehen ist, taucht\n"
"dieses POKéMON gerade, um sich von\n"
"Wasserpflanzen zu ernähren.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Azumarill_1[] = _(
+ "AZUMARILL kann aus Luft Ballons\n"
+ "machen. Diese Luft-Ballons erzeugt es,\n"
+ "wenn es ein ertrinkendes POKéMON");
+static const u8 DexDescription_Azumarill_2[] = _(
+ "erspäht. Durch die Ballons kann das\n"
+ "POKéMON, das in Schwierigkeiten \n"
+ "geraten ist, atmen.");
+#else
static const u8 DexDescription_Azumarill_1[] = _(
"AZUMARILLs lange Ohren dienen ihm\n"
"als unentbehrliche Sensoren. Wenn es\n"
@@ -1574,6 +2839,7 @@ static const u8 DexDescription_Azumarill_2[] = _(
"POKéMON auch in reißenden Flüssen\n"
"identifizieren, welche Art von Beute\n"
"sich in seiner Nähe befindet.");
+#endif
static const u8 DexDescription_Mogelbaum_1[] = _(
"MOGELBAUM tarnt sich als Baum, um\n"
@@ -1583,6 +2849,15 @@ static const u8 DexDescription_Mogelbaum_2[] = _(
"das ganze Jahr über grün bleiben, fällt\n"
"seine Tarnung im Winter leicht auf.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Quaxo_1[] = _(
+ "QUAXO hat lockiges Haar, das ihm den\n"
+ "Status eines Königs bescheinigt. Je\n"
+ "länger und lockiger sein Haar ist, desto");
+static const u8 DexDescription_Quaxo_2[] = _(
+ "mehr Respekt erntet dieses POKéMON\n"
+ "von seinen Artgenossen.");
+#else
static const u8 DexDescription_Quaxo_1[] = _(
"QUAXO hat gelocktes Haar, das ihm den\n"
"Status eines Königs bescheinigt. Je\n"
@@ -1590,6 +2865,7 @@ static const u8 DexDescription_Quaxo_1[] = _(
static const u8 DexDescription_Quaxo_2[] = _(
"mehr Respekt erntet dieses POKéMON\n"
"von seinen Artgenossen.");
+#endif
static const u8 DexDescription_Hoppspross_1[] = _(
"HOPPSPROSS lässt sich vom Wind\n"
@@ -1599,6 +2875,16 @@ static const u8 DexDescription_Hoppspross_2[] = _(
"Blätter mit anderen HOPPSPROSS,\n"
"damit es nicht davongeweht wird.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Hubelupf_1[] = _(
+ "HUBELUPFs Blume beginnt zu blühen, wenn\n"
+ "die Temperatur über 18 Grad steigt. Wie\n"
+ "weit sich die Blume öffnet, hängt von");
+static const u8 DexDescription_Hubelupf_2[] = _(
+ "der Temperatur ab. Daher wird dieses\n"
+ "POKéMON manchmal als Thermometer\n"
+ "eingesetzt.");
+#else
static const u8 DexDescription_Hubelupf_1[] = _(
"HUBELUPFs Blume beginnt zu blühen, wenn\n"
"die Temperatur über 18 Grad steigt. Wie\n"
@@ -1607,6 +2893,7 @@ static const u8 DexDescription_Hubelupf_2[] = _(
"der Höhe der Temperatur ab. Daher wird\n"
"dieses POKéMON manchmal als\n"
"Thermometer eingesetzt.");
+#endif
static const u8 DexDescription_Papungha_1[] = _(
"PAPUNGHA nutzt den Südwind, um das\n"
@@ -1642,6 +2929,16 @@ static const u8 DexDescription_Sonnflora_2[] = _(
"Wenn aber die Sonne untergegangen ist,\n"
"hört es auf sich zu bewegen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Yanma_1[] = _(
+ "YANMA hat einen Blickwinkel von 360\n"
+ "Grad, ohne die Augen bewegen zu müssen.\n"
+ "Es ist ein großartiger Flieger und geübt");
+static const u8 DexDescription_Yanma_2[] = _(
+ "darin, plötzlich anzuhalten oder\n"
+ "Wendemanöver hinzulegen. So kann es\n"
+ "sich blitzschnell auf Beute stürzen.");
+#else
static const u8 DexDescription_Yanma_1[] = _(
"YANMA hat einen Blickwinkel von 360\n"
"Grad, ohne die Augen bewegen zu müssen.\n"
@@ -1650,6 +2947,7 @@ static const u8 DexDescription_Yanma_2[] = _(
"darin, plötzlich anzuhalten oder\n"
"Wendemanöver vorzunehmen. So kann es\n"
"sich blitzschnell auf Beute stürzen.");
+#endif
static const u8 DexDescription_Felino_1[] = _(
"FELINO lebt eigentlich im Wasser.\n"
@@ -1711,6 +3009,16 @@ static const u8 DexDescription_Traunfugil_2[] = _(
"Feinde aufzunehmen und sie in\n"
"Nahrung umzuwandeln.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Icognito_1[] = _(
+ "ICOGNITO hat die Form antiker\n"
+ "Schriftzeichen. Bis heute ist unklar,\n"
+ "was zuerst da war - die antiken");
+static const u8 DexDescription_Icognito_2[] = _(
+ "Schriftzeichen oder die vielen unter-\n"
+ "schiedlichen ICOGNITO. Trotz umfang-\n"
+ "reicher Forschung bleiben Fragen offen.");
+#else
static const u8 DexDescription_Icognito_1[] = _(
"ICOGNITO hat die Form antiker\n"
"Schriftzeichen. Bis heute ist unklar,\n"
@@ -1719,7 +3027,18 @@ static const u8 DexDescription_Icognito_2[] = _(
"Schriftzeichen oder die vielen unter-\n"
"schiedlichen ICOGNITO. Trotz umfang-\n"
"reicher Forschung bleiben Fragen offen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Woingenau_1[] = _(
+ "WOINGENAU tut nichts anderes als\n"
+ "Angriffe auszuhalten. Von sich aus\n"
+ "würde es nie angreifen. Eine Attacke");
+static const u8 DexDescription_Woingenau_2[] = _(
+ "auf seinen Schweif würde es allerdings\n"
+ "niemals dulden. Wenn das passiert, \n"
+ "setzt es ABGANGSBUND ein.");
+#else
static const u8 DexDescription_Woingenau_1[] = _(
"Wenn zwei oder mehr WOINGENAU \n"
"aufeinander treffen, versuchen sie,\n"
@@ -1728,7 +3047,18 @@ static const u8 DexDescription_Woingenau_2[] = _(
"Sie möchten herausfinden, welches\n"
"POKéMON es am längsten ohne Nahrung\n"
"aushält. Darauf müssen Trainer achten.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Girafarig_1[] = _(
+ "Der Kopf an GIRAFARIGs Hinterteil\n"
+ "verfügt nur über ein kleines Gehirn, mit\n"
+ "dem es nicht denken kann. Dieses Gehirn");
+static const u8 DexDescription_Girafarig_2[] = _(
+ "benötigt jedoch keinen Schlaf und ist\n"
+ "somit in der Lage, die Umgebung rund\n"
+ "um die Uhr im Auge zu behalten.");
+#else
static const u8 DexDescription_Girafarig_1[] = _(
"Der Kopf an GIRAFARIGs Hinterteil hat\n"
"ein eigenes Gehirn. Er reagiert mit\n"
@@ -1737,7 +3067,17 @@ static const u8 DexDescription_Girafarig_2[] = _(
"Wenn man sich diesem POKéMON von\n"
"hinten nähert, könnte der hintere Kopf\n"
"plötzlich vorschnellen und zubeißen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tannza_1[] = _(
+ "TANNZA hängt an Ästen und wartet auf\n"
+ "Beute. Wenn man dieses POKéMON bei\n"
+ "einer Mahlzeit stört, indem man seinen");
+static const u8 DexDescription_Tannza_2[] = _(
+ "Baum schüttelt, fällt es herunter und\n"
+ "explodiert ohne Vorwarnung.");
+#else
static const u8 DexDescription_Tannza_1[] = _(
"TANNZA hängt an Ästen und wartet auf\n"
"Beute. Wenn man dieses POKéMON bei\n"
@@ -1746,6 +3086,7 @@ static const u8 DexDescription_Tannza_2[] = _(
"Baum, auf dem es sich befindet,\n"
"schüttelt, fällt es herunter und\n"
"explodiert ohne Vorwarnung.");
+#endif
static const u8 DexDescription_Forstellka_1[] = _(
"FORSTELLKA versteckt sich in seiner\n"
@@ -1799,6 +3140,16 @@ static const u8 DexDescription_Granbull_2[] = _(
"Es beißt nur zu, wenn es erschreckt\n"
"wird.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Baldorfish_1[] = _(
+ "BALDORFISH saugt Wasser ein, um sich\n"
+ "aufzublasen. Dieses POKéMON nutzt den\n"
+ "Druck des Wassers dazu, giftige");
+static const u8 DexDescription_Baldorfish_2[] = _(
+ "Stacheln zu verschießen. Es betrachtet\n"
+ "Schwimmen als eine echte Heraus-\n"
+ "forderung.");
+#else
static const u8 DexDescription_Baldorfish_1[] = _(
"BALDORFISH saugt Wasser ein, um sich\n"
"aufzublasen. Dieses POKéMON nutzt den\n"
@@ -1807,6 +3158,7 @@ static const u8 DexDescription_Baldorfish_2[] = _(
"Stacheln aus seinem Körper zu\n"
"verschießen. Es betrachtet Schwimmen\n"
"als eine echte Herausforderung.");
+#endif
static const u8 DexDescription_Scherox_1[] = _(
"SCHEROX’ Körper ist hart wie Stahl.\n"
@@ -1816,6 +3168,16 @@ static const u8 DexDescription_Scherox_2[] = _(
"mit den Flügeln, um seine\n"
"Körpertemperatur zu regulieren.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pottrott_1[] = _(
+ "POTTROTT versteckt sich leise unter\n"
+ "Steinen und verbirgt seinen Körper in\n"
+ "seiner harten Schale, wenn es Beeren");
+static const u8 DexDescription_Pottrott_2[] = _(
+ "zu sich nimmt.\n"
+ "Die Beeren vermischen sich mit seinen\n"
+ "Körperflüssigkeiten zu einem Saft.");
+#else
static const u8 DexDescription_Pottrott_1[] = _(
"POTTROTT versteckt sich leise unter\n"
"Steinen und verbirgt seinen Körper in\n"
@@ -1824,7 +3186,18 @@ static const u8 DexDescription_Pottrott_2[] = _(
"gesammelte Beeren zu sich nimmt. Die\n"
"Beeren vermischen sich mit seinen\n"
"Körperflüssigkeiten zu einem Saft.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Skaraborn_1[] = _(
+ "SKARABORN hat scharfe Krallen an den\n"
+ "Füßen. Diese bohren sich fest in den\n"
+ "Boden oder in die Rinde eines Baumes");
+static const u8 DexDescription_Skaraborn_2[] = _(
+ "und geben diesem POKéMON einen siche-\n"
+ "ren Halt. So kann es seine Gegner mit\n"
+ "seinem imposanten Horn wegschleudern.");
+#else
static const u8 DexDescription_Skaraborn_1[] = _(
"SKARABORN geht direkt auf seinen\n"
"Gegner los, rutscht auf ihn zu, um ihn\n"
@@ -1833,7 +3206,17 @@ static const u8 DexDescription_Skaraborn_2[] = _(
"Horn wegzuschleudern. Dieses POKéMON\n"
"hat genug Kraft, um einen massigen\n"
"Baum umzustoßen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Sniebel_1[] = _(
+ "SNIEBEL klettert an Bäumen hoch, indem\n"
+ "es seine hakenförmigen Krallen in die\n"
+ "Rinde schlägt. Dieses POKéMON sucht");
+static const u8 DexDescription_Sniebel_2[] = _(
+ "nach unbewachten Nestern und stiehlt\n"
+ "die Eier. Davon ernährt es sich.");
+#else
static const u8 DexDescription_Sniebel_1[] = _(
"SNIEBEL klettert an Bäumen hoch, indem\n"
"es seine hakenförmigen Krallen in die\n"
@@ -1842,7 +3225,17 @@ static const u8 DexDescription_Sniebel_2[] = _(
"nach unbewachten Nestern und stiehlt\n"
"die Eier, wenn die Eltern auf Nahrungs-\n"
"suche sind. Davon ernährt es sich.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Teddiursa_1[] = _(
+ "TEDDIURSA leckt gern seine mit Honig\n"
+ "bedeckten Pfoten ab. Dieses POKéMON\n"
+ "bereitet seinen eigenen Honig zu, indem");
+static const u8 DexDescription_Teddiursa_2[] = _(
+ "es die von BIBOR gesammelten Früchte\n"
+ "und Pollen vermengt.");
+#else
static const u8 DexDescription_Teddiursa_1[] = _(
"TEDDIURSA leckt gern seine mit Honig\n"
"bedeckten Pranken ab. Dieses POKéMON\n"
@@ -1850,6 +3243,7 @@ static const u8 DexDescription_Teddiursa_1[] = _(
static const u8 DexDescription_Teddiursa_2[] = _(
"es die von BIBOR gesammelten Früchte\n"
"und Pollen miteinander vermengt.");
+#endif
static const u8 DexDescription_Ursaring_1[] = _(
"In den von URSARING bewohnten Wäldern\n"
@@ -1859,6 +3253,15 @@ static const u8 DexDescription_Ursaring_2[] = _(
"POKéMON läuft täglich durch den Wald,\n"
"um nach Essbarem zu suchen.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Schneckmag_1[] = _(
+ "SCHNECKMAG hat kein Blut in seinem\n"
+ "Körper. Stattdessen fließt glühend\n"
+ "heißes Magma in diesem POKéMON,");
+static const u8 DexDescription_Schneckmag_2[] = _(
+ "das seine Organe mit lebenswichtigen\n"
+ "Nährstoffen und Sauerstoff versorgt.");
+#else
static const u8 DexDescription_Schneckmag_1[] = _(
"Durch SCHNECKMAGs Kreislaufsystem\n"
"fließt Magma. Wenn dieses POKéMON\n"
@@ -1867,7 +3270,18 @@ static const u8 DexDescription_Schneckmag_2[] = _(
"aus und erhärtet. Sein Körper wird\n"
"spröde und es brechen Stücke heraus,\n"
"so dass es kleiner wird.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Magcargo_1[] = _(
+ "MAGCARGOs Körpertemperatur liegt bei\n"
+ "etwa 10.000 Grad. Dieses POKéMON\n"
+ "bringt Wasser sofort zum Verdampfen.");
+static const u8 DexDescription_Magcargo_2[] = _(
+ "Wenn dieses POKéMON im Regen steht,\n"
+ "werden die Tropfen augenblicklich zu\n"
+ "Dampf und es entsteht dichter Nebel.");
+#else
static const u8 DexDescription_Magcargo_1[] = _(
"MAGCARGOs Schale ist eigentlich seine\n"
"Haut, die erhärtet ist, als es auskühlte.\n"
@@ -1876,7 +3290,18 @@ static const u8 DexDescription_Magcargo_2[] = _(
"zerbrechlich. Schon bei einer leichten\n"
"Berührung bricht sie auseinander. Dann\n"
"muss es ein Bad in Magma nehmen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Quiekel_1[] = _(
+ "Auf Nahrungssuche schnüffelt QUIEKEL\n"
+ "am Boden entlang. Seine \n"
+ "Lieblingsspeise ist ein Pilz, der unter");
+static const u8 DexDescription_Quiekel_2[] = _(
+ "abgestorbenem Gras wächst. \n"
+ "Manchmal spürt dieses POKéMON heiße\n"
+ "Quellen auf.");
+#else
static const u8 DexDescription_Quiekel_1[] = _(
"Auf Nahrungssuche schnüffelt QUIEKEL\n"
"am Boden entlang. Seine \n"
@@ -1885,7 +3310,18 @@ static const u8 DexDescription_Quiekel_2[] = _(
"verwesendem Gras wächst. \n"
"Manchmal spürt dieses POKéMON heiße\n"
"Quellen auf.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Keifel_1[] = _(
+ "KEIFEL hat ein dichtes Fell aus langen\n"
+ "Haaren. Dadurch ist es gegen eisige\n"
+ "Kälte gewappnet.");
+static const u8 DexDescription_Keifel_2[] = _(
+ "Dieses POKéMON benutzt seine\n"
+ "Stoßzähne, um an Nahrung zu gelangen,\n"
+ "die unter dem Eis eingeschlossen ist.");
+#else
static const u8 DexDescription_Keifel_1[] = _(
"KEIFEL hat ein dichtes Fell aus langen\n"
"Haaren. Dadurch ist es gegen eisige\n"
@@ -1894,7 +3330,18 @@ static const u8 DexDescription_Keifel_2[] = _(
"Dieses POKéMON benutzt seine\n"
"Hauer, um an Nahrung zu gelangen, die\n"
"unter dem Eis eingeschlossen ist.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Corasonn_1[] = _(
+ "Scharen von CORASONN sammeln sich im\n"
+ "warmen Meer und dienen kleineren\n"
+ "POKéMON als ideale Plätze zum");
+static const u8 DexDescription_Corasonn_2[] = _(
+ "Verstecken. Wenn die Wassertemperatur\n"
+ "sinkt, wandert dieses POKéMON in die\n"
+ "südlichen Meere ab.");
+#else
static const u8 DexDescription_Corasonn_1[] = _(
"Wenn CORASONNs Arme Sonnenlicht\n"
"abbekommen, glitzern sie wunderschön\n"
@@ -1902,6 +3349,7 @@ static const u8 DexDescription_Corasonn_1[] = _(
static const u8 DexDescription_Corasonn_2[] = _(
"abbricht, wächst über Nacht ein neuer\n"
"nach.");
+#endif
static const u8 DexDescription_Remoraid_1[] = _(
"REMORAID saugt Wasser ein und spritzt\n"
@@ -1921,6 +3369,16 @@ static const u8 DexDescription_Octillery_2[] = _(
"Wenn ein Feind zu stark ist, speit es\n"
"Tinte aus und flüchtet.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Botogel_1[] = _(
+ "BOTOGEL sammelt seine Nahrung in\n"
+ "seinem Schweif. Es gab einmal einen\n"
+ "berühmten Entdecker, der es dank eines");
+static const u8 DexDescription_Botogel_2[] = _(
+ "BOTOGEL geschafft hat, einen der\n"
+ "höchsten Berge der Welt zu besteigen.\n"
+ "Es hat seine Nahrung mit ihm geteilt.");
+#else
static const u8 DexDescription_Botogel_1[] = _(
"BOTOGEL sammelt seine Nahrung in\n"
"seinem Schweif. Es gab einmal einen\n"
@@ -1929,7 +3387,18 @@ static const u8 DexDescription_Botogel_2[] = _(
"BOTOGELs geschafft hat, einen der\n"
"höchsten Berge der Welt zu besteigen.\n"
"Es hatte seine Nahrung mit ihm geteilt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Mantax_1[] = _(
+ "An schönen Tagen sieht man Scharen\n"
+ "von MANTAX elegant über die Wellen des\n"
+ "Ozeans springen.");
+static const u8 DexDescription_Mantax_2[] = _(
+ "Durch REMORAID, die an ihm haften\n"
+ "und ihn begleiten, fühlt sich dieses\n"
+ "POKéMON nicht belästigt.");
+#else
static const u8 DexDescription_Mantax_1[] = _(
"An schönen Tagen sieht man Schwärme\n"
"von MANTAX elegant über die Wellen des\n"
@@ -1938,7 +3407,17 @@ static const u8 DexDescription_Mantax_2[] = _(
"Durch REMORAID, die an ihm haften\n"
"und ihn begleiten, fühlt sich dieses\n"
"POKéMON nicht belästigt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Panzaeron_1[] = _(
+ "PANZAERONs Stahlflügel bekommen in den\n"
+ "vielen Kämpfen, die es austrägt, Risse\n"
+ "und Beulen. Einmal im Jahr wachsen");
+static const u8 DexDescription_Panzaeron_2[] = _(
+ "seine Flügel komplett nach und werden\n"
+ "wiederhergestellt.");
+#else
static const u8 DexDescription_Panzaeron_1[] = _(
"PANZAERON ist komplett in einen harten,\n"
"schützenden Panzer eingehüllt. Dieses\n"
@@ -1946,6 +3425,7 @@ static const u8 DexDescription_Panzaeron_1[] = _(
static const u8 DexDescription_Panzaeron_2[] = _(
"Es greift seine Feinde mit seinen\n"
"messerscharfen Flügeln an.");
+#endif
static const u8 DexDescription_Hunduster_1[] = _(
"HUNDUSTER jagen in Gruppen. Sie\n"
@@ -1965,13 +3445,31 @@ static const u8 DexDescription_Hundemon_2[] = _(
"durch das Ausfechten von Kämpfen\n"
"untereinander.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Seedraking_1[] = _(
+ "SEEDRAKING schläft auf dem Meeres-\n"
+ "boden, wo ansonsten niemand lebt. Wenn\n"
+ "ein Sturm aufkommt, wacht es auf und");
+static const u8 DexDescription_Seedraking_2[] = _(
+ "macht sich auf die Suche nach Beute.");
+#else
static const u8 DexDescription_Seedraking_1[] = _(
"SEEDRAKING lebt in den Tiefen des\n"
"Ozeans, die ansonsten verwaist sind.\n"
"Lange hat man geglaubt, dass das");
static const u8 DexDescription_Seedraking_2[] = _(
"Gähnen dieses POKéMON Strudel auslöst.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Phanpy_1[] = _(
+ "PHANPY kann sich mit seiner langen Nase\n"
+ "selbst duschen. Wenn andere dabei sind,\n"
+ "begießen sie sich gegenseitig mit");
+static const u8 DexDescription_Phanpy_2[] = _(
+ "Wasser. Danach trocknet es seinen \n"
+ "durchnässten Körper am Ufer.");
+#else
static const u8 DexDescription_Phanpy_1[] = _(
"Um sich ein Nest zu bauen, gräbt\n"
"PHANPY am Flussufer ein Loch ins\n"
@@ -1980,7 +3478,17 @@ static const u8 DexDescription_Phanpy_2[] = _(
"seines Nests mit Hilfe seines Rüssels,\n"
"damit seine Artgenossen wissen, dass\n"
"dieses Gebiet vergeben ist.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Donphan_1[] = _(
+ "DONPHAN kann mit seinem harten Körper\n"
+ "sogar ein Haus zerstören. Mit seiner\n"
+ "imposanten Kraft hilft dieses POKéMON");
+static const u8 DexDescription_Donphan_2[] = _(
+ "dabei, Erdrutsche aus dem Weg zu\n"
+ "räumen, die Bergpfade versperren.");
+#else
static const u8 DexDescription_Donphan_1[] = _(
"DONPHANs Lieblingsattacke ist es, als\n"
"Ball zusammengerollt mit voller Wucht\n"
@@ -1988,6 +3496,7 @@ static const u8 DexDescription_Donphan_1[] = _(
static const u8 DexDescription_Donphan_2[] = _(
"Wenn es erst einmal rollt, ist dieses\n"
"POKéMON nur schwer aufzuhalten.");
+#endif
static const u8 DexDescription_Porygon2_1[] = _(
"PORYGON2 wurde in einem\n"
@@ -1998,6 +3507,14 @@ static const u8 DexDescription_Porygon2_2[] = _(
"selbstständig neue Gesten und Gefühle\n"
"erlernen kann.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Damhirplex_1[] = _(
+ "DAMHIRPLEX hat ein prächtiges Geweih,\n"
+ "für das hohe Preise gezahlt werden.\n"
+ "Daher wurde dieses POKéMON gejagt");
+static const u8 DexDescription_Damhirplex_2[] = _(
+ "und wäre beinahe ausgestorben.");
+#else
static const u8 DexDescription_Damhirplex_1[] = _(
"DAMHIRPLEX hat ein prächtiges Geweih,\n"
"für das hohe Preise gezahlt werden, da\n"
@@ -2005,7 +3522,18 @@ static const u8 DexDescription_Damhirplex_1[] = _(
static const u8 DexDescription_Damhirplex_2[] = _(
"Daher wurde dieses POKéMON gejagt und\n"
"wäre beinahe ausgestorben.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Farbeagle_1[] = _(
+ "FARBEAGLE markiert sein Revier mit\n"
+ "einer Flüssigkeit, die aus seiner\n"
+ "Schweifspitze austritt.");
+static const u8 DexDescription_Farbeagle_2[] = _(
+ "Es wurden über 5.000 unterschiedliche\n"
+ "Markierungen entdeckt, die dieses\n"
+ "POKéMON hinterlassen hat.");
+#else
static const u8 DexDescription_Farbeagle_1[] = _(
"FARBEAGLE markiert sein Revier mit\n"
"einer Flüssigkeit, die aus seiner\n"
@@ -2014,7 +3542,18 @@ static const u8 DexDescription_Farbeagle_2[] = _(
"Es wurden über 5000 unterschiedliche\n"
"Markierungen entdeckt, die dieses\n"
"POKéMON hinterlassen hat.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Rabauz_1[] = _(
+ "RABAUZ muss jeden Tag trainieren,\n"
+ "sonst ist es nicht ausgelastet und\n"
+ "reagiert gestresst. Wenn man dieses");
+static const u8 DexDescription_Rabauz_2[] = _(
+ "POKéMON trainiert, muss man\n"
+ "zahlreiche Trainingsmethoden\n"
+ "einsetzen und ausbauen.");
+#else
static const u8 DexDescription_Rabauz_1[] = _(
"RABAUZ muss jeden Tag trainieren,\n"
"sonst ist es nicht ausgelastet und\n"
@@ -2023,7 +3562,18 @@ static const u8 DexDescription_Rabauz_2[] = _(
"POKéMON trainiert, muss man\n"
"zahlreiche Trainingsmethoden\n"
"einsetzen und sie ständig ausbauen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kapoera_1[] = _(
+ "KAPOERA dreht sich auf dem Kopf\n"
+ "stehend um die eigene Achse und teilt\n"
+ "Tritte aus. Seine Technik ist eine");
+static const u8 DexDescription_Kapoera_2[] = _(
+ "bemerkenswerte Mischung aus Angriff \n"
+ "und Verteidigung. Es bewegt sich\n"
+ "drehend schneller voran als laufend.");
+#else
static const u8 DexDescription_Kapoera_1[] = _(
"KAPOERA dreht sich auf dem Kopf\n"
"stehend um die eigene Achse und teilt\n"
@@ -2032,7 +3582,18 @@ static const u8 DexDescription_Kapoera_2[] = _(
"bemerkenswerte Mischung aus Angriff \n"
"und Verteidigung. Es bewegt sich \n"
"drehend schneller voran als laufend.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kussilla_1[] = _(
+ "KUSSILLA läuft hektisch umher, fällt\n"
+ "aber auch ziemlich oft hin. Es lässt\n"
+ "keine Möglichkeit aus, sein Spiegelbild");
+static const u8 DexDescription_Kussilla_2[] = _(
+ "zu betrachten, um sicherzustellen,\n"
+ "dass sein Gesicht nicht schmutzig\n"
+ "geworden ist.");
+#else
static const u8 DexDescription_Kussilla_1[] = _(
"KUSSILLA läuft hektisch umher, fällt\n"
"aber auch ziemlich oft hin. Es lässt\n"
@@ -2041,6 +3602,7 @@ static const u8 DexDescription_Kussilla_2[] = _(
"zu betrachten, um sicherzustellen,\n"
"dass sein Gesicht nicht schmutzig\n"
"geworden ist.");
+#endif
static const u8 DexDescription_Elekid_1[] = _(
"ELEKID speichert Elektrizität in seinem\n"
@@ -2067,6 +3629,16 @@ static const u8 DexDescription_Miltank_2[] = _(
"Menschen, die keine Milch trinken,\n"
"essen sie stattdessen als Joghurt.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Heiteira_1[] = _(
+ "HEITEIRA nimmt mit seinem flauschigen\n"
+ "Fell Traurigkeit wahr. Es hastet zu\n"
+ "einer traurigen Person, egal, wie weit");
+static const u8 DexDescription_Heiteira_2[] = _(
+ "diese entfernt ist und teilt ein \n"
+ "GLÜCKS-EI mit ihr, um sie zum\n"
+ "Lächeln zu bringen.");
+#else
static const u8 DexDescription_Heiteira_1[] = _(
"HEITEIRA nimmt mit seinem flauschigen\n"
"Fell Traurigkeit wahr. Es hastet zu\n"
@@ -2075,6 +3647,7 @@ static const u8 DexDescription_Heiteira_2[] = _(
"diese entfernt ist und teilt ein \n"
"GLÜCKS-EI mit ihr, um sie zum Lächeln\n"
"zu bringen.");
+#endif
static const u8 DexDescription_Raikou_1[] = _(
"RAIKOU ist so schnell wie der Blitz. Das\n"
@@ -2093,12 +3666,21 @@ static const u8 DexDescription_Entei_2[] = _(
"alles auslöschen, was mit ihnen in\n"
"Kontakt kommt.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Suicune_1[] = _(
+ "SUICUNE wohnt die Reinheit einer\n"
+ "Quelle inne. Es läuft graziös herum und \n"
+ "hat die Macht, schmutziges Wasser zu");
+static const u8 DexDescription_Suicune_2[] = _(
+ "reinigen.");
+#else
static const u8 DexDescription_Suicune_1[] = _(
"SUICUNE wohnt die Reinheit einer\n"
"Quelle inne. Es bewegt sich graziös und \n"
"hat die Macht, schmutziges Wasser zu");
static const u8 DexDescription_Suicune_2[] = _(
"reinigen.");
+#endif
static const u8 DexDescription_Larvitar_1[] = _(
"LARVITAR wurde tief unter der Erde\n"
@@ -2108,6 +3690,16 @@ static const u8 DexDescription_Larvitar_2[] = _(
"Erdreich fressen. Erst dann bekommt es\n"
"seine Eltern zu Gesicht.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pupitar_1[] = _(
+ "PUPITAR erzeugt in seinem Körper ein\n"
+ "Gas, das es komprimiert und kraftvoll\n"
+ "ausstößt, um sich wie ein");
+static const u8 DexDescription_Pupitar_2[] = _(
+ "Düsenflugzeug anzutreiben. Sein Körper\n"
+ "ist robust und hält auch Angriffen mit\n"
+ "massivem Stahl stand.");
+#else
static const u8 DexDescription_Pupitar_1[] = _(
"PUPITAR erzeugt in seinem Körper ein\n"
"Gas, das es komprimiert und kraftvoll\n"
@@ -2116,6 +3708,7 @@ static const u8 DexDescription_Pupitar_2[] = _(
"Düsenflugzeug anzutreiben. Sein\n"
"Körper ist sehr robust und er hält\n"
"auch massivem Stahl stand.");
+#endif
static const u8 DexDescription_Despotar_1[] = _(
"DESPOTAR ist erstaunlich stark. Es\n"
@@ -2125,6 +3718,16 @@ static const u8 DexDescription_Despotar_2[] = _(
"wandert in den Bergen umher und sucht\n"
"nach Gegnern für einen Kampf.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Lugia_1[] = _(
+ "LUGIAs Flügel haben eine\n"
+ "zerstörerische Kraft. Bereits ein\n"
+ "leichtes Flattern kann Häuser");
+static const u8 DexDescription_Lugia_2[] = _(
+ "hinfortwehen. Daher hat sich dieses\n"
+ "POKéMON dafür entschieden, tief unten\n"
+ "im Meer zu leben, wo es niemand sieht.");
+#else
static const u8 DexDescription_Lugia_1[] = _(
"LUGIAs Flügel haben eine\n"
"zerstörerische Kraft. Bereits ein\n"
@@ -2133,6 +3736,7 @@ static const u8 DexDescription_Lugia_2[] = _(
"hinfortwehen. Daher hat sich dieses\n"
"POKéMON dafür entschieden, tief unter\n"
"dem Meer zu leben, wo es niemand sieht.");
+#endif
static const u8 DexDescription_HoOh_1[] = _(
"HO-OHs Federn leuchten in sieben\n"
@@ -2143,6 +3747,15 @@ static const u8 DexDescription_HoOh_2[] = _(
"bringen. Dieses POKéMON lebt am Fuße\n"
"eines Regenbogens.");
+#ifdef SAPPHIRE
+static const u8 DexDescription_Celebi_1[] = _(
+ "Dieses POKéMON kommt aus der Zukunft\n"
+ "und ist durch die Zeit gereist. Solange\n"
+ "CELEBI auftaucht, ist der");
+static const u8 DexDescription_Celebi_2[] = _(
+ "Menschheit angeblich eine rosige\n"
+ "Zukunft beschieden.");
+#else
static const u8 DexDescription_Celebi_1[] = _(
"Dieses POKéMON kommt aus der Zukunft\n"
"und ist durch die Zeit gereist. Solange\n"
@@ -2150,7 +3763,17 @@ static const u8 DexDescription_Celebi_1[] = _(
static const u8 DexDescription_Celebi_2[] = _(
"ist der Menschheit angeblich eine\n"
"rosige Zukunft beschieden.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Geckarbor_1[] = _(
+ "GECKARBOR ist ruhig und beherrscht, es\n"
+ "gerät niemals in Panik. Wenn es ein\n"
+ "stärkerer Feind zornig anstarrt,");
+static const u8 DexDescription_Geckarbor_2[] = _(
+ "erwidert es den bösen Blick, weicht aber\n"
+ "keinen Millimeter zurück.");
+#else
static const u8 DexDescription_Geckarbor_1[] = _(
"Mit den kleinen Haken unter seinen\n"
"Füßen kann GECKARBOR an Wänden\n"
@@ -2158,7 +3781,17 @@ static const u8 DexDescription_Geckarbor_1[] = _(
static const u8 DexDescription_Geckarbor_2[] = _(
"Feinde an, indem es mit seinem\n"
"mächtigen Schweif zuschlägt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Reptain_1[] = _(
+ "Dieses POKéMON fliegt geschickt von\n"
+ "Ast zu Ast. Keinem POKéMON wird es\n"
+ "jemals gelingen, ein REPTAIN zu");
+static const u8 DexDescription_Reptain_2[] = _(
+ "erwischen. Da kann es noch so schnell\n"
+ "sein.");
+#else
static const u8 DexDescription_Reptain_1[] = _(
"REPTAIN kann sich mit den Blättern, die\n"
"aus seinem Körper herauswachsen, im\n"
@@ -2167,7 +3800,18 @@ static const u8 DexDescription_Reptain_2[] = _(
"Dieses POKéMON ist ein wahrer Meister\n"
"darin, auf die Bäume des Dschungels zu\n"
"klettern.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Gewaldro_1[] = _(
+ "Auf GEWALDROs Rücken wachsen Samen.\n"
+ "Darin sind Nährstoffe, die Bäume\n"
+ "beleben können. Dieses POKéMON");
+static const u8 DexDescription_Gewaldro_2[] = _(
+ "achtet mit viel Fürsorge darauf, dass\n"
+ "die Bäume seines Waldes prächtig\n"
+ "gedeihen.");
+#else
static const u8 DexDescription_Gewaldro_1[] = _(
"Die Blätter, die auf GEWALDROs Körper\n"
"wachsen, sind sehr scharfkantig. Dieses\n"
@@ -2175,7 +3819,17 @@ static const u8 DexDescription_Gewaldro_1[] = _(
static const u8 DexDescription_Gewaldro_2[] = _(
"Ast zu Ast und springt seine Feinde\n"
"von oben oder hinten an.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Flemmli_1[] = _(
+ "In FLEMMLIs Körper brennt eine\n"
+ "Flamme. Wenn man es umarmt, beginnt\n"
+ "es zu glühen.");
+static const u8 DexDescription_Flemmli_2[] = _(
+ "Dieses POKéMON trägt ein flauschiges\n"
+ "Fell aus Daunen.");
+#else
static const u8 DexDescription_Flemmli_1[] = _(
"FLEMMLI hängt an seinem Trainer wie\n"
"eine Klette. Es schlurft immer hinter ihm\n"
@@ -2183,7 +3837,17 @@ static const u8 DexDescription_Flemmli_1[] = _(
static const u8 DexDescription_Flemmli_2[] = _(
"heißes Feuer, das seinen Feinden\n"
"ordentlich einheizt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Jungglut_1[] = _(
+ "JUNGGLUT stößt im Kampf glühend\n"
+ "heiße Flammen aus seinem Schnabel aus\n"
+ "und setzt extrem vernichtende Tritte");
+static const u8 DexDescription_Jungglut_2[] = _(
+ "ein. Das Geschrei dieses POKéMON ist\n"
+ "sehr laut und verwirrend.");
+#else
static const u8 DexDescription_Jungglut_1[] = _(
"JUNGGLUT trainiert seine Beine und\n"
"Oberschenkel, indem es über Felder und\n"
@@ -2192,7 +3856,18 @@ static const u8 DexDescription_Jungglut_2[] = _(
"sind sowohl schnell als auch kräftig,\n"
"so dass es 10 Tritte pro Sekunde\n"
"ausführen kann.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Lohgock_1[] = _(
+ "LOHGOCK besitzt unglaublich starke\n"
+ "Beine, mit denen es ein 30 Stockwerke\n"
+ "hohes Gebäude mit einem Sprung");
+static const u8 DexDescription_Lohgock_2[] = _(
+ "überwinden kann. Die flammenden Schläge\n"
+ "dieses POKéMON lassen verkohlte Gegner\n"
+ "zurück.");
+#else
static const u8 DexDescription_Lohgock_1[] = _(
"LOHGOCK stößt heftige Flammen aus\n"
"seinen Handgelenken aus und greift\n"
@@ -2200,7 +3875,18 @@ static const u8 DexDescription_Lohgock_1[] = _(
static const u8 DexDescription_Lohgock_2[] = _(
"Feind ist, desto stärker lodern die\n"
"Handgelenke dieses POKéMON.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Hydropi_1[] = _(
+ "Im Wasser atmet HYDROPI durch die\n"
+ "Kiemen an seinen Wangen. Wenn es im\n"
+ "Kampf in eine brenzlige Situation gerät,");
+static const u8 DexDescription_Hydropi_2[] = _(
+ "setzt es seine verblüffende Kraft ein,\n"
+ "mit der es Felsbrocken zerquetschen\n"
+ "kann, die größer sind als es selbst.");
+#else
static const u8 DexDescription_Hydropi_1[] = _(
"Die Flosse an HYDROPIs Kopf dient als\n"
"hochempfindliches Radar. Damit kann es\n"
@@ -2209,7 +3895,17 @@ static const u8 DexDescription_Hydropi_2[] = _(
"wahrnehmen. So weiß es jederzeit, was\n"
"in seiner Umgebung passiert, ohne\n"
"dabei seine Augen zu benutzen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Moorabbel_1[] = _(
+ "MOORABBEL kommt im Schlamm besser\n"
+ "voran als im Wasser. Das Hinterteil\n"
+ "dieses POKéMON ist gut entwickelt,");
+static const u8 DexDescription_Moorabbel_2[] = _(
+ "so dass es auf seinen Hinterbeinen\n"
+ "laufen kann.");
+#else
static const u8 DexDescription_Moorabbel_1[] = _(
"MOORABBELs Körper ist mit einem\n"
"klebrigen Film überzogen, durch den es\n"
@@ -2217,7 +3913,18 @@ static const u8 DexDescription_Moorabbel_1[] = _(
static const u8 DexDescription_Moorabbel_2[] = _(
"spielt bei Ebbe in den Schlammpfützen\n"
"am Strand.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Sumpex_1[] = _(
+ "SUMPEX kann Stürme voraussagen,\n"
+ "indem es feine Veränderungen der\n"
+ "Geräusche von Wellen und Wind mit");
+static const u8 DexDescription_Sumpex_2[] = _(
+ "seinen Finnen wahrnimmt. Wenn eine\n"
+ "Sturmfront aufzieht, häuft es\n"
+ "Felsbrocken an, um sich zu schützen.");
+#else
static const u8 DexDescription_Sumpex_1[] = _(
"SUMPEX ist sehr stark. Es kann mit\n"
"Leichtigkeit einen Felsblock bewegen,\n"
@@ -2226,7 +3933,18 @@ static const u8 DexDescription_Sumpex_2[] = _(
"Weiterhin ist es mit einem exzellenten\n"
"Sehvermögen ausgestattet, wodurch es\n"
"auch in trüben Gewässern sehen kann.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Fiffyen_1[] = _(
+ "FIFFYEN ist ein Allesfresser.\n"
+ "Auffällig an diesem POKéMON ist das\n"
+ "Verhältnis seiner Körpergröße zur");
+static const u8 DexDescription_Fiffyen_2[] = _(
+ "Länge seiner Zähne. Es versucht Feinde\n"
+ "einzuschüchtern, indem es die Haare an\n"
+ "seinem Schweif abstehen lässt.");
+#else
static const u8 DexDescription_Fiffyen_1[] = _(
"Sobald FIFFYEN eine Bewegung wahr-\n"
"nimmt, schnappt es zu. Es jagt seine\n"
@@ -2235,7 +3953,16 @@ static const u8 DexDescription_Fiffyen_2[] = _(
"erschöpft ist. Wenn sich die Beute\n"
"allerdings wehrt, kann es passieren, \n"
"dass FIFFYEN klein beigibt und flieht.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Magnayen_1[] = _(
+ "MAGNAYEN zieht in Gruppen durch die\n"
+ "Wildnis. Durch seine Erfahrungen in der\n"
+ "Wildnis hört es nur auf TRAINER, die");
+static const u8 DexDescription_Magnayen_2[] = _(
+ "außergewöhnliche Fähigkeiten haben.");
+#else
static const u8 DexDescription_Magnayen_1[] = _(
"MAGNAYEN sendet deutliche Signale\n"
"aus, wenn es sich auf einen Angriff\n"
@@ -2243,14 +3970,36 @@ static const u8 DexDescription_Magnayen_1[] = _(
static const u8 DexDescription_Magnayen_2[] = _(
"sich flach. Dieses POKéMON kann mit\n"
"seinen spitzen Zähnen brutal zubeißen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Zigzachs_1[] = _(
+ "Das Haar auf ZIGZACHS’ Rücken ist\n"
+ "struppig. Es reibt seine Rückenborsten\n"
+ "an Bäumen, um sein Revier zu markieren.");
+static const u8 DexDescription_Zigzachs_2[] = _(
+ "Dieses POKéMON stellt sich im Kampf\n"
+ "schon einmal tot, um seine Feinde\n"
+ "reinzulegen.");
+#else
static const u8 DexDescription_Zigzachs_1[] = _(
"ZIGZACHS ist ein rastloser Wanderer.\n"
"Dieses POKéMON ist nämlich sehr\n"
"neugierig und es inspiziert alles,");
static const u8 DexDescription_Zigzachs_2[] = _(
"was ihm zufällig begegnet.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Geradaks_1[] = _(
+ "Auf der Jagd rennt GERADAKS so schnell\n"
+ "es kann schnurstracks hinter seiner\n"
+ "Beute her. Es erreicht zwar über");
+static const u8 DexDescription_Geradaks_2[] = _(
+ "100 km/h, muss aber erst aus vollem\n"
+ "Lauf zum Stehen kommen, bevor es die\n"
+ "Richtung wechseln kann.");
+#else
static const u8 DexDescription_Geradaks_1[] = _(
"GERADAKS rennt immer mit vollem Tempo\n"
"und nie im Zickzack, sondern nur gerade.\n"
@@ -2259,7 +4008,18 @@ static const u8 DexDescription_Geradaks_2[] = _(
"läuft es rechtwinklig daran vorbei. Für\n"
"dieses POKéMON stellen leichte Kurven\n"
"eine große Herausforderung dar.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Waumpel_1[] = _(
+ "WAUMPEL wird von SCHWALBOSS als Beute\n"
+ "angesehen. Dieses POKéMON wehrt sich\n"
+ "gegen angreifende Räuber, indem es die");
+static const u8 DexDescription_Waumpel_2[] = _(
+ "Stacheln an seinem Hinterteil auf sie\n"
+ "richtet. Es schwächt seine Gegner mit\n"
+ "dem Gift, das aus den Stacheln austritt.");
+#else
static const u8 DexDescription_Waumpel_1[] = _(
"WAUMPEL kann mit den Stacheln an\n"
"seinem Hinterteil die Rinde von Bäumen\n"
@@ -2268,7 +4028,18 @@ static const u8 DexDescription_Waumpel_2[] = _(
"austretenden Saft. An den Füßen dieses\n"
"POKéMON befinden sich Saugnäpfe, mit\n"
"denen es auch an Glas nicht abrutscht.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Schaloko_1[] = _(
+ "Bisher nahm man an, dass SCHALOKO vor\n"
+ "seiner Entwicklung hungert und\n"
+ "überhaupt nichts zu sich nimmt. Nun");
+static const u8 DexDescription_Schaloko_2[] = _(
+ "aber wird behauptet, dass es seinen \n"
+ "Durst mit Regenwasser löscht, das sich\n"
+ "auf seinem seidigen Fell sammelt.");
+#else
static const u8 DexDescription_Schaloko_1[] = _(
"SCHALOKO bindet sich mit einem\n"
"Seidenfaden an einen Ast. Es baumelt\n"
@@ -2276,7 +4047,17 @@ static const u8 DexDescription_Schaloko_1[] = _(
static const u8 DexDescription_Schaloko_2[] = _(
"Durch ein kleines Loch in seinem\n"
"Seidenkokon lugt es heraus.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Papinella_1[] = _(
+ "PAPINELLA hat einen langen Rüssel, der\n"
+ "hervorragend zum Sammeln von Blüten-\n"
+ "pollen geeignet ist. Dieses POKéMON");
+static const u8 DexDescription_Papinella_2[] = _(
+ "flattert im Frühlingswind herum\n"
+ "und sammelt Blütenstaub.");
+#else
static const u8 DexDescription_Papinella_1[] = _(
"PAPINELLAs Lieblingsspeise ist\n"
"Blütenstaub. Wenn du dieses POKéMON\n"
@@ -2285,7 +4066,18 @@ static const u8 DexDescription_Papinella_2[] = _(
"einen Blumentopf vor ein geöffnetes\n"
"Fenster stellen. PAPINELLA wird sich\n"
"diese Leckerei nicht entgehen lassen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Panekon_1[] = _(
+ "Wenn es angegriffen wird, bewegt sich\n"
+ "PANEKON in keiner Weise, egal, wie\n"
+ "schwer es dabei verletzt wird. Wenn es");
+static const u8 DexDescription_Panekon_2[] = _(
+ "sich bewegen würde, wäre sein Körper zu\n"
+ "schwach für seine Entwicklung. Die\n"
+ "Schmerzen allerdings vergisst es nie.");
+#else
static const u8 DexDescription_Panekon_1[] = _(
"PANEKON baut seinen schützenden\n"
"Kokon, indem es seinen Körper mit\n"
@@ -2294,7 +4086,18 @@ static const u8 DexDescription_Panekon_2[] = _(
"Mund austritt. Wenn sein Körper mit\n"
"Seide bedeckt ist, wird diese hart. Im\n"
"Kokon wartet es auf seine Entwicklung.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pudox_1[] = _(
+ "Wenn PUDOX mit den Flügeln schlägt,\n"
+ "verteilt es einen feinen Puder. Es\n"
+ "handelt sich um ein starkes Gift, das");
+static const u8 DexDescription_Pudox_2[] = _(
+ "sogar einen Profiboxer umhauen würde.\n"
+ "Bei der Futtersuche benutzt dieses \n"
+ "POKéMON seine Antennen als Radar.");
+#else
static const u8 DexDescription_Pudox_1[] = _(
"PUDOX wird instinktiv vom Licht\n"
"angezogen. In hell erleuchteten \n"
@@ -2303,7 +4106,18 @@ static const u8 DexDescription_Pudox_2[] = _(
"POKéMON dabei beobachten, die\n"
"großen Schaden anrichten, indem sie die\n"
"Blätter von Bäumen abfressen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Loturzel_1[] = _(
+ "LOTURZEL soll einige Zeit an Land\n"
+ "verbracht haben, aber ins Wasser\n"
+ "zurückgekehrt sein, weil das Blatt");
+static const u8 DexDescription_Loturzel_2[] = _(
+ "auf seinem Kopf zu groß und zu schwer\n"
+ "geworden ist. Nun lässt es sich auf dem\n"
+ "Wasser treiben.");
+#else
static const u8 DexDescription_Loturzel_1[] = _(
"LOTURZEL lebt auf der Wasseroberfläche\n"
"von Teichen oder Seen. Es wird\n"
@@ -2312,7 +4126,17 @@ static const u8 DexDescription_Loturzel_2[] = _(
"abstirbt. Nur selten geht dieses\n"
"POKéMON an Land, um nach sauberem\n"
"Wasser Ausschau zu halten.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Lombrero_1[] = _(
+ "LOMBREROs Körper ist mit einem\n"
+ "glitschigen Film bedeckt. Es fühlt sich\n"
+ "widerlich an, wenn einen dieses POKéMON");
+static const u8 DexDescription_Lombrero_2[] = _(
+ "mit seinen Händen berührt. LOMBRERO\n"
+ "wird häufig für ein Kind gehalten.");
+#else
static const u8 DexDescription_Lombrero_1[] = _(
"LOMBRERO liebt die Nacht und wird mit\n"
"Einbruch der Dunkelheit aktiv. Es spielt\n"
@@ -2321,7 +4145,17 @@ static const u8 DexDescription_Lombrero_2[] = _(
"Wenn es Angler sieht, zieht es unter\n"
"Wasser an ihren Angelschnüren und\n"
"erfreut sich an ihrer Entrüstung.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kappalores_1[] = _(
+ "Wenn KAPPALORES einen fröhlichen\n"
+ "Rhythmus hört, werden die Zellen in\n"
+ "seinem Körper aktiviert. Auch im Kampf");
+static const u8 DexDescription_Kappalores_2[] = _(
+ "zeigt dieses POKéMON seine\n"
+ "verblüffende Stärke.");
+#else
static const u8 DexDescription_Kappalores_1[] = _(
"KAPPALORES fängt sofort zu tanzen an,\n"
"wenn es stimmungsvolle, feierliche Musik\n"
@@ -2329,7 +4163,18 @@ static const u8 DexDescription_Kappalores_1[] = _(
static const u8 DexDescription_Kappalores_2[] = _(
"angeblich, wenn es Kinder auf \n"
"Wanderausflügen singen hört.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Samurzel_1[] = _(
+ "SAMURZEL sieht aus wie eine Eichel, wenn\n"
+ "es an einem Ast hängt. Es erschreckt\n"
+ "andere POKéMON, indem es sich dann");
+static const u8 DexDescription_Samurzel_2[] = _(
+ "plötzlich bewegt. Dieses POKéMON\n"
+ "poliert seinen Körper einmal am Tag mit\n"
+ "Blättern.");
+#else
static const u8 DexDescription_Samurzel_1[] = _(
"SAMURZEL hängt sich mit dem Kopf an\n"
"einen Ast. Dabei entzieht es dem Baum\n"
@@ -2337,7 +4182,17 @@ static const u8 DexDescription_Samurzel_1[] = _(
static const u8 DexDescription_Samurzel_2[] = _(
"desto glänzender wird der Körper dieses\n"
"POKéMON.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Blanas_1[] = _(
+ "Dieses POKéMON reißt das Blatt auf\n"
+ "seinem Kopf heraus und benutzt es\n"
+ "als Flöte. Diese Geräusche jagen den");
+static const u8 DexDescription_Blanas_2[] = _(
+ "Menschen, die sich im Wald verirrt haben,\n"
+ "Angst ein.");
+#else
static const u8 DexDescription_Blanas_1[] = _(
"BLANAS lebt in dichten Wäldern.\n"
"Manchmal wagt es sich aus dem Wald\n"
@@ -2345,7 +4200,18 @@ static const u8 DexDescription_Blanas_1[] = _(
static const u8 DexDescription_Blanas_2[] = _(
"Dieses POKéMON mag es überhaupt nicht,\n"
"wenn man seine lange Nase zwickt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tengulist_1[] = _(
+ "TENGULISTs große Fächer erzeugen\n"
+ "Böen, die eine Geschwindigkeit von\n"
+ "30 m/sek erreichen können und alles");
+static const u8 DexDescription_Tengulist_2[] = _(
+ "und jeden hinwegfegen können. Dieses\n"
+ "POKéMON lebt still und zurückgezogen\n"
+ "in den Tiefen der Wälder.");
+#else
static const u8 DexDescription_Tengulist_1[] = _(
"TENGULIST ist ein geheimnisvolles\n"
"POKéMON, das angeblich auf hohen\n"
@@ -2354,7 +4220,17 @@ static const u8 DexDescription_Tengulist_2[] = _(
"alt sind. Mit den Blätterventilatoren an\n"
"seinen Händen kann es heftige Stürme\n"
"erzeugen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Schwalbini_1[] = _(
+ "SCHWALBINI ist noch klein, es hat\n"
+ "gerade erst sein Nest verlassen. Daher\n"
+ "fühlt es sich manchmal einsam und weint");
+static const u8 DexDescription_Schwalbini_2[] = _(
+ "nachts. Dieses POKéMON ernährt sich\n"
+ "von WAUMPEL.");
+#else
static const u8 DexDescription_Schwalbini_1[] = _(
"Mutig behauptet SCHWALBINI sein\n"
"Territorium gegen Eindringlinge, so\n"
@@ -2363,7 +4239,16 @@ static const u8 DexDescription_Schwalbini_2[] = _(
"Dieses unerschrockene POKéMON bleibt\n"
"trotz einer Niederlage angriffslustig,\n"
"heult aber laut, wenn es Hunger hat.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Schwalboss_1[] = _(
+ "SCHWALBOSS ist sehr gewissenhaft bei\n"
+ "der Pflege seiner glänzenden Flügel.\n"
+ "Wenn zwei SCHWALBOSS zusammen sind,");
+static const u8 DexDescription_Schwalboss_2[] = _(
+ "putzen sie sich ihre Flügel gegenseitig.");
+#else
static const u8 DexDescription_Schwalboss_1[] = _(
"Dieses POKéMON taucht in einem steilen\n"
"Winkel ab, sobald es Beute wahrgenommen\n"
@@ -2371,7 +4256,17 @@ static const u8 DexDescription_Schwalboss_1[] = _(
static const u8 DexDescription_Schwalboss_2[] = _(
"seinen Krallen und lässt sie\n"
"nicht mehr entkommen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Wingull_1[] = _(
+ "WINGULL breitet seine langen, schmalen\n"
+ "Flügel aus und segelt im Seewind. Der\n"
+ "lange Schnabel dieses POKéMON");
+static const u8 DexDescription_Wingull_2[] = _(
+ "ist ihm beim Jagen nach Beute sehr\n"
+ "hilfreich.");
+#else
static const u8 DexDescription_Wingull_1[] = _(
"Man sieht WINGULL oft mit seiner\n"
"Beute oder seinen Besitztümern im\n"
@@ -2380,14 +4275,34 @@ static const u8 DexDescription_Wingull_2[] = _(
"nach geeigneten Verstecken. Dieses\n"
"POKéMON fliegt durch die Lüfte, als\n"
"würde es gleiten.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pelipper_1[] = _(
+ "PELIPPER sucht nach Nahrung, während\n"
+ "es über die Wellen fliegt. Dieses \n"
+ "POKéMON taucht seinen großen Schnabel");
+static const u8 DexDescription_Pelipper_2[] = _(
+ "ins Meer, um seine Beute abzuschöpfen.\n"
+ "Dann schluckt es alles auf einmal\n"
+ "herunter.");
+#else
static const u8 DexDescription_Pelipper_1[] = _(
"PELIPPER transportiert kleine POKéMON\n"
"und Eier in seinem riesigen Schnabel\n"
"durch die Lüfte. Dieses POKéMON baut");
static const u8 DexDescription_Pelipper_2[] = _(
"sein Nest auf steilen Klippen am Meer.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Trasla_1[] = _(
+ "TRASLA hat die Fähigkeit, die Emotionen\n"
+ "von Menschen wahrzunehmen. Wenn sein\n"
+ "TRAINER gute Laune hat, ist dieses");
+static const u8 DexDescription_Trasla_2[] = _(
+ "POKéMON ebenfalls fröhlich.");
+#else
static const u8 DexDescription_Trasla_1[] = _(
"TRASLA nimmt mit den Hörnern an seinem\n"
"Kopf die Gefühle von Menschen wahr.\n"
@@ -2396,7 +4311,18 @@ static const u8 DexDescription_Trasla_2[] = _(
"nur selten zu Gesicht. Wenn es bemerkt,\n"
"dass eine Person gut gelaunt ist, traut\n"
"es sich näher an sie heran.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kirlia_1[] = _(
+ "KIRLIA benutzt die Hörner an seinem\n"
+ "Kopf dazu, seine psychokinetische\n"
+ "Energie zu verstärken. Wenn dieses");
+static const u8 DexDescription_Kirlia_2[] = _(
+ "POKéMON seine spezielle Kraft einsetzt,\n"
+ "wird die Luft verformt und ein Trugbild\n"
+ "einer Landschaft erzeugt.");
+#else
static const u8 DexDescription_Kirlia_1[] = _(
"Man sagt, dass ein KIRLIA, das häufig\n"
"positive Emotionen seines TRAINERs\n"
@@ -2405,7 +4331,18 @@ static const u8 DexDescription_Kirlia_2[] = _(
"Dieses POKéMON kontrolliert\n"
"psychokinetische Energie mit seinem\n"
"hochentwickelten Gehirn.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Guardevoir_1[] = _(
+ "GUARDEVOIR kann mit seiner psycho-\n"
+ "kinetischen Energie die Dimensionen\n"
+ "verzerren und ein kleines Schwarzes");
+static const u8 DexDescription_Guardevoir_2[] = _(
+ "Loch erzeugen. Es schützt seinen\n"
+ "TRAINER selbst unter Einsatz seines\n"
+ "eigenen Lebens.");
+#else
static const u8 DexDescription_Guardevoir_1[] = _(
"GUARDEVOIR kann in die Zukunft\n"
"schauen. Wenn es eine Gefahr für seinen\n"
@@ -2413,7 +4350,17 @@ static const u8 DexDescription_Guardevoir_1[] = _(
static const u8 DexDescription_Guardevoir_2[] = _(
"psychokinetische Energie mit voller\n"
"Kraft.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Gehweiher_1[] = _(
+ "Wenn GEHWEIHER Gefahr wittert,\n"
+ "scheidet es einen dickflüssigen Sirup\n"
+ "aus seinem Kopf aus. Es gibt einige");
+static const u8 DexDescription_Gehweiher_2[] = _(
+ "POKéMON, die ganz wild auf diesen\n"
+ "Sirup sind.");
+#else
static const u8 DexDescription_Gehweiher_1[] = _(
"GEHWEIHER scheidet aus seinen Zehen\n"
"ein Öl aus, das es ihm ermöglicht, über\n"
@@ -2421,7 +4368,18 @@ static const u8 DexDescription_Gehweiher_1[] = _(
static const u8 DexDescription_Gehweiher_2[] = _(
"ernährt sich von Mikroorganismen aus\n"
"Teichen und Seen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Maskeregen_1[] = _(
+ "MASKEREGENs Antennen haben ein\n"
+ "augenähnliches Muster, das ihm ein\n"
+ "Furcht erregendes Äußeres verleiht.");
+static const u8 DexDescription_Maskeregen_2[] = _(
+ "Wenn seine “Augen” \n"
+ "traurig aussehen, ist ein heftiger \n"
+ "Regenguss im Anzug.");
+#else
static const u8 DexDescription_Maskeregen_1[] = _(
"MASKEREGEN schüchtert seine Feinde\n"
"mit den augenähnlichen Mustern auf\n"
@@ -2430,7 +4388,17 @@ static const u8 DexDescription_Maskeregen_2[] = _(
"kann mit seinen vier Flügeln wie ein\n"
"Hubschrauber in jede Richtung fliegen,\n"
"sogar seitwärts und rückwärts.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Knilz_1[] = _(
+ "Wenn KNILZ Gefahr wittert, \n"
+ "schüttelt es seinen Körper und verteilt\n"
+ "Sporen von seinem Kopf.");
+static const u8 DexDescription_Knilz_2[] = _(
+ "Diese Sporen sind so giftig, dass Bäume\n"
+ "und Gräser davon eingehen.");
+#else
static const u8 DexDescription_Knilz_1[] = _(
"KNILZ lebt im feuchten Erdboden\n"
"finsterer Wälder. Es wird oft reglos\n"
@@ -2438,7 +4406,17 @@ static const u8 DexDescription_Knilz_1[] = _(
static const u8 DexDescription_Knilz_2[] = _(
"gefunden. Dieses POKéMON ernährt sich\n"
"von Kompost aus verrotteten Blättern.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kapilz_1[] = _(
+ "Die Samen am Schweif von KAPILZ\n"
+ "bestehen aus gehärteten Giftsporen.\n"
+ "Man sollte sie lieber nicht essen.");
+static const u8 DexDescription_Kapilz_2[] = _(
+ "Ein einziger Bissen davon kann eine\n"
+ "heftige Magenverstimmung hervorrufen.");
+#else
static const u8 DexDescription_Kapilz_1[] = _(
"Mit leichtfüßiger Beinarbeit nähert \n"
"sich KAPILZ seinen Feinden und\n"
@@ -2447,7 +4425,17 @@ static const u8 DexDescription_Kapilz_2[] = _(
"Armen um sich. Die Kampftechnik dieses\n"
"POKéMON treibt Profiboxern die\n"
"Schamesröte ins Gesicht.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Bummelz_1[] = _(
+ "BUMMELZ’ Herz schlägt nur ein Mal pro\n"
+ "Minute. Dieses POKéMON ist damit\n"
+ "zufrieden, bewegungslos");
+static const u8 DexDescription_Bummelz_2[] = _(
+ "herumzulungern. Nur ganz selten sieht\n"
+ "man dieses POKéMON sich bewegen.");
+#else
static const u8 DexDescription_Bummelz_1[] = _(
"BUMMELZ geht zwanzig Stunden pro Tag\n"
"müßig. Da es sich sehr wenig bewegt,\n"
@@ -2455,7 +4443,18 @@ static const u8 DexDescription_Bummelz_1[] = _(
static const u8 DexDescription_Bummelz_2[] = _(
"Seine Tagesration besteht lediglich aus\n"
"drei Blättern.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Muntier_1[] = _(
+ "MUNTIER findet einfach keine Ruhe.\n"
+ "Wenn es versucht zu schlafen, beginnt\n"
+ "das Blut in seinen Adern zu pulsieren.");
+static const u8 DexDescription_Muntier_2[] = _(
+ "Dann muss es wie wild durch den \n"
+ "Dschungel rennen, um überhaupt Ruhe zu\n"
+ "finden.");
+#else
static const u8 DexDescription_Muntier_1[] = _(
"MUNTIER brennt darauf, sich\n"
"auszutoben. Es kann nicht einmal für\n"
@@ -2463,7 +4462,17 @@ static const u8 DexDescription_Muntier_1[] = _(
static const u8 DexDescription_Muntier_2[] = _(
"Stress, wenn es sich nicht andauernd\n"
"bewegen kann.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Letarking_1[] = _(
+ "Wo dieses LETARKING lebt, hinterlässt\n"
+ "es Kreise von 1 m Radius auf den\n"
+ "Wiesen. Es frisst nämlich all das Gras,");
+static const u8 DexDescription_Letarking_2[] = _(
+ "das in seiner Reichweite wächst. Dabei\n"
+ "liegt es bäuchlings auf dem Boden.");
+#else
static const u8 DexDescription_Letarking_1[] = _(
"LETARKING verbringt den Tag damit,\n"
"herumzuliegen und nichts zu tun. Es \n"
@@ -2472,7 +4481,18 @@ static const u8 DexDescription_Letarking_2[] = _(
"Reichweite wächst. Hat es alles\n"
"aufgefressen, so sucht es sich\n"
"widerwillig ein anderes Plätzchen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Nincada_1[] = _(
+ "NINCADA lebt unter der Erde. Es benutzt\n"
+ "seine scharfen Krallen, um die Wurzeln\n"
+ "von Bäumen freizulegen und an");
+static const u8 DexDescription_Nincada_2[] = _(
+ "Flüssigkeit und Nährstoffe zu kommen. \n"
+ "Dieses POKéMON kann grelles Sonnen-\n"
+ "licht nicht aushalten und meidet es.");
+#else
static const u8 DexDescription_Nincada_1[] = _(
"NINCADA lebt viele Jahre in absoluter\n"
"Dunkelheit unter der Erde. Dieses\n"
@@ -2480,7 +4500,18 @@ static const u8 DexDescription_Nincada_1[] = _(
static const u8 DexDescription_Nincada_2[] = _(
"Baumwurzeln auf. Es rührt sich nicht,\n"
"da es auf seine Entwicklung wartet.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Ninjask_1[] = _(
+ "Wenn NINJASK nicht richtig trainiert\n"
+ "wird, hört es nicht mehr auf seinen\n"
+ "TRAINER und beginnt unaufhörlich und");
+static const u8 DexDescription_Ninjask_2[] = _(
+ "laut zu brüllen. Es stellt die Fähig-\n"
+ "keiten eines TRAINERs auf eine harte\n"
+ "Probe.");
+#else
static const u8 DexDescription_Ninjask_1[] = _(
"NINJASK bewegt sich so schnell, dass\n"
"man es nicht sehen kann. Seine Schreie\n"
@@ -2488,7 +4519,18 @@ static const u8 DexDescription_Ninjask_1[] = _(
static const u8 DexDescription_Ninjask_2[] = _(
"Deshalb hielt man dieses POKéMON lange\n"
"für unsichtbar.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Ninjatom_1[] = _(
+ "NINJATOM ist ein ganz besonderes\n"
+ "POKéMON. Es taucht plötzlich in\n"
+ "einem POKéBALL auf, nachdem sich");
+static const u8 DexDescription_Ninjatom_2[] = _(
+ "ein NINCADA entwickelt hat. Dieses\n"
+ "POKéMON ist absolut bewegungsunfähig\n"
+ "und atmet nicht einmal.");
+#else
static const u8 DexDescription_Ninjatom_1[] = _(
"NINJATOMs harter Körper bewegt sich\n"
"überhaupt nicht. Er scheint bloß eine\n"
@@ -2497,7 +4539,17 @@ static const u8 DexDescription_Ninjatom_2[] = _(
"soll angeblich die Seele eines jeden\n"
"stehlen, der hinterrücks einen Blick in\n"
"seinen hohlen Körper riskiert.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Flurmel_1[] = _(
+ "FLURMEL ist sehr scheu. Wenn es laut\n"
+ "brüllt, erschrickt es und brüllt dadurch\n"
+ "noch lauter. Wenn es schließlich damit");
+static const u8 DexDescription_Flurmel_2[] = _(
+ "aufhört, ist es völlig ausgepumpt und \n"
+ "legt sich schlafen.");
+#else
static const u8 DexDescription_Flurmel_1[] = _(
"Normalerweise ist FLURMELs Stimme sehr\n"
"leise, selbst mit größter Anstrengung\n"
@@ -2505,7 +4557,17 @@ static const u8 DexDescription_Flurmel_1[] = _(
static const u8 DexDescription_Flurmel_2[] = _(
"POKéMON jedoch eine Gefahr wittert,\n"
"stößt es ohrenbetäubende Schreie aus.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Krakeelo_1[] = _(
+ "KRAKEELO schreit und stampft mit\n"
+ "seinen Füßen auf den Boden. Danach\n"
+ "kann es für eine Weile nichts hören.");
+static const u8 DexDescription_Krakeelo_2[] = _(
+ "Dies scheint die Schwachstelle dieses\n"
+ "POKéMON zu sein.");
+#else
static const u8 DexDescription_Krakeelo_1[] = _(
"KRAKEELOs Brüllen kann ein Holzhaus zum\n"
"Einsturz bringen. Es setzt seine Stimme\n"
@@ -2513,7 +4575,18 @@ static const u8 DexDescription_Krakeelo_1[] = _(
static const u8 DexDescription_Krakeelo_2[] = _(
"Die runden Ohren dieses POKéMON dienen\n"
"als Lautsprecher.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Krawumms_1[] = _(
+ "KRAWUMMS vermittelt seinen Artge-\n"
+ "nossen seine Gefühle, indem es eine Art\n"
+ "Pfeifen durch die Röhren an seinem");
+static const u8 DexDescription_Krawumms_2[] = _(
+ "Körper von sich gibt. Dieses\n"
+ "POKéMON erhebt nur im Kampf\n"
+ "seine Stimme.");
+#else
static const u8 DexDescription_Krawumms_1[] = _(
"KRAWUMMS kann durch sein Brüllen\n"
"Erdbeben auslösen. Wenn dieses\n"
@@ -2521,7 +4594,17 @@ static const u8 DexDescription_Krawumms_1[] = _(
static const u8 DexDescription_Krawumms_2[] = _(
"kräftig einatmet, ist es kurz davor,\n"
"ein mächtiges Brüllen von sich zu geben.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Makuhita_1[] = _(
+ "MAKUHITAs Geist ist unbezwingbar. Es\n"
+ "gibt die Hoffnung niemals auf. Es frisst\n"
+ "eine Menge, bekommt viel Schlaf und");
+static const u8 DexDescription_Makuhita_2[] = _(
+ "trainiert unermüdlich. Dadurch füllt es\n"
+ "seinen Körper mit Energie auf.");
+#else
static const u8 DexDescription_Makuhita_1[] = _(
"MAKUHITA ist sehr zäh. Selbst wenn es im\n"
"Kampf mehrfach niedergeschlagen\n"
@@ -2530,14 +4613,35 @@ static const u8 DexDescription_Makuhita_2[] = _(
"greift seinen Gegner an. Bei jedem Mal\n"
"speichert es mehr Energie in seinem\n"
"Körper für seine Entwicklung.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Hariyama_1[] = _(
+ "HARIYAMAs Körper mag vielleicht fett\n"
+ "aussehen, er besteht aber aus festen\n"
+ "Muskeln. Wenn dieses POKéMON all");
+static const u8 DexDescription_Hariyama_2[] = _(
+ "seine Muskeln anspannt, wird sein\n"
+ "Körper steinhart.");
+#else
static const u8 DexDescription_Hariyama_1[] = _(
"HARIYAMA führt seinen berüchtigten\n"
"Streckarm-Schlag überall aus. Ein Schlag\n"
"von diesem POKéMON reicht aus,");
static const u8 DexDescription_Hariyama_2[] = _(
"um einen Strommast zu zerlegen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Azurill_1[] = _(
+ "AZURILLs Schweif ist lang und federnd.\n"
+ "Er ist vollgepackt mit Nährstoffen, die\n"
+ "dieses POKéMON zum Wachsen braucht.");
+static const u8 DexDescription_Azurill_2[] = _(
+ "Man kann es häufig dabei beobachten,\n"
+ "wie es auf seinem gummiartigen Schweif\n"
+ "umherhüpft und spielt.");
+#else
static const u8 DexDescription_Azurill_1[] = _(
"AZURILL schleudert seinen Schweif wie\n"
"ein Lasso weit aus und fliegt dann \n"
@@ -2546,7 +4650,18 @@ static const u8 DexDescription_Azurill_2[] = _(
"hat es auf diese Weise geschafft, die\n"
"Rekordweite von 10 Metern\n"
"zurückzulegen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Nasgnet_1[] = _(
+ "NASGNET wurde zunächst als völlig\n"
+ "unbeweglich beschrieben, da seine\n"
+ "magnetische Nase immer nach Norden");
+static const u8 DexDescription_Nasgnet_2[] = _(
+ "zeigt. Genauere Beobachtungen haben\n"
+ "jedoch ergeben, dass es sich pro Jahr\n"
+ "tatsächlich etwa um 1 cm bewegt.");
+#else
static const u8 DexDescription_Nasgnet_1[] = _(
"NASGNET besitzt eine magnetische\n"
"Nase, die immer nach Norden zeigt. Wenn\n"
@@ -2555,7 +4670,17 @@ static const u8 DexDescription_Nasgnet_2[] = _(
"sich einander nicht zuwenden, da ihre\n"
"magnetischen Nasen sich gegenseitig\n"
"abstoßen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Eneco_1[] = _(
+ "ENECO jagt spielerisch seinen eigenen\n"
+ "Schweif. In der Wildnis lebt dieses\n"
+ "POKéMON in den Löchern von Bäumen.");
+static const u8 DexDescription_Eneco_2[] = _(
+ "Es ist als Haustier sehr beliebt, da es\n"
+ "bezaubernd aussieht.");
+#else
static const u8 DexDescription_Eneco_1[] = _(
"ENECO ist davon fasziniert,\n"
"Gegenstände zu bewegen und sie zu\n"
@@ -2563,7 +4688,17 @@ static const u8 DexDescription_Eneco_1[] = _(
static const u8 DexDescription_Eneco_2[] = _(
"seinen eigenen Schweif, so dass ihm\n"
"schwindlig wird.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Enekoro_1[] = _(
+ "ENEKORO schläft dort, wo es ihm gefällt\n"
+ "und hat kein dauerhaftes Nest. Nähern\n"
+ "sich ihm andere POKéMON, wenn");
+static const u8 DexDescription_Enekoro_2[] = _(
+ "es schläft, kämpft es nicht mit ihnen,\n"
+ "sondern zieht weiter.");
+#else
static const u8 DexDescription_Enekoro_1[] = _(
"ENEKORO liebt seine Eigenständigkeit.\n"
"So kann es das tun, was es möchte, und\n"
@@ -2572,7 +4707,18 @@ static const u8 DexDescription_Enekoro_2[] = _(
"Da dieses POKéMON schläft und isst,\n"
"wenn es Lust dazu hat, ist sein\n"
"Tagesablauf eher zufälliger Natur.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Zobiris_1[] = _(
+ "ZOBIRIS durchwühlt mit seinen scharfen\n"
+ "Krallen den Erdboden auf der Suche nach\n"
+ "Steinen, von denen es sich ernährt.");
+static const u8 DexDescription_Zobiris_2[] = _(
+ "Die Substanzen in den Steinen nehmen\n"
+ "schließlich eine feste Form an und\n"
+ "gelangen auf seine Körperoberfläche.");
+#else
static const u8 DexDescription_Zobiris_1[] = _(
"ZOBIRIS führt ein ruhiges, \n"
"zurückgezogenes Leben tief im Innern\n"
@@ -2581,7 +4727,18 @@ static const u8 DexDescription_Zobiris_2[] = _(
"gefürchtet, da man sagt, es stehle die\n"
"Seelen der Menschen, wenn seine Augen\n"
"im Dunkeln Furcht erregend funkeln.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Flunkifer_1[] = _(
+ "Fall bloß nicht auf das hübsche Gesicht\n"
+ "dieses POKéMON herein - es ist sehr ge-\n"
+ "fährlich. FLUNKIFER lenkt seine Feinde");
+static const u8 DexDescription_Flunkifer_2[] = _(
+ "ab und schlägt dann mit seinem massiven\n"
+ "Kiefer zu. Seine kräftigen Stahlkiefer\n"
+ "sind eigentlich umgewandelte Hörner.");
+#else
static const u8 DexDescription_Flunkifer_1[] = _(
"FLUNKIFERs sagenhafte Kiefer sind\n"
"eigentlich umgewandelte Stahlhörner.\n"
@@ -2590,7 +4747,18 @@ static const u8 DexDescription_Flunkifer_2[] = _(
"dient dazu, seinen Gegner in Sicherheit\n"
"zu wiegen, so dass er unaufmerksam\n"
"wird. Dann schnappt es zu!");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Stollunior_1[] = _(
+ "STOLLUNIORs Körper besteht aus Stahl.\n"
+ "Mit 1 Schlag kann dieses POKéMON einen\n"
+ "Schwerlasttransporter demolieren.");
+static const u8 DexDescription_Stollunior_2[] = _(
+ "Der Lastwagen stellt danach eine\n"
+ "handliche Mahlzeit für dieses POKéMON\n"
+ "dar.");
+#else
static const u8 DexDescription_Stollunior_1[] = _(
"Dieses POKéMON hat einen Körper aus\n"
"Stahl. STOLLUNIOR ernährt sich von\n"
@@ -2598,7 +4766,17 @@ static const u8 DexDescription_Stollunior_1[] = _(
static const u8 DexDescription_Stollunior_2[] = _(
"richtet es großen Schaden an, weil es\n"
"Brücken und Bahngleise auffrisst.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Stollrak_1[] = _(
+ "STOLLRAK ernährt sich von Eisen, das in\n"
+ "Steinen und Wasser enthalten ist. Es \n"
+ "baut sein Nest in Bergen, in denen");
+static const u8 DexDescription_Stollrak_2[] = _(
+ "Eisenerz abgebaut wird. Es gerät dabei\n"
+ "häufig mit Bergarbeitern in Konflikt.");
+#else
static const u8 DexDescription_Stollrak_1[] = _(
"STOLLRAK temperiert seinen Körper,\n"
"indem es ausgesprochen nahrhaftes \n"
@@ -2607,7 +4785,18 @@ static const u8 DexDescription_Stollrak_2[] = _(
"aufgebläht ist. Dieses POKéMON baut\n"
"sein Nest in der Nähe von Quellen, aus\n"
"denen köstliches Wasser sprudelt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Stolloss_1[] = _(
+ "STOLLOSS geht erstaunlicherweise sehr\n"
+ "behutsam mit der Umwelt um. Wenn sein\n"
+ "Berg von einem Erdrutsch oder einem");
+static const u8 DexDescription_Stolloss_2[] = _(
+ "Feuer verwüstet wurde, schleppt es\n"
+ "Erde in das Gebiet, pflanzt Bäume an und\n"
+ "richtet sein Territorium wieder her.");
+#else
static const u8 DexDescription_Stolloss_1[] = _(
"STOLLOSS nennt einen ganzen Berg sein\n"
"Territorium. Gnadenlos schlägt es jeden\n"
@@ -2615,7 +4804,17 @@ static const u8 DexDescription_Stolloss_1[] = _(
static const u8 DexDescription_Stolloss_2[] = _(
"Dieses POKéMON behält sein Territorium\n"
"jederzeit im Auge.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Meditie_1[] = _(
+ "MEDITIE erhöht seine Energie durch\n"
+ "Meditation. Es lebt von nur einer Beere\n"
+ "am Tag. Diese absolut reduzierte");
+static const u8 DexDescription_Meditie_2[] = _(
+ "Ernährung ist Bestandteil seines \n"
+ "Trainings.");
+#else
static const u8 DexDescription_Meditie_1[] = _(
"MEDITIE unterzieht sich einem\n"
"strikten mentalen Training tief in den\n"
@@ -2624,7 +4823,18 @@ static const u8 DexDescription_Meditie_2[] = _(
"jedoch immer seine Konzentration.\n"
"Deshalb wird sein Training niemals\n"
"ein Ende haben.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Meditalis_1[] = _(
+ "Mittels Meditation hat MEDITALIS\n"
+ "seinen sechsten Sinn entwickelt. So\n"
+ "kann es seine psychokinetischen");
+static const u8 DexDescription_Meditalis_2[] = _(
+ "Kräfte nutzen. Dieses POKéMON\n"
+ "meditiert einen ganzen Monat ohne\n"
+ "etwas zu essen.");
+#else
static const u8 DexDescription_Meditalis_1[] = _(
"Mittels Meditation erhöht MEDITALIS\n"
"seine Körperenergie und schärft seinen\n"
@@ -2632,7 +4842,18 @@ static const u8 DexDescription_Meditalis_1[] = _(
static const u8 DexDescription_Meditalis_2[] = _(
"verbirgt sich, indem es eins mit den\n"
"Feldern und Bergen wird.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Frizelbliz_1[] = _(
+ "FRIZELBLIZ rennt so schnell, dass\n"
+ "das menschliche Auge es nicht\n"
+ "wahrnehmen kann. Die Reibung,");
+static const u8 DexDescription_Frizelbliz_2[] = _(
+ "die dabei entsteht, wandelt es in\n"
+ "Elektrizität um, die es in seinem Fell\n"
+ "speichert.");
+#else
static const u8 DexDescription_Frizelbliz_1[] = _(
"FRIZELBLIZ speichert Elektrizität in\n"
"seiner langen Körperbehaarung. Dieses\n"
@@ -2641,7 +4862,16 @@ static const u8 DexDescription_Frizelbliz_2[] = _(
"Beinmuskulatur durch Stromstöße.\n"
"Dadurch ist es in der Lage, explosiv\n"
"zu beschleunigen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Voltenso_1[] = _(
+ "VOLTENSO sammelt Elektrizität aus\n"
+ "der Atmosphäre in seiner Mähne und\n"
+ "entlädt diese. Dieses POKéMON erzeugt");
+static const u8 DexDescription_Voltenso_2[] = _(
+ "Gewitterwolken über seinem Kopf.");
+#else
static const u8 DexDescription_Voltenso_1[] = _(
"VOLTENSO entlädt ständig Elektrizität\n"
"aus seiner Mähne. Es fliegen dabei\n"
@@ -2649,7 +4879,16 @@ static const u8 DexDescription_Voltenso_1[] = _(
static const u8 DexDescription_Voltenso_2[] = _(
"führen. In einem Kampf erzeugt dieses\n"
"POKéMON Gewitterwolken.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Plusle_1[] = _(
+ "Wenn PLUSLE seinen Partner anfeuert,\n"
+ "sprüht es Funken aus seinem Körper.\n"
+ "Wenn sein Partner verliert, brüllt dieses");
+static const u8 DexDescription_Plusle_2[] = _(
+ "POKéMON laut.");
+#else
static const u8 DexDescription_Plusle_1[] = _(
"PLUSLE dient seinen Artgenossen als\n"
"Cheerleader. Wenn ein Teamkamerad\n"
@@ -2657,7 +4896,17 @@ static const u8 DexDescription_Plusle_1[] = _(
static const u8 DexDescription_Plusle_2[] = _(
"das prasselnde Geräusch von Funken, um\n"
"so seine Freude zu zeigen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Minun_1[] = _(
+ "MINUN liebt es, seinen Partner im Kampf\n"
+ "anzufeuern. Dabei sprüht es Funken aus\n"
+ "seinem Körper. Wenn sein Partner in");
+static const u8 DexDescription_Minun_2[] = _(
+ "Schwierigkeiten gerät, sprüht es immer\n"
+ "mehr Funken.");
+#else
static const u8 DexDescription_Minun_1[] = _(
"MINUN kümmert sich mehr um das\n"
"Anfeuern seiner Partner als um seine\n"
@@ -2666,7 +4915,18 @@ static const u8 DexDescription_Minun_2[] = _(
"Elektrizität in seinem Körper dazu,\n"
"einen Funkenregen zu erzeugen und\n"
"seine Teamkameraden anzufeuern.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Volbeat_1[] = _(
+ "VOLBEATs Schweif leuchtet wie eine\n"
+ "Glühbirne. Zusammen mit anderen \n"
+ "VOLBEAT malt es mit seinem Schweif");
+static const u8 DexDescription_Volbeat_2[] = _(
+ "geometrische Figuren an den Nacht-\n"
+ "himmel. Dieses POKéMON liebt den von\n"
+ "ILLUMISE verströmten Duft.");
+#else
static const u8 DexDescription_Volbeat_1[] = _(
"Wenn es Nacht wird, beginnt VOLBEATs\n"
"Schweif zu leuchten. Es kommuniziert\n"
@@ -2675,7 +4935,17 @@ static const u8 DexDescription_Volbeat_2[] = _(
"und das Blinken dieses Lichts reguliert.\n"
"Dieses POKéMON wird vom süßen Duft\n"
"der ILLUMISE angezogen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Illumise_1[] = _(
+ "ILLUMISE leitet einen Schwarm VOLBEAT\n"
+ "an, wenn sie Zeichen an den Nachthimmel\n"
+ "malen. Je komplexer diese werden, desto");
+static const u8 DexDescription_Illumise_2[] = _(
+ "mehr Respekt bekommt es von seinen\n"
+ "Artgenossen.");
+#else
static const u8 DexDescription_Illumise_1[] = _(
"ILLUMISE zieht ganze VOLBEAT-Scharen\n"
"mit seinem süßlichen Duft an. Dann\n"
@@ -2683,7 +4953,16 @@ static const u8 DexDescription_Illumise_1[] = _(
static const u8 DexDescription_Illumise_2[] = _(
"Schwarm an, indem es geometrische\n"
"Figuren an den Nachthimmel malt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Roselia_1[] = _(
+ "Nur sehr selten bekommt man ROSELIA\n"
+ "mit seinen ungewöhnlich farbigen Blumen\n"
+ "zu Gesicht. Die Dornen am Kopf dieses");
+static const u8 DexDescription_Roselia_2[] = _(
+ "POKéMON enthalten ein grausames Gift.");
+#else
static const u8 DexDescription_Roselia_1[] = _(
"ROSELIA verschießt scharfe Stacheln\n"
"auf jeden Feind, der versucht, die\n"
@@ -2691,7 +4970,18 @@ static const u8 DexDescription_Roselia_1[] = _(
static const u8 DexDescription_Roselia_2[] = _(
"Der Duft dieses POKéMON beruhigt\n"
"Lebewesen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Schluppuck_1[] = _(
+ "SCHLUPPUCKs Körper besteht zum\n"
+ "größten Teil aus seinem Magen. Sein Herz\n"
+ "und sein Gehirn sind im Vergleich dazu");
+static const u8 DexDescription_Schluppuck_2[] = _(
+ "sehr klein. Der Magen dieses POKéMON\n"
+ "enthält Enzyme, die alles zersetzen\n"
+ "können.");
+#else
static const u8 DexDescription_Schluppuck_1[] = _(
"Eigentlich besteht SCHLUPPUCKs Körper\n"
"nur aus einem Magen. Daher kann es\n"
@@ -2700,7 +4990,17 @@ static const u8 DexDescription_Schluppuck_2[] = _(
"Größe hat. Sein Magen enthält eine\n"
"spezielle Flüssigkeit, die wirklich alles\n"
"verdauen kann.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Schlukwech_1[] = _(
+ "SCHLUKWECH hat keine Zähne. Alles was\n"
+ "es isst, schluckt es im Ganzen herunter.\n"
+ "Sein Maul ist so riesig, dass mit");
+static const u8 DexDescription_Schlukwech_2[] = _(
+ "Leichtigkeit ein Autoreifen hinein-\n"
+ "passen würde.");
+#else
static const u8 DexDescription_Schlukwech_1[] = _(
"Wenn SCHLUKWECH Beute sichtet,\n"
"verspritzt es eine höchst giftige\n"
@@ -2709,7 +5009,17 @@ static const u8 DexDescription_Schlukwech_2[] = _(
"besprüht damit sein Ziel. Wenn die Beute\n"
"geschwächt ist, schluckt es sie mit\n"
"seinem riesigen Maul im Ganzen herunter.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kanivanha_1[] = _(
+ "Wenn jemand KANIVANHAs Revier betritt,\n"
+ "schwärmt es aus und schnappt mit\n"
+ "seinen spitzen Zähnen nach dem");
+static const u8 DexDescription_Kanivanha_2[] = _(
+ "Eindringling. Wenn es allein ist, ist\n"
+ "dieses POKéMON sehr scheu.");
+#else
static const u8 DexDescription_Kanivanha_1[] = _(
"KANIVANHAs starke Kiefer und seine\n"
"spitzen Zähne verfügen über die \n"
@@ -2717,7 +5027,17 @@ static const u8 DexDescription_Kanivanha_1[] = _(
static const u8 DexDescription_Kanivanha_2[] = _(
"verschlingen zu können. Dieses POKéMON\n"
"hat schon viele Boote versenkt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tohaido_1[] = _(
+ "TOHAIDO kann bis zu 120 km/h schnell\n"
+ "schwimmen, indem es Meerwasser aus\n"
+ "seinem Hinterteil herausschießt.");
+static const u8 DexDescription_Tohaido_2[] = _(
+ "Dieses POKéMON kann jedoch nicht sehr\n"
+ "weite Strecken zurücklegen.");
+#else
static const u8 DexDescription_Tohaido_1[] = _(
"TOHAIDO trägt den Spitznamen\n"
"“Tyrann des Meeres” und ist\n"
@@ -2726,7 +5046,17 @@ static const u8 DexDescription_Tohaido_2[] = _(
"wachsen sofort nach, wenn sie\n"
"ausgebrochen sind. Es kann sogar einen\n"
"Öltanker zerreißen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Wailmer_1[] = _(
+ "WAILMER kann Wasser in seinem Körper\n"
+ "speichern, um sich in einen Ball zu\n"
+ "verwandeln und herumzuhüpfen.");
+static const u8 DexDescription_Wailmer_2[] = _(
+ "Wenn es die Wassermenge steigert, kann\n"
+ "dieses POKéMON noch höher hüpfen.");
+#else
static const u8 DexDescription_Wailmer_1[] = _(
"WAILMERs Nasenlöcher liegen über\n"
"seinen Augen. Dieses verspielte\n"
@@ -2735,7 +5065,18 @@ static const u8 DexDescription_Wailmer_2[] = _(
"indem es das Meerwasser, das es in\n"
"seinem Körper speichert, mit aller Kraft\n"
"herausprustet.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Wailord_1[] = _(
+ "WAILORD jagt seine Beute, indem es aus\n"
+ "dem Meer herausspringt und ein gewal-\n"
+ "tiges Platschen erzeugt. Es ist");
+static const u8 DexDescription_Wailord_2[] = _(
+ "atemberaubend, eine Gruppe dieses\n"
+ "POKéMON aus dem Wasser springen zu\n"
+ "sehen.");
+#else
static const u8 DexDescription_Wailord_1[] = _(
"WAILORD ist bisher das größte aller\n"
"identifizierten POKéMON. Es schwimmt\n"
@@ -2743,7 +5084,17 @@ static const u8 DexDescription_Wailord_1[] = _(
static const u8 DexDescription_Wailord_2[] = _(
"mit seinem enormen Maul riesige Mengen\n"
"an Nahrung auf.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Camaub_1[] = _(
+ "CAMAUB speichert fast 1200 Grad heißes\n"
+ "Magma in seinem Körper. Wenn es nass\n"
+ "wird, kühlt das Magma ab und wird hart.");
+static const u8 DexDescription_Camaub_2[] = _(
+ "Dadurch wird der Körper dieses POKéMON\n"
+ "schwer und seine Bewegungen träge.");
+#else
static const u8 DexDescription_Camaub_1[] = _(
"CAMAUB ist nicht besonders helle. Es\n"
"nimmt nicht einmal wahr, wenn es\n"
@@ -2752,7 +5103,17 @@ static const u8 DexDescription_Camaub_2[] = _(
"allerdings kann es nicht einmal eine\n"
"Sekunde lang aushalten. In seinem\n"
"Körper brodelt glühend heißes Magma.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Camerupt_1[] = _(
+ "Die Höcker auf CAMERUPTs Rücken sind\n"
+ "durch eine Transformation seiner\n"
+ "Knochen entstanden. Hin und wieder");
+static const u8 DexDescription_Camerupt_2[] = _(
+ "stoßen sie Magma aus. Dieses POKéMON\n"
+ "bricht häufig aus, wenn es wütend ist.");
+#else
static const u8 DexDescription_Camerupt_1[] = _(
"CAMERUPT trägt einen Vulkan in seinem\n"
"Körper. 10.000 Grad heißes Magma fließt\n"
@@ -2760,7 +5121,17 @@ static const u8 DexDescription_Camerupt_1[] = _(
static const u8 DexDescription_Camerupt_2[] = _(
"seinem Rücken aus und verspucken \n"
"glühend heißes Magma.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Qurtel_1[] = _(
+ "QURTEL erzeugt Energie, indem es Kohle\n"
+ "verbrennt. Wenn das Feuer nachlässt,\n"
+ "wird es schwächer.");
+static const u8 DexDescription_Qurtel_2[] = _(
+ "In der Vorbereitung auf einen Kampf\n"
+ "verbrennt dieses POKéMON mehr Kohle.");
+#else
static const u8 DexDescription_Qurtel_1[] = _(
"QURTEL schaufelt sich auf der Suche\n"
"nach Kohle durch die Berge. Wenn es\n"
@@ -2769,7 +5140,17 @@ static const u8 DexDescription_Qurtel_2[] = _(
"seines Panzers mit Kohle und verbrennt\n"
"diese. Wenn es angegriffen wird, stößt\n"
"es dicken schwarzen Rauch aus.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Spoink_1[] = _(
+ "SPOINK trägt eine Perle auf seinem\n"
+ "Kopf, die seine psychokinetische\n"
+ "Energie verstärkt. Deshalb ist es");
+static const u8 DexDescription_Spoink_2[] = _(
+ "dauernd auf der Suche nach einer\n"
+ "größeren Perle.");
+#else
static const u8 DexDescription_Spoink_1[] = _(
"SPOINK hüpft auf seinem Schweif durch\n"
"die Gegend. Die Erschütterung des\n"
@@ -2778,7 +5159,18 @@ static const u8 DexDescription_Spoink_2[] = _(
"Deshalb kann dieses POKéMON das Hüpfen\n"
"nicht sein lassen, ansonsten würde sein\n"
"Herz aufhören zu schlagen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Groink_1[] = _(
+ "GROINK benutzt die schwarzen Perlen\n"
+ "an seinem Körper, um seine fantas-\n"
+ "tischen Kräfte nutzen zu können. Dabei");
+static const u8 DexDescription_Groink_2[] = _(
+ "tanzt es sonderbar. Die schwarzen\n"
+ "Perlen dieses POKéMON sind wahre\n"
+ "Kunstwerke und ebenso wertvoll.");
+#else
static const u8 DexDescription_Groink_1[] = _(
"GROINK benutzt die schwarzen Perlen\n"
"an seinem Körper dazu, die\n"
@@ -2787,14 +5179,35 @@ static const u8 DexDescription_Groink_2[] = _(
"Wenn es diese spezielle Fähigkeit nutzt,\n"
"wird sein schnaubender Atem\n"
"schwerfällig.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Pandir_1[] = _(
+ "Jedes PANDIR trägt ein einzigartiges \n"
+ "Fleckenmuster auf seiner Haut. Dieses\n"
+ "POKéMON bewegt sich höchst seltsam.");
+static const u8 DexDescription_Pandir_2[] = _(
+ "Es schwankt und stolpert, als wäre ihm\n"
+ "schwindlig. Seine schlingernden Bewe-\n"
+ "gungen verwirren seine Gegner.");
+#else
static const u8 DexDescription_Pandir_1[] = _(
"Jedes PANDIR auf der Welt soll ein\n"
"einzigartiges Fleckenmuster haben. Der\n"
"schwankende Gang dieses POKéMON");
static const u8 DexDescription_Pandir_2[] = _(
"erweckt den Eindruck, es würde tanzen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Knacklion_1[] = _(
+ "KNACKLION ist ein geduldiger Jäger. Es\n"
+ "gräbt in einer Wüste eine tiefe Grube\n"
+ "und wartet auf Beute, die hineinfällt.");
+static const u8 DexDescription_Knacklion_2[] = _(
+ "Dieses POKéMON kommt eine ganze Woche\n"
+ "ohne Wasser aus.");
+#else
static const u8 DexDescription_Knacklion_1[] = _(
"KNACKLIONs Bau ist eine Art in den Sand\n"
"gegrabener Kessel. Dieses POKéMON\n"
@@ -2803,7 +5216,17 @@ static const u8 DexDescription_Knacklion_2[] = _(
"seinen Bau zu werfen. Seine gigan-\n"
"tischen Kiefer verfügen über genügend\n"
"Kraft, um einen Felsen zu zerquetschen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Vibrava_1[] = _(
+ "VIBRAVAs Flügel sind noch nicht ganz\n"
+ "ausgewachsen. Für lange Strecken sind\n"
+ "seine Flügel weniger geeignet.");
+static const u8 DexDescription_Vibrava_2[] = _(
+ "Aber es kann mit ihnen Ultraschallwellen\n"
+ "erzeugen, wenn es sie vibrieren lässt.");
+#else
static const u8 DexDescription_Vibrava_1[] = _(
"Um seine Beute zu schwächen, erzeugt\n"
"VIBRAVA Ultraschallwellen, indem es\n"
@@ -2812,7 +5235,18 @@ static const u8 DexDescription_Vibrava_2[] = _(
"Die Ultraschallwellen dieses POKéMON \n"
"sind so stark, dass sie bei Menschen\n"
"Kopfschmerzen verursachen können.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Libelldra_1[] = _(
+ "LIBELLDRA wirbelt einen Sandsturm auf,\n"
+ "wenn es mit den Flügeln schlägt. Seine\n"
+ "Flügel erzeugen dabei Töne, die wie");
+static const u8 DexDescription_Libelldra_2[] = _(
+ "Gesang klingen. Da dieser “Gesang” das\n"
+ "Einzige ist, was man in einem Sandsturm\n"
+ "hört, wird es auch Wüstengeist genannt.");
+#else
static const u8 DexDescription_Libelldra_1[] = _(
"LIBELLDRA wird auch “Geist der\n"
"Wüste” genannt. Da seine flatternden\n"
@@ -2820,7 +5254,17 @@ static const u8 DexDescription_Libelldra_1[] = _(
static const u8 DexDescription_Libelldra_2[] = _(
"dieses POKéMON beim Fliegen immer\n"
"von einem Sandsturm umgeben.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tuska_1[] = _(
+ "Je trockener und trostloser seine\n"
+ "Umgebung ist, desto schöner und\n"
+ "duftender wird TUSKAs Blume.");
+static const u8 DexDescription_Tuska_2[] = _(
+ "Dieses POKéMON schwingt im Kampf wild\n"
+ "mit seinen dornigen Armen.");
+#else
static const u8 DexDescription_Tuska_1[] = _(
"TUSKA lebt an trockenen Orten, z. B. in\n"
"Wüsten. Es versprüht einen starken\n"
@@ -2829,7 +5273,18 @@ static const u8 DexDescription_Tuska_2[] = _(
"anzuziehen. Wenn sich Beute nähert,\n"
"verschießt es scharfe Stacheln, um\n"
"seinen Gegner zu überwältigen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Noktuska_1[] = _(
+ "Wenn ein Reisender mitten in der Nacht\n"
+ "durch eine Wüste wandert, folgt \n"
+ "NOKTUSKA ihm und spielt ihm Streiche.");
+static const u8 DexDescription_Noktuska_2[] = _(
+ "Dann wartet dieses POKéMON darauf,\n"
+ "dass der Reisende müde wird und sich\n"
+ "nicht mehr bewegen kann.");
+#else
static const u8 DexDescription_Noktuska_1[] = _(
"Am Tage bleibt NOKTUSKA reglos, damit es\n"
"in der brennenden Wüstenhitze keine\n"
@@ -2837,7 +5292,18 @@ static const u8 DexDescription_Noktuska_1[] = _(
static const u8 DexDescription_Noktuska_2[] = _(
"Dieses POKéMON wird bei Nacht aktiv,\n"
"wenn die Temperatur sinkt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Wablu_1[] = _(
+ "WABLU liebt es, Dinge zu putzen. Wenn\n"
+ "es etwas Schmutziges bemerkt, fängt\n"
+ "es an, dieses mit seinen weichen");
+static const u8 DexDescription_Wablu_2[] = _(
+ "Flügeln zu putzen. Wenn seine Flügel\n"
+ "dreckig werden, sucht sich dieses\n"
+ "POKéMON einen Fluss und duscht sich ab.");
+#else
static const u8 DexDescription_Wablu_1[] = _(
"WABLU hat leichte, flauschige Flügel,\n"
"die wie Schäfchenwolken aussehen.\n"
@@ -2846,7 +5312,17 @@ static const u8 DexDescription_Wablu_2[] = _(
"Menschen. Es landet auf ihren Köpfen \n"
"und bleibt dort sitzen wie ein \n"
"wattierter Hut.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Altaria_1[] = _(
+ "ALTARIA hat eine tolle Sopran-Stimme.\n"
+ "Seine Flügel sehen aus wie Schäfchen-\n"
+ "wolken. Dieses POKéMON stürzt sich");
+static const u8 DexDescription_Altaria_2[] = _(
+ "in einen Aufwind und steigt in den\n"
+ "Himmel empor.");
+#else
static const u8 DexDescription_Altaria_1[] = _(
"ALTARIA tanzt und dreht sich in der\n"
"Luft durch viele Schäfchenwolken.\n"
@@ -2855,7 +5331,18 @@ static const u8 DexDescription_Altaria_2[] = _(
"Stimme Melodien singt, versetzt es\n"
"seine Zuhörer in verträumtes\n"
"Erstaunen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Sengo_1[] = _(
+ "SENGO bewegt sich normalerweise auf\n"
+ "allen Vieren. Wenn es aber wütend wird, \n"
+ "stellt es sich auf seine Hinterbeine und");
+static const u8 DexDescription_Sengo_2[] = _(
+ "fährt seine Klauen aus. Dieses POKéMON\n"
+ "ist seit Generationen ein erbitterter\n"
+ "Rivale von VIPITIS.");
+#else
static const u8 DexDescription_Sengo_1[] = _(
"Die Erinnerungen an den Kampf mit\n"
"seinem Erzrivalen VIPITIS haben sich in\n"
@@ -2864,7 +5351,18 @@ static const u8 DexDescription_Sengo_2[] = _(
"eingebrannt. Dieses POKéMON weicht\n"
"feindlichen Angriffen unheimlich\n"
"raffiniert und geschickt aus.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Vipitis_1[] = _(
+ "VIPITIS kann mit seinem Schweif\n"
+ "Feinden einen Hieb versetzen und sie\n"
+ "mit einem abgesonderten Gift");
+static const u8 DexDescription_Vipitis_2[] = _(
+ "bespritzen. Dieses POKéMON wird in der\n"
+ "langwährenden Blutsfehde mit SENGO\n"
+ "nicht nachgeben.");
+#else
static const u8 DexDescription_Vipitis_1[] = _(
"VIPITIS lebt seit Generationen in\n"
"Fehde mit SENGO. Die Narben auf\n"
@@ -2873,7 +5371,18 @@ static const u8 DexDescription_Vipitis_2[] = _(
"Kämpfe. Dieses POKéMON greift seine\n"
"Gegner mit seinem scharfkantigen\n"
"Schweif an.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Lunastein_1[] = _(
+ "LUNASTEIN wird bei Vollmond aktiv.\n"
+ "Es läuft nicht, sondern schwebt\n"
+ "durch die Luft.");
+static const u8 DexDescription_Lunastein_2[] = _(
+ "Die bedrohlichen roten Augen dieses\n"
+ "POKéMON lassen alle, die es sehen,\n"
+ "vor Angst erstarren.");
+#else
static const u8 DexDescription_Lunastein_1[] = _(
"LUNASTEIN wurde in der Nähe eines\n"
"Meteoritenkraters entdeckt. Daher\n"
@@ -2882,7 +5391,18 @@ static const u8 DexDescription_Lunastein_2[] = _(
"dieses POKéMON aus dem Weltall stammt.\n"
"Diese Theorie konnte allerdings bisher\n"
"noch nicht belegt werden.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Sonnfel_1[] = _(
+ "Aus Sonnenlicht zieht SONNFEL seine\n"
+ "Energie. Es kann angeblich die Emotio-\n"
+ "nen anderer sehen.");
+static const u8 DexDescription_Sonnfel_2[] = _(
+ "Dieses POKéMON gibt eine starke Hitze\n"
+ "ab, wenn es sich um die eigene Achse\n"
+ "dreht.");
+#else
static const u8 DexDescription_Sonnfel_1[] = _(
"SONNFEL ist eine neue POKéMON-Spezies,\n"
"die angeblich aus dem Weltall\n"
@@ -2891,7 +5411,18 @@ static const u8 DexDescription_Sonnfel_2[] = _(
"Luft und bewegt sich leise. Im Kampf\n"
"setzt dieses POKéMON sehr helles Licht\n"
"ein.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Schmerbe_1[] = _(
+ "SCHMERBEs Körper ist mit einem\n"
+ "schleimigen Film bedeckt. Wenn ein\n"
+ "Gegner es packen will, entgeht es");
+static const u8 DexDescription_Schmerbe_2[] = _(
+ "seinem Griff. Dieses POKéMON wird\n"
+ "geschwächt, wenn sein schleimiger\n"
+ "Überzug austrocknet.");
+#else
static const u8 DexDescription_Schmerbe_1[] = _(
"SCHMERBEs empfindliche Barthaare\n"
"dienen ihm als hervorragendes\n"
@@ -2900,7 +5431,17 @@ static const u8 DexDescription_Schmerbe_2[] = _(
"sich im Schlamm, so dass nur noch seine\n"
"Barthaare herausgucken, und wartet\n"
"auf Beute.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Welsar_1[] = _(
+ "Wenn WELSAR auf einen wilden Beute-\n"
+ "zug geht, erzeugt es ein Beben mit \n"
+ "einem Radius von 5 Kilometern.");
+static const u8 DexDescription_Welsar_2[] = _(
+ "Dieses POKéMON kann wirkliche Erdbeben\n"
+ "voraussehen.");
+#else
static const u8 DexDescription_Welsar_1[] = _(
"WELSAR legt viel Wert auf sein\n"
"Territorium. Ein einzelnes POKéMON\n"
@@ -2909,7 +5450,18 @@ static const u8 DexDescription_Welsar_2[] = _(
"Wenn sich ein Feind nähert, schlägt es\n"
"um sich und verursacht ein gewaltiges\n"
"Erdbeben.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Krebscorps_1[] = _(
+ "KREBSCORPS fängt seine Beute mit\n"
+ "seinen scharfen Krallen. Es hat keine\n"
+ "besonderen Ansprüche an seine");
+static const u8 DexDescription_Krebscorps_2[] = _(
+ "Nahrung, es frisst einfach alles.\n"
+ "Dieses POKéMON lebt gern in\n"
+ "schmutzigem Wasser.");
+#else
static const u8 DexDescription_Krebscorps_1[] = _(
"KREBSCORPS ist kein heimisches\n"
"POKéMON, sondern wurde als Haustier\n"
@@ -2918,7 +5470,18 @@ static const u8 DexDescription_Krebscorps_2[] = _(
"Dieses POKéMON ist mittlerweile sehr\n"
"robust und hat seine Population\n"
"vergrößert.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Krebutack_1[] = _(
+ "KREBUTACK legt seine Schale regelmäßig\n"
+ "ab. Direkt danach ist seine Schale weich\n"
+ "und empfindlich. Bis sie gehärtet");
+static const u8 DexDescription_Krebutack_2[] = _(
+ "ist, sucht es sich ein Versteck in einem\n"
+ "Flussbett, damit es nicht von Gegnern\n"
+ "angegriffen wird.");
+#else
static const u8 DexDescription_Krebutack_1[] = _(
"KREBUTACK ist von Natur aus sehr\n"
"gewalttätig, so dass es dauernd andere\n"
@@ -2927,7 +5490,17 @@ static const u8 DexDescription_Krebutack_2[] = _(
"muss. Andere Lebensformen lehnen es ab,\n"
"mit diesem POKéMON in ein und demselben\n"
"Teich zu leben.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Puppance_1[] = _(
+ "Sobald es Artgenossen bemerkt, tut\n"
+ "sich PUPPANCE mit ihnen zusammen und\n"
+ "sie brüllen gemeinsam. Dieses POKéMON");
+static const u8 DexDescription_Puppance_2[] = _(
+ "schläft, während es geschickt auf \n"
+ "seinem Fuß balanciert.");
+#else
static const u8 DexDescription_Puppance_1[] = _(
"PUPPANCE bewegt sich, indem es sich auf\n"
"seinem Fuß im Kreis dreht. In sehr alten\n"
@@ -2935,7 +5508,17 @@ static const u8 DexDescription_Puppance_1[] = _(
static const u8 DexDescription_Puppance_2[] = _(
"entdeckt, die dieses POKéMON in\n"
"Begleitung von Menschen zeigen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Lepumentas_1[] = _(
+ "LEPUMENTAS ist ein Rätsel um eine Ton-\n"
+ "statue, die vor 20.000 Jahren von einer\n"
+ "antiken Zivilisation geschaffen wurde.");
+static const u8 DexDescription_Lepumentas_2[] = _(
+ "Dieses POKéMON verschießt Strahlen aus\n"
+ "beiden Händen.");
+#else
static const u8 DexDescription_Lepumentas_1[] = _(
"LEPUMENTAS sind aus Schlamm gefertigte\n"
"Puppen, die von primitiven Menschen\n"
@@ -2944,7 +5527,17 @@ static const u8 DexDescription_Lepumentas_2[] = _(
"Strahlen zum Leben erweckt wurden.\n"
"Diese POKéMON bewegen sich\n"
"schwebend fort.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Liliep_1[] = _(
+ "LILIEP ist ein antikes POKéMON, das aus\n"
+ "einem Fossil erzeugt wurde. Es bleibt\n"
+ "ständig an einem Felsen verankert.");
+static const u8 DexDescription_Liliep_2[] = _(
+ "Mit seinen beiden Augen hält es ständig\n"
+ "Ausschau nach Beute.");
+#else
static const u8 DexDescription_Liliep_1[] = _(
"Von LILIEP nahm man an, es sei seit\n"
"etwa hundert Millionen Jahren\n"
@@ -2953,7 +5546,17 @@ static const u8 DexDescription_Liliep_2[] = _(
"Blütenblätter geformten Tentakeln\n"
"heftet es sich an einen Felsen auf dem\n"
"Meeresboden und fängt Beute.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Wielie_1[] = _(
+ "WIELIEs Körper dient ihm als Anker und\n"
+ "schützt ihn davor, in die stürmische\n"
+ "See gespült zu werden. Dieses POKéMON");
+static const u8 DexDescription_Wielie_2[] = _(
+ "sondert eine starke Verdauungsflüssig-\n"
+ "keit aus seinen Tentakeln ab.");
+#else
static const u8 DexDescription_Wielie_1[] = _(
"WIELIE durchforstet den Meeresboden\n"
"nach Beute. Dieses POKéMON fährt\n"
@@ -2961,7 +5564,17 @@ static const u8 DexDescription_Wielie_1[] = _(
static const u8 DexDescription_Wielie_2[] = _(
"und fängt mit seinen acht Tentakeln\n"
"Beute.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Anorith_1[] = _(
+ "ANORITH soll ein POKéMON-Vorgänger\n"
+ "sein, es hat acht Flügel an seinem\n"
+ "Körper. Dieses POKéMON schwamm im");
+static const u8 DexDescription_Anorith_2[] = _(
+ "Urmeer, indem es seine acht Flügel\n"
+ "schwang.");
+#else
static const u8 DexDescription_Anorith_1[] = _(
"ANORITH wurde aus einem\n"
"prähistorischen Fossil erzeugt. Dieses\n"
@@ -2970,7 +5583,17 @@ static const u8 DexDescription_Anorith_2[] = _(
"Gewässern. Es klemmt seine Beute\n"
"fest zwischen seine beiden riesigen\n"
"Klauen ein.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Armaldo_1[] = _(
+ "ARMALDO ist eine POKéMON-Spezies, die\n"
+ "vor vielen Jahren ausgestorben ist.\n"
+ "Dieses POKéMON soll sich auf seinen");
+static const u8 DexDescription_Armaldo_2[] = _(
+ "Hinterbeinen fortbewegt haben, da dies\n"
+ "für das Leben an Land bequemer war.");
+#else
static const u8 DexDescription_Armaldo_1[] = _(
"Von ARMALDOs hartem Panzer prallen\n"
"alle Angriffe ab. Dieses POKéMON\n"
@@ -2979,7 +5602,17 @@ static const u8 DexDescription_Armaldo_2[] = _(
"ausfahren oder einziehen kann. Es hat\n"
"so viel Kraft, dass es damit eine\n"
"Stahlplatte pulverisieren kann.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Barschwa_1[] = _(
+ "Obwohl BARSCHWAs Körper zerfetzt ist,\n"
+ "besitzt es eine harte und zähe Lebens-\n"
+ "kraft, so dass es überall leben kann.");
+static const u8 DexDescription_Barschwa_2[] = _(
+ "Aber dieses POKéMON ist langsam und\n"
+ "dusselig. Daher ist es leicht zu fangen.");
+#else
static const u8 DexDescription_Barschwa_1[] = _(
"BARSCHWAs Flossen waren schon immer\n"
"zerfetzt. Wegen seines merkwürdigen\n"
@@ -2987,7 +5620,17 @@ static const u8 DexDescription_Barschwa_1[] = _(
static const u8 DexDescription_Barschwa_2[] = _(
"weitgehend ignoriert. Es kann sowohl im\n"
"Meer als auch in Flüssen leben.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Milotic_1[] = _(
+ "MILOTIC lebt auf dem Grund großer Seen.\n"
+ "Wenn dieses POKéMON rosa leuchtet,\n"
+ "gibt es eine Energiewelle ab, die einem");
+static const u8 DexDescription_Milotic_2[] = _(
+ "rastlosen Geist wohltuende Ruhe\n"
+ "verschaffen kann.");
+#else
static const u8 DexDescription_Milotic_1[] = _(
"MILOTIC soll das Schönste aller\n"
"POKéMON sein. Es hat die Macht,\n"
@@ -2995,7 +5638,17 @@ static const u8 DexDescription_Milotic_1[] = _(
static const u8 DexDescription_Milotic_2[] = _(
"besänftigen und somit erbitterten\n"
"Streit zu vermeiden.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Formeo_1[] = _(
+ "FORMEO bedient sich der Kraft der\n"
+ "Natur, um die Gestalt der Sonne, von\n"
+ "Regen- oder Schneewolken anzunehmen.");
+static const u8 DexDescription_Formeo_2[] = _(
+ "Die Gefühlslage dieses POKéMON\n"
+ "verändert sich mit dem Wetter.");
+#else
static const u8 DexDescription_Formeo_1[] = _(
"FORMEOs Erscheinung ändert sich\n"
"mit dem Wetter. Dieses POKéMON hat\n"
@@ -3003,7 +5656,18 @@ static const u8 DexDescription_Formeo_1[] = _(
static const u8 DexDescription_Formeo_2[] = _(
"Kraft der Natur zu nutzen, um seinen\n"
"winzigen Körper zu schützen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kecleon_1[] = _(
+ "KECLEON verändert seine Körper-\n"
+ "färbung, um sich seiner Umgebung\n"
+ "anzupassen. Dadurch kann es sich");
+static const u8 DexDescription_Kecleon_2[] = _(
+ "prima an seine ahnungslose Beute an-\n"
+ "schleichen. Es schlägt mit seiner dehn-\n"
+ "baren, langen Zunge aus und fängt sie.");
+#else
static const u8 DexDescription_Kecleon_1[] = _(
"KECLEON kann die Farbe seines Körpers\n"
"bei Bedarf verändern, um sich seiner\n"
@@ -3011,7 +5675,18 @@ static const u8 DexDescription_Kecleon_1[] = _(
static const u8 DexDescription_Kecleon_2[] = _(
"eine Ausnahme: Das Zickzackmuster auf\n"
"seinem Bauch kann es nicht verändern.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Shuppet_1[] = _(
+ "SHUPPET wächst, indem es sich von\n"
+ "düsteren Gefühlen wie Rachsucht und\n"
+ "Neid ernährt.");
+static const u8 DexDescription_Shuppet_2[] = _(
+ "Es streift durch Städte und sucht nach\n"
+ "Empfindungen, die als Ursache für den\n"
+ "Verderb der Menschen gelten.");
+#else
static const u8 DexDescription_Shuppet_1[] = _(
"SHUPPET wird durch Gefühle wie Neid und\n"
"Rachsucht angezogen. Wenn jemand\n"
@@ -3020,7 +5695,18 @@ static const u8 DexDescription_Shuppet_2[] = _(
"erscheint dieses POKéMON in Scharen\n"
"und reiht sich unter der Dachrinne der\n"
"Person auf.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Banette_1[] = _(
+ "Die Energie eines Fluchs durchdrang\n"
+ "die Füllung einer weggeworfenen und\n"
+ "vergessenen Plüschpuppe und erweckte");
+static const u8 DexDescription_Banette_2[] = _(
+ "BANETTE zum Leben. Die Energie dieses\n"
+ "POKéMON würde entweichen, wenn es\n"
+ "seinen Mund öffnen sollte.");
+#else
static const u8 DexDescription_Banette_1[] = _(
"BANETTE belegt andere mit Flüchen,\n"
"indem es Nadeln in seinen eigenen\n"
@@ -3028,7 +5714,18 @@ static const u8 DexDescription_Banette_1[] = _(
static const u8 DexDescription_Banette_2[] = _(
"ursprünglich eine Mitleid erregende\n"
"Plüschpuppe, die weggeworfen wurde.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Zwirrlicht_1[] = _(
+ "ZWIRRLICHT wandert verloren durch die\n"
+ "tiefe Dunkelheit der Nacht. Kinder\n"
+ "werden oft ermahnt, dass dieses");
+static const u8 DexDescription_Zwirrlicht_2[] = _(
+ "POKéMON böse Kinder wegzaubert, die\n"
+ "von ihren Müttern ausgeschimpft \n"
+ "worden sind.");
+#else
static const u8 DexDescription_Zwirrlicht_1[] = _(
"ZWIRRLICHT kann durch jede Wand gehen,\n"
"egal, wie dick diese ist. Wenn dieses\n"
@@ -3036,7 +5733,18 @@ static const u8 DexDescription_Zwirrlicht_1[] = _(
static const u8 DexDescription_Zwirrlicht_2[] = _(
"verfolgt es seinen Feind unnachgiebig\n"
"bis zum Sonnenaufgang.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Zwirrklop_1[] = _(
+ "ZWIRRKLOP absorbiert alles, egal, wie\n"
+ "groß es auch sein mag. Dieses POKéMON\n"
+ "hypnotisiert seinen Gegner, indem es");
+static const u8 DexDescription_Zwirrklop_2[] = _(
+ "auf makabre Weise winkt und sein\n"
+ "einziges Auge zeigt. Der hypnotisierte\n"
+ "Gegner führt dann seine Befehle aus.");
+#else
static const u8 DexDescription_Zwirrklop_1[] = _(
"ZWIRRKLOPs Körper ist komplett hohl. Es\n"
"wird auch mit einem Schwarzen Loch\n"
@@ -3044,7 +5752,18 @@ static const u8 DexDescription_Zwirrklop_1[] = _(
static const u8 DexDescription_Zwirrklop_2[] = _(
"in seinem Körper auf, es kommt jedoch\n"
"nichts wieder heraus.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tropius_1[] = _(
+ "Kinder aus den südlichen Tropen essen\n"
+ "die Früchte, die am Nacken von TROPIUS\n"
+ "hängen, als Zwischenmahlzeit.");
+static const u8 DexDescription_Tropius_2[] = _(
+ "Dieses POKéMON kann fliegen, indem es\n"
+ "mit den Blättern auf seinem Rücken\n"
+ "schlägt, als ob es Flügel wären.");
+#else
static const u8 DexDescription_Tropius_1[] = _(
"Die Früchte am Nacken von TROPIUS\n"
"sind bei Kindern sehr beliebt. Dieses\n"
@@ -3053,7 +5772,18 @@ static const u8 DexDescription_Tropius_2[] = _(
"ständig. Offensichtlich sind ihm wegen\n"
"dieser Vorliebe selber Früchte\n"
"gewachsen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Palimpalim_1[] = _(
+ "Bei starkem Wind hängt sich\n"
+ "PALIMPALIM an einen Ast oder an die\n"
+ "Dachrinne eines Gebäudes, wobei es eine");
+static const u8 DexDescription_Palimpalim_2[] = _(
+ "Saugkappe auf seinem Kopf benutzt.\n"
+ "Das POKéMON pflückt mit seinem langen\n"
+ "Schweif Beeren und verspeist sie.");
+#else
static const u8 DexDescription_Palimpalim_1[] = _(
"PALIMPALIMs Schreie hallen durch\n"
"seinen hohlen Körper. Wenn dieses\n"
@@ -3062,7 +5792,17 @@ static const u8 DexDescription_Palimpalim_2[] = _(
"seine Schreie Ultraschallwellen, die\n"
"seine Feinde buchstäblich wegfegen\n"
"können.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Absol_1[] = _(
+ "ABSOL kann bevorstehende Natur-\n"
+ "katastrophen voraussagen. Es lebt auf\n"
+ "einem kargen, zerklüfteten Berg.");
+static const u8 DexDescription_Absol_2[] = _(
+ "Dieses POKéMON wagt sich nur sehr\n"
+ "selten ins Tal herunter.");
+#else
static const u8 DexDescription_Absol_1[] = _(
"Jedes Mal, wenn ABSOL sich den Menschen\n"
"zeigt, endet dies in einer Katastrophe\n"
@@ -3070,7 +5810,17 @@ static const u8 DexDescription_Absol_1[] = _(
static const u8 DexDescription_Absol_2[] = _(
"Deswegen ist es auch als das\n"
"Katastrophen-POKéMON bekannt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Isso_1[] = _(
+ "ISSO sammeln sich in Mondnächten,\n"
+ "um sich gegenseitig zu quetschen.\n"
+ "Dadurch gewinnt dieses POKéMON an");
+static const u8 DexDescription_Isso_2[] = _(
+ "Ausdauer und kann wirkungsvolle \n"
+ "Gegenangriffe trainieren.");
+#else
static const u8 DexDescription_Isso_1[] = _(
"ISSO hat immer ein breites, fröhliches\n"
"Lächeln auf seinem Gesicht. Um \n"
@@ -3079,7 +5829,18 @@ static const u8 DexDescription_Isso_2[] = _(
"man seinen Schweif betrachten. Wenn es\n"
"wütend ist, schlägt es damit auf den\n"
"Boden.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Schneppke_1[] = _(
+ "SCHNEPPKE kann überleben, indem es nur\n"
+ "Schnee und Eis zu sich nimmt. Alte\n"
+ "Überlieferungen besagen, dass ein Haus,");
+static const u8 DexDescription_Schneppke_2[] = _(
+ "welches von diesem POKéMON besucht\n"
+ "wird, vielen kommenden Generationen\n"
+ "Glück und Erfolg beschert.");
+#else
static const u8 DexDescription_Schneppke_1[] = _(
"SCHNEPPKE lebt in Gebieten mit heftigem\n"
"Schneefall. In Jahreszeiten, in denen es\n"
@@ -3088,7 +5849,18 @@ static const u8 DexDescription_Schneppke_2[] = _(
"Sommer, nimmt das POKéMON Reißaus, um\n"
"in einer Höhle ein ruhiges Leben unter\n"
"Stalaktiten und Stalagmiten zu führen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Firnontor_1[] = _(
+ "FIRNONTOR hat die Fähigkeit, Eis zu\n"
+ "kontrollieren. Es kann beispielsweise\n"
+ "einen Gegner augenblicklich einfrieren.");
+static const u8 DexDescription_Firnontor_2[] = _(
+ "Nachdem es einen Gegner im Eis\n"
+ "bewegungsunfähig gemacht hat,\n"
+ "verspeist es ihn genüsslich.");
+#else
static const u8 DexDescription_Firnontor_1[] = _(
"FIRNONTOR hat einen Körper aus Stein,\n"
"den es mit einem Panzer aus Eis noch\n"
@@ -3097,7 +5869,18 @@ static const u8 DexDescription_Firnontor_2[] = _(
"die Luftfeuchtigkeit der Atmosphäre\n"
"einfrieren und in jegliche Form\n"
"verwandeln.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Seemops_1[] = _(
+ "SEEMOPS bewegt sich fort, indem es\n"
+ "seinen ballartigen Körper herumrollt.\n"
+ "Wenn Eisschollen auftauchen, kann man");
+static const u8 DexDescription_Seemops_2[] = _(
+ "dieses POKéMON dabei beobachten, wie\n"
+ "es über das Eis rollt und das Meer\n"
+ "überquert.");
+#else
static const u8 DexDescription_Seemops_1[] = _(
"SEEMOPS kann schneller rollen als laufen.\n"
"Wenn Gruppen dieses POKéMON \n"
@@ -3106,7 +5889,18 @@ static const u8 DexDescription_Seemops_2[] = _(
"gleichzeitig, um ihre Freude zu zeigen.\n"
"Deswegen sind ihre Mahlzeiten sehr\n"
"laut.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Seejong_1[] = _(
+ "SEEJONG balanciert häufig Dinge auf\n"
+ "seiner Nasenspitze und rollt sie hin und\n"
+ "her. Während es das tut, überprüft es");
+static const u8 DexDescription_Seejong_2[] = _(
+ "den Duft und die Beschaffenheit des\n"
+ "Gegenstandes und stellt fest, ob es das\n"
+ "Objekt mag oder nicht.");
+#else
static const u8 DexDescription_Seejong_1[] = _(
"SEEJONG hat die Angewohnheit, alles,\n"
"was es zum ersten Mal sieht, auf seiner \n"
@@ -3115,7 +5909,18 @@ static const u8 DexDescription_Seejong_2[] = _(
"POKéMON hält sich bei Laune, indem es\n"
"manchmal ein SEEMOPS auf seiner Nase\n"
"balanciert und hin- und herrollt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Walraisa_1[] = _(
+ "WALRAISA schwimmt in eiskaltem Meer-\n"
+ "wasser und zertrümmert Eisberge mit\n"
+ "seinen beeindruckenden Stoßzähnen.");
+static const u8 DexDescription_Walraisa_2[] = _(
+ "Eine dicke Schicht aus Walfischspeck\n"
+ "lässt gegnerische Attacken von ihm ab-\n"
+ "prallen.");
+#else
static const u8 DexDescription_Walraisa_1[] = _(
"WALRAISA hat zwei massive Stoßzähne,\n"
"die mit einem Hieb Eisblöcke\n"
@@ -3124,7 +5929,18 @@ static const u8 DexDescription_Walraisa_2[] = _(
"10 Tonnen wiegen. Es besitzt eine dicke\n"
"Speckschicht, die es vor eisigen\n"
"Temperaturen schützt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Perlu_1[] = _(
+ "PERLU wächst, während es von seiner\n"
+ "steinharten Schale geschützt wird. \n"
+ "Wenn sein Körper zu groß für seine");
+static const u8 DexDescription_Perlu_2[] = _(
+ "Schale wird, ist dies ein sicheres\n"
+ "Anzeichen dafür, dass dieses POKéMON\n"
+ "kurz vor seiner Entwicklung steht.");
+#else
static const u8 DexDescription_Perlu_1[] = _(
"PERLUs kräftige Schale dient nicht\n"
"nur dem Schutz, es nutzt sie auch zum\n"
@@ -3132,7 +5948,18 @@ static const u8 DexDescription_Perlu_1[] = _(
static const u8 DexDescription_Perlu_2[] = _(
"Schale eines PERLU weist viele\n"
"Kerben und Kratzer auf.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Aalabyss_1[] = _(
+ "AALABYSS’ Schweif ist wie ein Fisch\n"
+ "geformt. Es benutzt ihn, um Beute\n"
+ "anzuziehen und schluckt diese dann");
+static const u8 DexDescription_Aalabyss_2[] = _(
+ "im Ganzen herunter. Beim Schwimmen\n"
+ "bewegt es seinen schlanken Körper\n"
+ "wie eine Schlange.");
+#else
static const u8 DexDescription_Aalabyss_1[] = _(
"AALABYSS entging lange der\n"
"Aufmerksamkeit des Menschen, da es in\n"
@@ -3141,7 +5968,18 @@ static const u8 DexDescription_Aalabyss_2[] = _(
"Die Augen dieses POKéMON können\n"
"selbst in den dunklen und trüben Tiefen\n"
"des Meeres einwandfrei sehen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Saganabyss_1[] = _(
+ "Obwohl SAGANABYSS beim Schwimmen ein\n"
+ "Bild von Eleganz und Schönheit bietet,\n"
+ "kann es auch sehr grausam sein. Wenn es");
+static const u8 DexDescription_Saganabyss_2[] = _(
+ "Beute sichtet, sticht es sein dünnes\n"
+ "Maul in den Körper eines Gegners und\n"
+ "entzieht ihm die Flüssigkeit.");
+#else
static const u8 DexDescription_Saganabyss_1[] = _(
"SAGANABYSS lebt in extremen Tiefen des\n"
"Südmeeres. Sein Körper ist so angelegt,\n"
@@ -3150,7 +5988,18 @@ static const u8 DexDescription_Saganabyss_2[] = _(
"unglaublichen Tiefe standhalten kann.\n"
"Daher übersteht dieses POKéMON\n"
"gewöhnliche Attacken unbeschadet.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Relicanth_1[] = _(
+ "RELICANTH ist eine seltene Spezies, die\n"
+ "auf einer Tiefsee-Expedition entdeckt\n"
+ "wurde. Dieses POKéMON hält dem");
+static const u8 DexDescription_Relicanth_2[] = _(
+ "enormen Wasserdruck des Ozeans stand.\n"
+ "Sein Körper ist mit steinharten\n"
+ "Schuppen bedeckt.");
+#else
static const u8 DexDescription_Relicanth_1[] = _(
"RELICANTH ist eine POKéMON-Spezies,\n"
"die vor hundert Millionen Jahren\n"
@@ -3159,7 +6008,17 @@ static const u8 DexDescription_Relicanth_2[] = _(
"verändern. Dieses antike POKéMON\n"
"hat ein zahnloses Maul und ernährt sich\n"
"von Mikroorganismen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Liebiskus_1[] = _(
+ "LIEBISKUS’ herzförmiger Körper ist ein\n"
+ "Symbol der Liebe und der Romantik.\n"
+ "Man sagt, jedem Paar, dem es begegnet,");
+static const u8 DexDescription_Liebiskus_2[] = _(
+ "stünde eine unendliche Liebesbeziehung\n"
+ "bevor.");
+#else
static const u8 DexDescription_Liebiskus_1[] = _(
"LIEBISKUS lebt in den seichten\n"
"Gewässern der Tropen. Dieses herz-\n"
@@ -3168,7 +6027,18 @@ static const u8 DexDescription_Liebiskus_2[] = _(
"der Tatsache, dass es hinter Liebes-\n"
"paaren herschwamm, die es in den Wellen\n"
"des Ozeans beobachtet hatte.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kindwurm_1[] = _(
+ "KINDWURM hegt einen unerfüllten Traum.\n"
+ "Es möchte einmal hoch über den Wolken\n"
+ "fliegen. Um seinen Frust über seine");
+static const u8 DexDescription_Kindwurm_2[] = _(
+ "Flugunfähigkeit zu vertreiben, rammt\n"
+ "es seinen harten Kopf gegen riesige\n"
+ "Felsen und macht Kiesel aus ihnen.");
+#else
static const u8 DexDescription_Kindwurm_1[] = _(
"KINDWURM hat den Traum, fliegen zu\n"
"können. In zahlreichen vergeblichen\n"
@@ -3176,7 +6046,18 @@ static const u8 DexDescription_Kindwurm_1[] = _(
static const u8 DexDescription_Kindwurm_2[] = _(
"herunter. Daher ist sein Kopf sehr\n"
"robust und so hart wie Stahl geworden.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Draschel_1[] = _(
+ "Auf DRASCHELs Körper befinden sich\n"
+ "knochenähnliche Auswüchse. Sein Panzer\n"
+ "ist sehr hart und wehrt jeden Angriff");
+static const u8 DexDescription_Draschel_2[] = _(
+ "eines Gegners ab. Während es auf seine\n"
+ "Entwicklung wartet, versteckt es sich\n"
+ "in einer Höhle.");
+#else
static const u8 DexDescription_Draschel_1[] = _(
"In DRASCHELs panzerartiger Schale\n"
"vollziehen seine Zellen eine\n"
@@ -3185,7 +6066,18 @@ static const u8 DexDescription_Draschel_2[] = _(
"Körper zu bilden. Die Schale dieses\n"
"POKéMON ist ausgesprochen schwer, so\n"
"dass seine Bewegungen träge wirken.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Brutalanda_1[] = _(
+ "Indem es sich in BRUTALANDA verwandelt,\n"
+ "setzt dieses POKéMON seinen lang\n"
+ "gehegten Traum von Flügeln um.");
+static const u8 DexDescription_Brutalanda_2[] = _(
+ "Um seine Freude zu zeigen, fliegt es\n"
+ "durch die Luft und dreht sich. Dabei\n"
+ "verspuckt es Flammen aus seinem Mund.");
+#else
static const u8 DexDescription_Brutalanda_1[] = _(
"BRUTALANDA träumte sehr lange davon,\n"
"dass ihm Flügel wachsen mögen. Dieser\n"
@@ -3194,7 +6086,18 @@ static const u8 DexDescription_Brutalanda_2[] = _(
"plötzliche Mutation in den Zellen dieses\n"
"POKéMON hervorgerufen, so dass ihm\n"
"plötzlich prächtige Flügel wuchsen.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Tanhel_1[] = _(
+ "TANHEL hält sich am Schweben, indem es\n"
+ "eine magnetische Kraft erzeugt, die die\n"
+ "natürliche Anziehungskraft der Erde");
+static const u8 DexDescription_Tanhel_2[] = _(
+ "abstößt. Wenn es schläft, verankert\n"
+ "sich dieses POKéMON mit den Haken an\n"
+ "seinem Hinterteil an einem Felsen.");
+#else
static const u8 DexDescription_Tanhel_1[] = _(
"Anstelle von Blut fließt eine starke\n"
"magnetische Energie durch TANHELs\n"
@@ -3202,7 +6105,18 @@ static const u8 DexDescription_Tanhel_1[] = _(
static const u8 DexDescription_Tanhel_2[] = _(
"mit anderen, indem es kontrollierte\n"
"magnetische Impulse aussendet.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Metang_1[] = _(
+ "Wenn zwei TANHEL miteinander\n"
+ "verschmelzen, entsteht daraus METANG.\n"
+ "Die Gehirne der TANHEL werden mit");
+static const u8 DexDescription_Metang_2[] = _(
+ "einem magnetischen Nervensystem ver-\n"
+ "bunden. Es schlägt seine Arme nach hin-\n"
+ "ten, um sich schnell bewegen zu können.");
+#else
static const u8 DexDescription_Metang_1[] = _(
"Wenn zwei TANHEL miteinander\n"
"verschmelzen, entsteht daraus METANG.\n"
@@ -3211,7 +6125,17 @@ static const u8 DexDescription_Metang_2[] = _(
"einem magnetischen Nervensystem\n"
"verbunden. Dadurch erzeugt es starke\n"
"psychokinetische Energie.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Metagross_1[] = _(
+ "METAGROSS ist aus der Verschmelzung\n"
+ "zweier METANG hervorgegangen. Auf der\n"
+ "Jagd drückt es seine Beute mit seinem");
+static const u8 DexDescription_Metagross_2[] = _(
+ "massigen Körper zu Boden. Dann frisst\n"
+ "es sein hilfloses Opfer auf.");
+#else
static const u8 DexDescription_Metagross_1[] = _(
"METAGROSS hat insgesamt vier Gehirne.\n"
"Diese können schwierige Berechnungen\n"
@@ -3220,7 +6144,17 @@ static const u8 DexDescription_Metagross_2[] = _(
"Dieses POKéMON kann durch die Lüfte\n"
"schweben, indem es seine vier Beine\n"
"einklappt.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Regirock_1[] = _(
+ "REGIROCKs Körper besteht komplett aus\n"
+ "Steinen. Erst kürzlich stellte man\n"
+ "erstaunt fest, dass die Steine alle an");
+static const u8 DexDescription_Regirock_2[] = _(
+ "unterschiedlichen Orten ausgegraben\n"
+ "wurden.");
+#else
static const u8 DexDescription_Regirock_1[] = _(
"REGIROCK wurde vor langer Zeit von\n"
"Menschen weggeschlossen. Wenn der\n"
@@ -3229,7 +6163,18 @@ static const u8 DexDescription_Regirock_2[] = _(
"Schaden nimmt, sucht es nach\n"
"passenden Steinen, um sich selber zu\n"
"reparieren.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Regice_1[] = _(
+ "REGICE umhüllt sich selbst mit kalter\n"
+ "Luft von 200 Grad minus. Alles\n"
+ "und jeder, der sich diesem POKéMON");
+static const u8 DexDescription_Regice_2[] = _(
+ "nähert, friert sofort ein. Sein eisiger\n"
+ "Körper ist so kalt, dass nicht einmal\n"
+ "Magma es schmelzen könnte.");
+#else
static const u8 DexDescription_Regice_1[] = _(
"REGICEs tiefgefrorener Körper\n"
"entstand während der Eiszeit. Es kann\n"
@@ -3237,7 +6182,17 @@ static const u8 DexDescription_Regice_1[] = _(
static const u8 DexDescription_Regice_2[] = _(
"werden. Dieses POKéMON kontrolliert\n"
"eisige Luft von minus 200 Grad.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Registeel_1[] = _(
+ "REGISTEEL wurde in der Antike von\n"
+ "den Menschen eingesperrt. Das Metall,\n"
+ "aus dem sein Körper besteht, ist eine");
+static const u8 DexDescription_Registeel_2[] = _(
+ "seltsame Substanz, die nicht von dieser\n"
+ "Welt sein soll.");
+#else
static const u8 DexDescription_Registeel_1[] = _(
"REGISTEEL hat einen Körper, der härter\n"
"ist als jede Art von Metall. Sein Körper\n"
@@ -3245,7 +6200,18 @@ static const u8 DexDescription_Registeel_1[] = _(
static const u8 DexDescription_Registeel_2[] = _(
"Niemand hat eine Ahnung, was dieses\n"
"POKéMON wohl frisst.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Latias_1[] = _(
+ "LATIAS ist sehr intelligent und kann die\n"
+ "menschliche Sprache verstehen. Es ist\n"
+ "mit gläsernen Daunen bedeckt.");
+static const u8 DexDescription_Latias_2[] = _(
+ "Dieses POKéMON umhüllt seinen Körper\n"
+ "mit den Daunen und kann Licht brechen,\n"
+ "um seine Gestalt zu verändern.");
+#else
static const u8 DexDescription_Latias_1[] = _(
"LATIAS ist in höchstem Maße empfindlich\n"
"gegenüber den Emotionen der Menschen.\n"
@@ -3254,7 +6220,18 @@ static const u8 DexDescription_Latias_2[] = _(
"wahrnimmt, werden seine Federn\n"
"zerzaust und es stößt schrille Schreie\n"
"aus, um seinen Gegner einzuschüchtern.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Latios_1[] = _(
+ "LATIOS schüttet nur seinem TRAINER\n"
+ "gegenüber sein Herz aus. Dieses\n"
+ "POKéMON fliegt schneller als ein");
+static const u8 DexDescription_Latios_2[] = _(
+ "Flugzeug, indem es seine Vorderbeine\n"
+ "einklappt, um den Luftwiderstand zu\n"
+ "verringern.");
+#else
static const u8 DexDescription_Latios_1[] = _(
"LATIOS kann seinem Feind ein Bild\n"
"von etwas, das dieser einmal gesehen\n"
@@ -3262,7 +6239,18 @@ static const u8 DexDescription_Latios_1[] = _(
static const u8 DexDescription_Latios_2[] = _(
"POKéMON ist intelligent und es versteht\n"
"die menschliche Sprache.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Kyogre_1[] = _(
+ "In der Mythologie taucht KYOGRE als\n"
+ "dasjenige POKéMON auf, das das Meer\n"
+ "vergrößert hat, indem es sintflutartige");
+static const u8 DexDescription_Kyogre_2[] = _(
+ "Regenfälle und Sturmfluten erzeugt hat.\n"
+ "Nach einem katastrophalen Kampf mit\n"
+ "GROUDON legte es sich schlafen.");
+#else
static const u8 DexDescription_Kyogre_1[] = _(
"KYOGRE kann riesige Regenwolken\n"
"erzeugen, die den gesamten Himmel\n"
@@ -3271,7 +6259,18 @@ static const u8 DexDescription_Kyogre_2[] = _(
"Niederschläge hervorrufen. Dieses\n"
"POKéMON hat vielen Menschen das Leben\n"
"gerettet, die unter einer Dürre litten.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Groudon_1[] = _(
+ "GROUDON hat die Macht, mit Licht und\n"
+ "Hitze Regenwolken zu vertreiben und \n"
+ "Wasser verdunsten zu lassen.");
+static const u8 DexDescription_Groudon_2[] = _(
+ "Es brachte den Menschen Erlösung, die\n"
+ "unter schrecklichen Überschwemmungen\n"
+ "gelitten hatten.");
+#else
static const u8 DexDescription_Groudon_1[] = _(
"GROUDON wurde lange Zeit in der\n"
"Mythologie als ein POKéMON\n"
@@ -3280,7 +6279,16 @@ static const u8 DexDescription_Groudon_2[] = _(
"Kontinente vergrößern kann. Dieses\n"
"POKéMON fiel nach einem erbitterten\n"
"Kampf mit KYOGRE in den Schlaf.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Rayquaza_1[] = _(
+ "RAYQUAZA soll für hunderte Millionen\n"
+ "Jahre in der Ozonschicht der Erde über\n"
+ "den Wolken gelebt haben. Daher wusste");
+static const u8 DexDescription_Rayquaza_2[] = _(
+ "man so lange nicht von seiner Existenz.");
+#else
static const u8 DexDescription_Rayquaza_1[] = _(
"RAYQUAZA lebte für hunderte Millionen\n"
"Jahre in der Ozonschicht und stieg nie\n"
@@ -3288,7 +6296,17 @@ static const u8 DexDescription_Rayquaza_1[] = _(
static const u8 DexDescription_Rayquaza_2[] = _(
"lebt von Wasser und Partikeln aus der\n"
"Atmosphäre.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Jirachi_1[] = _(
+ "JIRACHI wird aus seinem tausend-\n"
+ "jährigen Schlaf erwachen, wenn du ihm\n"
+ "mit klarer Stimme etwas vorsingst.");
+static const u8 DexDescription_Jirachi_2[] = _(
+ "Es soll angeblich alle Wünsche der\n"
+ "Menschen erfüllen.");
+#else
static const u8 DexDescription_Jirachi_1[] = _(
"Einer Legende nach erfüllt JIRACHI\n"
"jeden Wunsch, der auf einen Notizzettel\n"
@@ -3297,7 +6315,18 @@ static const u8 DexDescription_Jirachi_2[] = _(
"dieses POKéMON Gefahr wittert, kämpft\n"
"es bereits, bevor es überhaupt\n"
"aufgewacht ist.");
+#endif
+#ifdef SAPPHIRE
+static const u8 DexDescription_Deoxys_1[] = _(
+ "DEOXYS ging aus einem Virus aus dem\n"
+ "Weltraum hervor. Es ist sehr intelligent\n"
+ "und nutzt psychokinetische Energie.");
+static const u8 DexDescription_Deoxys_2[] = _(
+ "Dieses POKéMON verschießt\n"
+ "Laserstrahlen aus einem kristallartigen\n"
+ "Organ auf seinem Brustkorb.");
+#else
static const u8 DexDescription_Deoxys_1[] = _(
"Die DNS eines Weltraumvirus hat eine\n"
"spontane Mutation erfahren, da sie\n"
@@ -3306,6 +6335,7 @@ static const u8 DexDescription_Deoxys_2[] = _(
"Daraus entstand DEOXYS. \n"
"Das kristallartige Organ auf der Brust\n"
"dieses POKéMON ist sein Gehirn.");
+#endif
static const struct PokedexEntry gPokedexEntries[] = {
{
diff --git a/src/data/region_map_layout.h b/src/data/region_map_layout.h
new file mode 100644
index 000000000..ca33ef37a
--- /dev/null
+++ b/src/data/region_map_layout.h
@@ -0,0 +1,42 @@
+// Abbreviated definitions to make the map layout more visual
+#define R(routeNum) MAPSEC_ROUTE_##routeNum
+#define LITT_T MAPSEC_LITTLEROOT_TOWN
+#define OLDA_T MAPSEC_OLDALE_TOWN
+#define DEWF_T MAPSEC_DEWFORD_TOWN
+#define LAVA_T MAPSEC_LAVARIDGE_TOWN
+#define FALL_T MAPSEC_FALLARBOR_TOWN
+#define VERD_T MAPSEC_VERDANTURF_TOWN
+#define PACI_T MAPSEC_PACIFIDLOG_TOWN
+#define PETA_C MAPSEC_PETALBURG_CITY
+#define SLAT_C MAPSEC_SLATEPORT_CITY
+#define MAUV_C MAPSEC_MAUVILLE_CITY
+#define RUST_C MAPSEC_RUSTBORO_CITY
+#define FORT_C MAPSEC_FORTREE_CITY
+#define LILY_C MAPSEC_LILYCOVE_CITY
+#define MOSS_C MAPSEC_MOSSDEEP_CITY
+#define SOOT_C MAPSEC_SOOTOPOLIS_CITY
+#define EVER_C MAPSEC_EVER_GRANDE_CITY
+#define MTCHIM MAPSEC_MT_CHIMNEY
+#define SAFARI MAPSEC_SAFARI_ZONE
+#define BTLTWR MAPSEC_BATTLE_TOWER
+#define S_ISLD MAPSEC_SOUTHERN_ISLAND
+#define ______ MAPSEC_NONE
+
+static const u8 sRegionMapLayout[] =
+{
+ ______, R(114), R(114), FALL_T, R(113), R(113), R(113), R(113), R(111), ______, ______, R(119), FORT_C, R(120), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ ______, R(114), ______, ______, ______, ______, MTCHIM, MTCHIM, R(111), ______, ______, R(119), ______, R(120), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ R(115), R(114), ______, ______, ______, ______, MTCHIM, MTCHIM, R(111), ______, ______, R(119), ______, R(120), ______, ______, SAFARI, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ R(115), ______, ______, ______, ______, LAVA_T, R(112), R(112), R(111), ______, ______, R(119), ______, R(120), R(121), R(121), R(121), R(121), LILY_C, LILY_C, R(124), R(124), R(124), R(124), R(125), R(125), ______, ______,
+ R(115), ______, ______, ______, ______, ______, ______, ______, R(111), ______, ______, R(119), ______, ______, ______, ______, R(122), ______, ______, ______, R(124), R(124), R(124), R(124), R(125), R(125), ______, ______,
+ RUST_C, R(116), R(116), R(116), R(116), ______, ______, ______, R(111), ______, ______, R(119), ______, ______, ______, ______, R(122), ______, ______, ______, R(124), R(124), R(124), R(124), MOSS_C, MOSS_C, ______, ______,
+ RUST_C, ______, ______, ______, VERD_T, R(117), R(117), R(117), MAUV_C, MAUV_C, R(118), R(118), R(123), R(123), R(123), R(123), R(123), ______, ______, ______, R(126), R(126), R(126), R(127), R(127), R(127), ______, ______,
+ R(104), ______, ______, ______, ______, ______, ______, ______, R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(126), SOOT_C, R(126), R(127), R(127), R(127), ______, ______,
+ R(104), ______, ______, ______, R(103), R(103), R(103), R(103), R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(126), R(126), R(126), R(127), R(127), R(127), ______, EVER_C,
+ R(104), PETA_C, R(102), R(102), OLDA_T, ______, ______, ______, R(110), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, R(128), R(128), R(128), R(128), EVER_C,
+ R(105), ______, ______, ______, R(101), ______, ______, ______, SLAT_C, R(134), R(134), R(134), R(133), R(133), R(133), R(132), R(132), PACI_T, R(131), R(131), R(131), R(130), R(130), R(130), R(129), R(129), ______, ______,
+ R(105), ______, ______, ______, LITT_T, ______, ______, ______, SLAT_C, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ R(105), ______, ______, ______, ______, ______, ______, ______, R(109), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, BTLTWR, ______, ______, ______, ______, ______,
+ R(106), R(106), R(106), ______, ______, ______, ______, ______, R(109), ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+ ______, ______, DEWF_T, R(107), R(107), R(107), R(108), R(108), R(109), ______, ______, ______, S_ISLD, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
+};
diff --git a/src/data/region_map_names_de.h b/src/data/region_map_names_de.h
new file mode 100644
index 000000000..10f53c8ba
--- /dev/null
+++ b/src/data/region_map_names_de.h
@@ -0,0 +1,79 @@
+const u8 gMapName_LittlerootTown[] = _("WURZELHEIM");
+const u8 gMapName_OldaleTown[] = _("ROSALTSTADT");
+const u8 gMapName_DewfordTown[] = _("FAUSTAUHAVEN");
+const u8 gMapName_LavaridgeTown[] = _("BAD LAVASTADT");
+const u8 gMapName_FallarborTown[] = _("LAUBWECHSEL{NAME_END}FELD");
+const u8 gMapName_VerdanturfTown[] = _("WIESENFLUR");
+const u8 gMapName_PacifidlogTown[] = _("FLOSSBRUNN");
+const u8 gMapName_PetalburgCity[] = _("BLÜTENBURG{NAME_END} CITY");
+const u8 gMapName_SlateportCity[] = _("GRAPHITPORT{NAME_END} CITY");
+const u8 gMapName_MauvilleCity[] = _("MALVENFROH{NAME_END} CITY");
+const u8 gMapName_RustboroCity[] = _("METAROST{NAME_END} CITY");
+const u8 gMapName_FortreeCity[] = _("BAUMHAUSEN{NAME_END} CITY");
+const u8 gMapName_LilycoveCity[] = _("SEEGRASULB{NAME_END} CITY");
+const u8 gMapName_MossdeepCity[] = _("MOOSBACH{NAME_END} CITY");
+const u8 gMapName_SootopolisCity[] = _("XENEROVILLE");
+const u8 gMapName_EverGrandeCity[] = _("PRACHTPOLIS{NAME_END} CITY");
+const u8 gMapName_Route101[] = _("ROUTE 101");
+const u8 gMapName_Route102[] = _("ROUTE 102");
+const u8 gMapName_Route103[] = _("ROUTE 103");
+const u8 gMapName_Route104[] = _("ROUTE 104");
+const u8 gMapName_Route105[] = _("ROUTE 105");
+const u8 gMapName_Route106[] = _("ROUTE 106");
+const u8 gMapName_Route107[] = _("ROUTE 107");
+const u8 gMapName_Route108[] = _("ROUTE 108");
+const u8 gMapName_Route109[] = _("ROUTE 109");
+const u8 gMapName_Route110[] = _("ROUTE 110");
+const u8 gMapName_Route111[] = _("ROUTE 111");
+const u8 gMapName_Route112[] = _("ROUTE 112");
+const u8 gMapName_Route113[] = _("ROUTE 113");
+const u8 gMapName_Route114[] = _("ROUTE 114");
+const u8 gMapName_Route115[] = _("ROUTE 115");
+const u8 gMapName_Route116[] = _("ROUTE 116");
+const u8 gMapName_Route117[] = _("ROUTE 117");
+const u8 gMapName_Route118[] = _("ROUTE 118");
+const u8 gMapName_Route119[] = _("ROUTE 119");
+const u8 gMapName_Route120[] = _("ROUTE 120");
+const u8 gMapName_Route121[] = _("ROUTE 121");
+const u8 gMapName_Route122[] = _("ROUTE 122");
+const u8 gMapName_Route123[] = _("ROUTE 123");
+const u8 gMapName_Route124[] = _("ROUTE 124");
+const u8 gMapName_Route125[] = _("ROUTE 125");
+const u8 gMapName_Route126[] = _("ROUTE 126");
+const u8 gMapName_Route127[] = _("ROUTE 127");
+const u8 gMapName_Route128[] = _("ROUTE 128");
+const u8 gMapName_Route129[] = _("ROUTE 129");
+const u8 gMapName_Route130[] = _("ROUTE 130");
+const u8 gMapName_Route131[] = _("ROUTE 131");
+const u8 gMapName_Route132[] = _("ROUTE 132");
+const u8 gMapName_Route133[] = _("ROUTE 133");
+const u8 gMapName_Route134[] = _("ROUTE 134");
+const u8 gMapName_Underwater[] = _("UNTERWASSER");
+const u8 gMapName_GraniteCave[] = _("GRANITHÖHLE");
+const u8 gMapName_MtChimney[] = _("SCHLOTBERG");
+const u8 gMapName_SafariZone[] = _("SAFARI-ZONE");
+const u8 gMapName_BattleTower[] = _("DUELLTURM");
+const u8 gMapName_PetalburgWoods[] = _("BLÜTENBURGWALD");
+const u8 gMapName_RusturfTunnel[] = _("METAFLURTUNNEL");
+const u8 gMapName_AbandonedShip[] = _("SCHIFFSWRACK");
+const u8 gMapName_NewMauville[] = _("NEU MALVENFROH");
+const u8 gMapName_MeteorFalls[] = _("METEORFÄLLE");
+const u8 gMapName_MtPyre[] = _("PYROBERG");
+const u8 gMapName_EvilTeamHideout[] = _("{EVIL_TEAM}s VERSTECK");
+const u8 gMapName_ShoalCave[] = _("KÜSTENHÖHLE");
+const u8 gMapName_SeafloorCavern[] = _("TIEFSEEHÖHLE");
+const u8 gMapName_VictoryRoad[] = _("SIEGESSTRASSE");
+const u8 gMapName_MirageIsland[] = _("WUNDEREILAND");
+const u8 gMapName_CaveOfOrigin[] = _("URZEITHÖHLE");
+const u8 gMapName_SouthernIsland[] = _("INSEL IM SÜDEN");
+const u8 gMapName_FieryPath[] = _("FEURIGER PFAD");
+const u8 gMapName_JaggedPass[] = _("STEILPASS");
+const u8 gMapName_SealedChamber[] = _("SIEGELKAMMER");
+const u8 gMapName_ScorchedSlab[] = _("SONNENGROTTE");
+const u8 gMapName_IslandCave[] = _("INSELHÖHLE");
+const u8 gMapName_DesertRuins[] = _("WÜSTENRUINE");
+const u8 gMapName_AncientTomb[] = _("GRABMAL");
+const u8 gMapName_InsideOfTruck[] = _("IM MÖBELWAGEN");
+const u8 gMapName_SkyPillar[] = _("HIMMELTURM");
+const u8 gMapName_SecretBase[] = _("GEHEIMBASIS");
+const u8 gMapName_None[] = _("");
diff --git a/src/data/region_map_names_en.h b/src/data/region_map_names_en.h
new file mode 100644
index 000000000..9dde3d71a
--- /dev/null
+++ b/src/data/region_map_names_en.h
@@ -0,0 +1,79 @@
+const u8 gMapName_LittlerootTown[] = _("LITTLEROOT{NAME_END} TOWN");
+const u8 gMapName_OldaleTown[] = _("OLDALE{NAME_END} TOWN");
+const u8 gMapName_DewfordTown[] = _("DEWFORD{NAME_END} TOWN");
+const u8 gMapName_LavaridgeTown[] = _("LAVARIDGE{NAME_END} TOWN");
+const u8 gMapName_FallarborTown[] = _("FALLARBOR{NAME_END} TOWN");
+const u8 gMapName_VerdanturfTown[] = _("VERDANTURF{NAME_END} TOWN");
+const u8 gMapName_PacifidlogTown[] = _("PACIFIDLOG{NAME_END} TOWN");
+const u8 gMapName_PetalburgCity[] = _("PETALBURG{NAME_END} CITY");
+const u8 gMapName_SlateportCity[] = _("SLATEPORT{NAME_END} CITY");
+const u8 gMapName_MauvilleCity[] = _("MAUVILLE{NAME_END} CITY");
+const u8 gMapName_RustboroCity[] = _("RUSTBORO{NAME_END} CITY");
+const u8 gMapName_FortreeCity[] = _("FORTREE{NAME_END} CITY");
+const u8 gMapName_LilycoveCity[] = _("LILYCOVE{NAME_END} CITY");
+const u8 gMapName_MossdeepCity[] = _("MOSSDEEP{NAME_END} CITY");
+const u8 gMapName_SootopolisCity[] = _("SOOTOPOLIS{NAME_END} CITY");
+const u8 gMapName_EverGrandeCity[] = _("EVER GRANDE{NAME_END} CITY");
+const u8 gMapName_Route101[] = _("ROUTE 101");
+const u8 gMapName_Route102[] = _("ROUTE 102");
+const u8 gMapName_Route103[] = _("ROUTE 103");
+const u8 gMapName_Route104[] = _("ROUTE 104");
+const u8 gMapName_Route105[] = _("ROUTE 105");
+const u8 gMapName_Route106[] = _("ROUTE 106");
+const u8 gMapName_Route107[] = _("ROUTE 107");
+const u8 gMapName_Route108[] = _("ROUTE 108");
+const u8 gMapName_Route109[] = _("ROUTE 109");
+const u8 gMapName_Route110[] = _("ROUTE 110");
+const u8 gMapName_Route111[] = _("ROUTE 111");
+const u8 gMapName_Route112[] = _("ROUTE 112");
+const u8 gMapName_Route113[] = _("ROUTE 113");
+const u8 gMapName_Route114[] = _("ROUTE 114");
+const u8 gMapName_Route115[] = _("ROUTE 115");
+const u8 gMapName_Route116[] = _("ROUTE 116");
+const u8 gMapName_Route117[] = _("ROUTE 117");
+const u8 gMapName_Route118[] = _("ROUTE 118");
+const u8 gMapName_Route119[] = _("ROUTE 119");
+const u8 gMapName_Route120[] = _("ROUTE 120");
+const u8 gMapName_Route121[] = _("ROUTE 121");
+const u8 gMapName_Route122[] = _("ROUTE 122");
+const u8 gMapName_Route123[] = _("ROUTE 123");
+const u8 gMapName_Route124[] = _("ROUTE 124");
+const u8 gMapName_Route125[] = _("ROUTE 125");
+const u8 gMapName_Route126[] = _("ROUTE 126");
+const u8 gMapName_Route127[] = _("ROUTE 127");
+const u8 gMapName_Route128[] = _("ROUTE 128");
+const u8 gMapName_Route129[] = _("ROUTE 129");
+const u8 gMapName_Route130[] = _("ROUTE 130");
+const u8 gMapName_Route131[] = _("ROUTE 131");
+const u8 gMapName_Route132[] = _("ROUTE 132");
+const u8 gMapName_Route133[] = _("ROUTE 133");
+const u8 gMapName_Route134[] = _("ROUTE 134");
+const u8 gMapName_Underwater[] = _("UNDERWATER");
+const u8 gMapName_GraniteCave[] = _("GRANITE CAVE");
+const u8 gMapName_MtChimney[] = _("MT. CHIMNEY");
+const u8 gMapName_SafariZone[] = _("SAFARI ZONE");
+const u8 gMapName_BattleTower[] = _("BATTLE TOWER");
+const u8 gMapName_PetalburgWoods[] = _("PETALBURG WOODS");
+const u8 gMapName_RusturfTunnel[] = _("RUSTURF TUNNEL");
+const u8 gMapName_AbandonedShip[] = _("ABANDONED SHIP");
+const u8 gMapName_NewMauville[] = _("NEW MAUVILLE");
+const u8 gMapName_MeteorFalls[] = _("METEOR FALLS");
+const u8 gMapName_MtPyre[] = _("MT. PYRE");
+const u8 gMapName_EvilTeamHideout[] = _("{EVIL_TEAM} HIDEOUT");
+const u8 gMapName_ShoalCave[] = _("SHOAL CAVE");
+const u8 gMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN");
+const u8 gMapName_VictoryRoad[] = _("VICTORY ROAD");
+const u8 gMapName_MirageIsland[] = _("MIRAGE ISLAND");
+const u8 gMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN");
+const u8 gMapName_SouthernIsland[] = _("SOUTHERN ISLAND");
+const u8 gMapName_FieryPath[] = _("FIERY PATH");
+const u8 gMapName_JaggedPass[] = _("JAGGED PASS");
+const u8 gMapName_SealedChamber[] = _("SEALED CHAMBER");
+const u8 gMapName_ScorchedSlab[] = _("SCORCHED SLAB");
+const u8 gMapName_IslandCave[] = _("ISLAND CAVE");
+const u8 gMapName_DesertRuins[] = _("DESERT RUINS");
+const u8 gMapName_AncientTomb[] = _("ANCIENT TOMB");
+const u8 gMapName_InsideOfTruck[] = _("INSIDE OF TRUCK");
+const u8 gMapName_SkyPillar[] = _("SKY PILLAR");
+const u8 gMapName_SecretBase[] = _("SECRET BASE");
+const u8 gMapName_None[] = _("");
diff --git a/src/decoration.c b/src/decoration.c
index e829cb072..da33b3ab7 100755..100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -19,6 +19,27 @@
#include "field_weather.h"
#include "decoration.h"
+EWRAM_DATA u8 *gUnknown_020388D0 = NULL;
+EWRAM_DATA u8 gUnknown_020388D4 = 0;
+EWRAM_DATA u8 gUnknown_020388D5 = 0;
+EWRAM_DATA u8 gUnknown_020388D6[16] = {0};
+EWRAM_DATA u8 gUnknown_020388E6[12] = {0};
+EWRAM_DATA u8 gUnknown_020388F2 = 0;
+EWRAM_DATA u8 gUnknown_020388F3 = 0;
+EWRAM_DATA u8 gUnknown_020388F4 = 0;
+EWRAM_DATA u8 gUnknown_020388F5 = 0;
+EWRAM_DATA u8 gUnknown_020388F6 = 0;
+EWRAM_DATA u8 gUnknown_020388F7[8] = {0};
+EWRAM_DATA struct UnkStruct_02038900 gUnknown_02038900 = {0};
+EWRAM_DATA u16 gUnknown_020391A4 = 0;
+EWRAM_DATA u16 gUnknown_020391A6 = 0;
+EWRAM_DATA u8 gUnknown_020391A8 = 0;
+EWRAM_DATA u8 gUnknown_020391A9 = 0;
+EWRAM_DATA u8 gUnknown_020391AA = 0;
+EWRAM_DATA struct OamData gUnknown_020391AC = {0};
+EWRAM_DATA struct UnkStruct_020391B4 gUnknown_020391B4[16] = {0};
+EWRAM_DATA u8 gUnknown_02039234 = 0;
+
#if ENGLISH
const u8 DecorDesc_SMALL_DESK[] = _(
"A small desk built\n"
diff --git a/src/easy_chat.c b/src/easy_chat.c
index cc2cd7030..cca8c1355 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -19,19 +19,23 @@ extern const u8 gEasyChatGroupSizes[];
extern u16 gSpecialVar_0x8004;
-#ifdef NONMATCHING
-u8 *sub_80EB3FC(u8 *dst, u16 word) {
- int group, wordIndex;
+
+u8 *sub_80EB3FC(u8 *dst, u16 word)
+{
+ u16 group;
+ u16 wordIndex;
u8 *src;
u16 i;
-
if (sub_80EB37C(word))
- {
return StringCopy(dst, gOtherText_ThreeQuestions);
- }
- if (word != 0xFFFF)
+ if (word == 0xFFFF)
+ {
+ dst[0] = EOS;
+ return dst;
+ }
+ else
{
group = word >> 9;
wordIndex = word & 0x1FF;
@@ -41,34 +45,27 @@ u8 *sub_80EB3FC(u8 *dst, u16 word) {
case EC_GROUP_POKEMON_2: // 21
dst = StringCopy(dst, gSpeciesNames[wordIndex]);
break;
-
case EC_GROUP_MOVE_1: // 18
case EC_GROUP_MOVE_2: // 19
dst = StringCopy(dst, gMoveNames[wordIndex]);
break;
-
default:
src = gEasyChatGroupWords[group];
-
- i = wordIndex - 1;
- while (i != 0xFFFF)
+ for (i = wordIndex - 1; i != 0xFFFF; i--)
{
while (*src++ != EOS)
- {
- }
- i--;
+ ;
}
dst = StringCopy(dst, src);
break;
}
+ dst[0] = EOS;
+ return dst;
}
-
- dst[0] = EOS;
- return dst;
}
-#endif
-u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) {
+u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3)
+{
u16 i;
u16 n;
@@ -95,7 +92,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) {
words++;
dst = sub_80EB3FC(dst, word);
- dst[0] = 0xFE;
+ dst[0] = CHAR_NEWLINE;
dst++;
}
@@ -105,7 +102,8 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) {
return dst;
}
-u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) {
+u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3)
+{
u16 i;
u16 n;
@@ -133,7 +131,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) {
dst = sub_80EB3FC(dst, word);
// Only difference with ConvertEasyChatWordsToString
- dst[0] = (i == 0) ? 0xFE : 0xFA;
+ dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL;
dst++;
}
@@ -144,17 +142,16 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) {
}
-u16 unref_sub_80EB5E0(u16 arg0) {
+u16 unref_sub_80EB5E0(u16 arg0)
+{
u8 *chars;
u16 i;
- u16 strlen;
+ u16 length;
int group, word;
if (arg0 == 0xFFFF)
- {
return 0;
- }
group = arg0 >> 9;
word = arg0 & 0x1FF;
@@ -164,41 +161,37 @@ u16 unref_sub_80EB5E0(u16 arg0) {
case EC_GROUP_POKEMON_2: // 21
chars = (u8 *) gSpeciesNames[word];
break;
-
case EC_GROUP_MOVE_1: // 18
case EC_GROUP_MOVE_2: // 19
chars = gMoveNames[word];
break;
-
default:
chars = gEasyChatGroupWords[group];
-
- i = word - 1;
- while (i != 0xFFFF)
+ for (i = word - 1; i != 0xFFFF; i--)
{
while (*chars++ != EOS)
- {
- }
- i--;
+ ;
}
break;
}
- strlen = 0;
+ length = 0;
while (*chars != EOS)
{
chars++;
- strlen += 1;
+ length++;
}
- return strlen;
+ return length;
}
-static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) {
+static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3)
+{
return FALSE;
}
-void unref_sub_80EB684(u8 arg0, u16 arg1) {
+void unref_sub_80EB684(u8 arg0, u16 arg1)
+{
u16 *ptr;
u16 c;
@@ -217,7 +210,6 @@ void unref_sub_80EB684(u8 arg0, u16 arg1) {
c = 1;
ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02);
break;
-
default:
return;
}
@@ -231,7 +223,8 @@ void unref_sub_80EB684(u8 arg0, u16 arg1) {
}
}
-void sub_80EB6FC(u16 *arg0, u16 arg1) {
+void sub_80EB6FC(u16 *arg0, u16 arg1)
+{
u16 i;
for (i = arg1 - 1; i != 0xFFFF; i--)
@@ -242,35 +235,30 @@ void sub_80EB6FC(u16 *arg0, u16 arg1) {
}
-u16 sub_80EB72C(u16 group) {
- u16 local1;
-
- local1 = Random() % gEasyChatGroupSizes[group];
+u16 sub_80EB72C(u16 group)
+{
+ u16 local1 = Random() % gEasyChatGroupSizes[group];
- if (group == EC_GROUP_POKEMON ||
- group == EC_GROUP_POKEMON_2 ||
- group == EC_GROUP_MOVE_1 ||
- group == EC_GROUP_MOVE_2)
+ if (group == EC_GROUP_POKEMON
+ || group == EC_GROUP_POKEMON_2
+ || group == EC_GROUP_MOVE_1
+ || group == EC_GROUP_MOVE_2)
{
local1 = ((u16 *) gEasyChatGroupWords[group])[local1];
}
-
return ((group & 0x7F) << 9) | (local1 & 0x1FF);
}
-u16 sub_80EB784(u16 group) {
+u16 sub_80EB784(u16 group)
+{
if (!sub_80EAD7C(group))
- {
return -1;
- }
if (group != EC_GROUP_POKEMON)
{
if (group == EC_GROUP_TRENDY_SAYING)
- {
return sub_80EB960();
- }
}
else
{
@@ -280,11 +268,11 @@ u16 sub_80EB784(u16 group) {
return sub_80EB72C(group);
}
-void sub_80EB7C4(void) {
+void sub_80EB7C4(void)
+{
u16 *words;
u16 arg1, arg2;
-
switch (gSpecialVar_0x8004)
{
case 0:
@@ -292,7 +280,6 @@ void sub_80EB7C4(void) {
arg1 = 2;
arg2 = 2;
break;
-
case 1:
words = gSaveBlock1.unk2B28;
if (sub_80EB680(gSaveBlock1.unk2B28, 3, 2, 20))
@@ -306,19 +293,16 @@ void sub_80EB7C4(void) {
arg2 = 2;
}
break;
-
case 2:
words = gSaveBlock1.unk2B34;
arg1 = 3;
arg2 = 2;
break;
-
case 3:
words = gSaveBlock1.unk2B40;
arg1 = 3;
arg2 = 2;
break;
-
default:
return;
}
@@ -327,74 +311,65 @@ void sub_80EB7C4(void) {
ShowFieldAutoScrollMessage(gStringVar4);
}
-void sub_80EB83C(void) {
+void sub_80EB83C(void)
+{
u16 group, local2;
if (Random() & 1)
- {
group = EC_GROUP_HOBBIES;
- }
else
- {
group = EC_GROUP_LIFESTYLE;
- }
local2 = sub_80EB784(group);
sub_80EB3FC(gStringVar2, local2);
}
-u8 sub_80EB868(u8 arg0) {
+u8 sub_80EB868(u8 arg0)
+{
int offset;
int index;
index = arg0 / 8;
- offset = arg0 & 7;
+ offset = arg0 % 8;
return (gSaveBlock1.unk2D8C[index] >> offset) & 1;
}
-void sub_80EB890(u8 arg0) {
+void sub_80EB890(u8 arg0)
+{
int offset;
int index;
- if (arg0 > 32)
+ if (arg0 < 33)
{
- return;
+ index = arg0 / 8;
+ offset = arg0 % 8;
+ gSaveBlock1.unk2D8C[index] |= 1 << offset;
}
-
- index = arg0 / 8;
- offset = arg0 & 7;
- gSaveBlock1.unk2D8C[index] |= 1 << offset;
}
-u8 sub_80EB8C0(void) {
- u8 i, retval;
+u8 sub_80EB8C0(void)
+{
+ u8 i, count;
- i = 0;
- retval = 0;
- for (; i < 33; i++)
+ for (i = 0, count = 0; i < 33; i++)
{
if (sub_80EB868(i))
- {
- retval += 1;
- }
+ count++;
}
-
- return retval;
+ return count;
}
-u16 sub_80EB8EC(void) {
+u16 sub_80EB8EC(void)
+{
u16 i;
u16 local1, local2;
local1 = sub_80EB8C0();
if (local1 == 33)
- {
return -1;
- }
local2 = Random() % (33 - local1);
-
- for (i = 0; i <= 0x20; i++)
+ for (i = 0; i < 33; i++)
{
if (sub_80EB868(i) == 0)
{
@@ -403,35 +378,28 @@ u16 sub_80EB8EC(void) {
sub_80EB890(i);
return (i & 0x1FF) | 0x2800;
}
-
local2--;
}
}
-
return -1;
}
-static u16 sub_80EB960(void) {
+static u16 sub_80EB960(void)
+{
u16 i;
u16 local1;
local1 = sub_80EB8C0();
if (local1 == 0)
- {
return -1;
- }
local1 = Random() % local1;
-
- for (i = 0; i <= 0x20; i++)
+ for (i = 0; i < 33; i++)
{
if (sub_80EB868(i))
{
if (local1 == 0)
- {
return (i & 0x1FF) | 0x2800;
- }
-
local1--;
}
}
@@ -439,11 +407,13 @@ static u16 sub_80EB960(void) {
return -1;
}
-u8 sub_80EB9C8(void) {
+u8 sub_80EB9C8(void)
+{
return IsNationalPokedexEnabled();
}
-static u16 sub_80EB9D8(void) {
+static u16 sub_80EB9D8(void)
+{
u16 *speciesList;
u16 local1;
u16 i;
@@ -451,32 +421,22 @@ static u16 sub_80EB9D8(void) {
local1 = sub_80EAE88(0);
if (local1 == 0)
- {
return -1;
- }
local1 = Random() % local1;
speciesList = (u16 *) gEasyChatGroupWords[EC_GROUP_POKEMON];
-
for (i = 0; i < gEasyChatGroupSizes[EC_GROUP_POKEMON]; i++)
{
const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList);
-
const u8 local2 = GetNationalPokedexFlag(dexNum, 0);
if (local2)
{
if (local1 == 0)
- {
return *speciesList & 0x1FF;
- }
-
local1--;
}
-
speciesList++;
}
-
return -1;
}
-
diff --git a/src/event_data.c b/src/event_data.c
index c6aecf13c..0484bae02 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -6,7 +6,23 @@
#define TEMP_UPPER_FLAGS_SIZE 0x8
#define TEMP_VARS_SIZE 0x20
-extern u8 gUnknown_0202E8E2[16];
+EWRAM_DATA u16 gSpecialVar_0x8000 = 0;
+EWRAM_DATA u16 gSpecialVar_0x8001 = 0;
+EWRAM_DATA u16 gSpecialVar_0x8002 = 0;
+EWRAM_DATA u16 gSpecialVar_0x8003 = 0;
+EWRAM_DATA u16 gSpecialVar_0x8004 = 0;
+EWRAM_DATA u16 gSpecialVar_0x8005 = 0;
+EWRAM_DATA u16 gSpecialVar_0x8006 = 0;
+EWRAM_DATA u16 gSpecialVar_0x8007 = 0;
+EWRAM_DATA u16 gSpecialVar_0x8008 = 0;
+EWRAM_DATA u16 gSpecialVar_0x8009 = 0;
+EWRAM_DATA u16 gSpecialVar_0x800A = 0;
+EWRAM_DATA u16 gSpecialVar_0x800B = 0;
+EWRAM_DATA u16 gScriptResult = 0;
+EWRAM_DATA u16 gScriptLastTalked = 0;
+EWRAM_DATA u16 gScriptFacing = 0;
+EWRAM_DATA u8 gUnknown_0202E8E2[16] = {0};
+
extern u16 *gSpecialVars[];
void InitEventData(void)
diff --git a/src/field_camera.c b/src/field_camera.c
index 1aed1549b..db51cf054 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -7,8 +7,7 @@
#include "sprite.h"
#include "text.h"
-extern u8 gUnknown_0202E854;
-
+EWRAM_DATA u8 gUnknown_0202E854 = 0;
struct UnknownStruct
{
@@ -19,15 +18,15 @@ struct UnknownStruct
bool8 unk4;
};
-extern struct UnknownStruct gUnknown_03000590;
-extern u16 gUnknown_03000598;
-extern s16 gUnknown_0300059A;
-extern u8 gUnknown_0300059C;
-extern void (*gUnknown_030005A0)(void);
+static struct UnknownStruct gUnknown_03000590;
+static u16 gUnknown_03000598;
+static s16 gUnknown_0300059A;
+static u8 gUnknown_0300059C;
+static void (*gUnknown_030005A0)(void);
-extern struct CameraSomething gUnknown_03004880;
-extern u16 gUnknown_03004898;
-extern u16 gUnknown_0300489C;
+struct CameraSomething gUnknown_03004880;
+u16 gUnknown_03004898;
+u16 gUnknown_0300489C;
static void RedrawMapSliceNorth(struct UnknownStruct *a, struct MapData *mapData);
static void RedrawMapSliceSouth(struct UnknownStruct *a, struct MapData *mapData);
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index a4f52f4b9..a8f6b6b9b 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -35,8 +35,11 @@ extern u16 gScriptFacing;
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
-extern u8 gUnknown_0202E8C0;
-extern u16 gUnknown_0202E8C2;
+
+static EWRAM_DATA u8 gUnknown_0202E8C0 = 0;
+static EWRAM_DATA u16 gUnknown_0202E8C2 = 0;
+
+u8 gSelectedMapObject;
//scripts
extern u8 gUnknown_081A2C51[];
@@ -863,7 +866,7 @@ u8 *GetFieldObjectScriptPointerForComparison(void)
return sub_8068364(&position, MapGridGetMetatileBehaviorAt(position.x, position.y), r4);
}
-int sub_8068FEC(void)
+int SetCableClubWarp(void)
{
struct MapPosition position;
diff --git a/src/field_effect.c b/src/field_effect.c
index 889664dfa..3632d7053 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -28,6 +28,8 @@
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
+EWRAM_DATA u32 gUnknown_0202FF84[8] = {0};
+
const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal");
const u32 gSpriteImage_839E434[] = INCBIN_U32("graphics/misc/pokeball_glow.4bpp");
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index 364d55e51..e614d899a 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -1,26 +1,41 @@
#include "global.h"
-#include "gba/syscall.h"
+#include "cable_club.h"
+#include "fieldmap.h"
+#include "field_door.h"
+#include "field_effect.h"
#include "field_fadetransition.h"
+#include "field_map_obj.h"
+#include "field_map_obj_helpers.h"
#include "field_player_avatar.h"
+#include "field_special_scene.h"
#include "field_weather.h"
#include "fldeff_flash.h"
-#include "global.fieldmap.h"
+#include "link.h"
+#include "main.h"
+#include "map_obj_lock.h"
+#include "metatile_behavior.h"
+#include "palette.h"
#include "rom4.h"
#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "start_menu.h"
#include "task.h"
-extern u16 gPlttBufferFaded[];
+void sub_8080B9C(u8);
+void task_map_chg_seq_0807E20C(u8);
+void task_map_chg_seq_0807E2CC(u8);
+void task0A_fade_n_map_maybe(u8);
+void sub_808115C(u8);
void palette_bg_fill_white(void)
{
- u32 source_color = 0x7fff7fff;
- CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24));
+ CpuFastFill16(RGB_WHITE, gPlttBufferFaded, PLTT_SIZE);
}
void palette_bg_fill_black(void)
{
- u32 source_color = 0;
- CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24));
+ CpuFastFill16(RGB_BLACK, gPlttBufferFaded, PLTT_SIZE);
}
void pal_fill_for_map_transition(void)
@@ -64,7 +79,7 @@ void sub_8080958(u8 arg)
void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID)
{
- if (sub_8080E70() == 1)
+ if (sub_8080E70() == TRUE)
{
DestroyTask(taskID);
EnableBothScriptContexts();
@@ -76,12 +91,536 @@ void sub_8080990(void)
ScriptContext2_Enable();
sub_8053E90();
pal_fill_black();
- CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a);
+ CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
}
void sub_80809B0(void)
{
ScriptContext2_Enable();
pal_fill_black();
- CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a);
+ CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
+}
+
+void task_mpl_807DD60(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[1] = sub_8083664();
+ task->data[0]++;
+ break;
+ case 1:
+ if (gTasks[task->data[1]].isActive != TRUE)
+ {
+ pal_fill_for_map_transition();
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (sub_8080E70() == TRUE)
+ {
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ }
+}
+
+void sub_8080A3C(void)
+{
+ ScriptContext2_Enable();
+ sub_8053E90();
+ palette_bg_fill_black();
+ CreateTask(task_mpl_807DD60, 10);
+}
+
+void sub_8080A5C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_80084A4();
+ task->data[0]++;
+ break;
+ case 1:
+ if (sub_8007ECC())
+ {
+ pal_fill_for_map_transition();
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (sub_8080E70() == TRUE)
+ {
+ sub_8007B14();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ }
+}
+
+void sub_8080AC4(void)
+{
+ ScriptContext2_Enable();
+ sub_8053E90();
+ palette_bg_fill_black();
+ CreateTask(sub_8080A5C, 10);
+}
+
+void sub_8080AE4(void)
+{
+ s16 x, y;
+ u8 behavior;
+ TaskFunc func;
+ PlayerGetDestCoords(&x, &y);
+ behavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsDoor(behavior) == TRUE)
+ func = sub_8080B9C;
+ else if (MetatileBehavior_IsNonAnimDoor(behavior) == TRUE)
+ func = task_map_chg_seq_0807E20C;
+ else
+ func = task_map_chg_seq_0807E2CC;
+ CreateTask(func, 10);
+}
+
+void mapldr_default(void)
+{
+ sub_8053E90();
+ pal_fill_for_map_transition();
+ sub_8080AE4();
+ ScriptContext2_Enable();
+}
+
+void sub_8080B60(void)
+{
+ sub_8053E90();
+ pal_fill_black();
+ sub_8080AE4();
+ ScriptContext2_Enable();
+}
+
+void sub_8080B78(void)
+{
+ sub_8053E90();
+ pal_fill_for_map_transition();
+ PlaySE(SE_TK_WARPOUT);
+ CreateTask(task_map_chg_seq_0807E2CC, 10);
+ ScriptContext2_Enable();
+}
+
+void sub_8080B9C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s16 *x = &task->data[2];
+ s16 *y = &task->data[3];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_8080958(0);
+ FreezeMapObjects();
+ PlayerGetDestCoords(x, y);
+ FieldSetDoorOpened(*x, *y);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (sub_8080E70())
+ {
+ u8 mapObjId;
+ sub_8080958(1);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 8);
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ if (walkrun_is_standing_still())
+ {
+ u8 mapObjId;
+ task->data[1] = FieldAnimateDoorClose(*x, *y);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]);
+ task->data[0] = 3;
+ }
+ break;
+ case 3:
+ if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
+ {
+ UnfreezeMapObjects();
+ task->data[0] = 4;
+ }
+ break;
+ case 4:
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void task_map_chg_seq_0807E20C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s16 *x = &task->data[2];
+ s16 *y = &task->data[3];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_8080958(0);
+ FreezeMapObjects();
+ PlayerGetDestCoords(x, y);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (sub_8080E70())
+ {
+ u8 mapObjId;
+ sub_8080958(1);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], GetGoSpeed0AnimId(player_get_direction_lower_nybble()));
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ if (walkrun_is_standing_still())
+ {
+ UnfreezeMapObjects();
+ task->data[0] = 3;
+ }
+ break;
+ case 3:
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void task_map_chg_seq_0807E2CC(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ FreezeMapObjects();
+ ScriptContext2_Enable();
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (sub_8080E70())
+ {
+ UnfreezeMapObjects();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_8080DC4(u8 taskId)
+{
+ if (sub_8080E70() == TRUE)
+ {
+ DestroyTask(taskId);
+ CreateTask(sub_80712B4, 80);
+ }
+}
+
+void atk17_seteffectuser(void)
+{
+ pal_fill_black();
+ CreateStartMenuTask(sub_8080DC4);
+ ScriptContext2_Enable();
+}
+
+void task_mpl_807E3C8(u8 taskId)
+{
+ if (sub_8080E70() == 1)
+ {
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ sub_8064E2C();
+ }
+}
+
+void sub_8080E28(void)
+{
+ ScriptContext2_Enable();
+ pal_fill_black();
+ CreateTask(task_mpl_807E3C8, 10);
+}
+
+void sub_8080E44(void)
+{
+ ScriptContext2_Enable();
+ sub_8053E90();
+ pal_fill_black();
+ CreateTask(task_mpl_807E3C8, 10);
+}
+
+bool32 sub_8080E64(void)
+{
+ return gPaletteFade.active;
+}
+
+bool32 sub_8080E70(void)
+{
+ if (sub_807D770() == TRUE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_8080E88(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlayRainSoundEffect();
+ PlaySE(SE_KAIDAN);
+ gFieldCallback = mapldr_default;
+ CreateTask(task0A_fade_n_map_maybe, 10);
+}
+
+void sp13E_warp_to_last_warp(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlayRainSoundEffect();
+ gFieldCallback = mapldr_default;
+ CreateTask(task0A_fade_n_map_maybe, 10);
+}
+
+void sub_8080EF0(void)
+{
+ ScriptContext2_Enable();
+ gFieldCallback = mapldr_default;
+ CreateTask(sub_808115C, 10);
+}
+
+void sp13F_fall_to_last_warp(void)
+{
+ sp13E_warp_to_last_warp();
+ gFieldCallback = sub_8086748;
+}
+
+void sub_8080F2C(u8 metatileBehavior)
+{
+ ScriptContext2_Enable();
+ sub_8086A2C(metatileBehavior, 10);
+}
+
+void sub_8080F48(void)
+{
+ ScriptContext2_Enable();
+ sub_80871B8(10);
+}
+
+void sub_8080F58(void)
+{
+ ScriptContext2_Enable();
+ sub_8087654(10);
+}
+
+void sub_8080F68(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlaySE(SE_TK_WARPIN);
+ CreateTask(task0A_fade_n_map_maybe, 10);
+ gFieldCallback = sub_8080B78;
+}
+
+void sub_8080F9C(void)
+{
+ ScriptContext2_Enable();
+ fade_8080918();
+ CreateTask(task0A_fade_n_map_maybe, 10);
+ gFieldCallback = sub_80C791C;
+}
+
+void sub_8080FC4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ ScriptContext2_Enable();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!sub_8080E64() && sub_8054034())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ warp_in();
+ SetMainCallback2(sub_8054588);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void DoCableClubWarp(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlaySE(SE_KAIDAN);
+ CreateTask(sub_8080FC4, 10);
+}
+
+void sub_8081050(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ ClearLinkCallback_2();
+ fade_screen(1, 0);
+ sub_8053FF8();
+ PlaySE(SE_KAIDAN);
+ data[0]++;
+ break;
+ case 1:
+ if (!sub_8080E64() && sub_8054034())
+ {
+ sub_800832C();
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ warp_in();
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80810DC(void)
+{
+ CreateTask(sub_8081050, 10);
+}
+
+void task0A_fade_n_map_maybe(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeMapObjects();
+ ScriptContext2_Enable();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!sub_8080E64() && sub_8054034())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ warp_in();
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_808115C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s16 *x = &task->data[2];
+ s16 *y = &task->data[3];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeMapObjects();
+ PlayerGetDestCoords(x, y);
+ PlaySE(sub_8058790(*x, *y - 1));
+ task->data[1] = FieldAnimateDoorOpen(*x, *y - 1);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
+ {
+ u8 mapObjId;
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[mapObjId]);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 9);
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ if (walkrun_is_standing_still())
+ {
+ u8 mapObjId;
+ task->data[1] = FieldAnimateDoorClose(*x, *y - 1);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]);
+ sub_8080958(0);
+ task->data[0] = 3;
+ }
+ break;
+ case 3:
+ if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
+ {
+ task->data[0] = 4;
+ }
+ break;
+ case 4:
+ sub_8053FF8();
+ fade_8080918();
+ PlayRainSoundEffect();
+ task->data[0] = 0;
+ task->func = task0A_fade_n_map_maybe;
+ break;
+ }
+}
+
+void sub_80812C8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeMapObjects();
+ ScriptContext2_Enable();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!sub_8080E64() && sub_8054034())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ warp_in();
+ SetMainCallback2(sub_8054534);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_8081334(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlayRainSoundEffect();
+ PlaySE(SE_KAIDAN);
+ gFieldCallback = sub_8080B60;
+ CreateTask(sub_80812C8, 10);
}
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index d94c97ff3..f60b1b233 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -1902,8 +1902,11 @@ extern void CameraObjectReset1(void);
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern u8 gReservedSpritePaletteCount;
extern struct Camera gUnknown_0202E844;
-extern u8 gUnknown_030005A4;
-extern u16 gUnknown_030005A6;
+
+static u8 gUnknown_030005A4;
+static u16 gUnknown_030005A6;
+
+struct MapObject gMapObjects[16];
void npc_clear_ids_and_state(struct MapObject *mapObj)
{
@@ -3881,8 +3884,6 @@ u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite)
return gUnknown_083752D0[sprite->data1](mapObject, sprite);
}
-extern u32 gUnknown_0202FF84[];
-
u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite)
{
u8 berryTreeStage;
diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c
index 46784cff3..87be8e011 100644
--- a/src/field_map_obj_helpers.c
+++ b/src/field_map_obj_helpers.c
@@ -7,8 +7,6 @@
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
-extern u32 gUnknown_0202FF84[];
-
extern s16 gUnknown_08376194[];
extern SpriteStepFunc *gUnknown_08376180[];
extern s8 *gUnknown_083761D0[];
diff --git a/src/field_message_box.c b/src/field_message_box.c
index 2cd2e66ab..35aac7ac9 100644
--- a/src/field_message_box.c
+++ b/src/field_message_box.c
@@ -6,7 +6,7 @@
#include "text.h"
#include "text_window.h"
-extern struct Window gFieldMessageBoxWindow;
+static EWRAM_DATA struct Window gFieldMessageBoxWindow = {0};
static u8 sMessageBoxMode;
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 3cdb45584..2a7b2f3e0 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -24,7 +24,7 @@
#include "tv.h"
#include "wild_encounter.h"
-extern u32 gUnknown_0202FF84[];
+EWRAM_DATA struct PlayerAvatar gPlayerAvatar = {0};
//Functions
static bool8 sub_8058854(struct MapObject *, u8);
diff --git a/src/field_region_map.c b/src/field_region_map.c
index 58b0e37bc..7cb22e5df 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -19,11 +19,13 @@ struct UnkStruct
{
MainCallback callback;
u8 filler[4];
+ // This should be RegionMap, but I can't do that because it overlaps unk888.
struct RegionMapStruct unk8;
u16 unk888;
};
-extern struct UnkStruct unk_2000000;
+extern u8 ewram[];
+#define unk_2000000 (*(struct UnkStruct *)(ewram))
void FieldInitRegionMap(MainCallback callback)
{
@@ -46,9 +48,10 @@ void CB2_FieldInitRegionMap(void)
REG_BG3VOFS = 0;
ResetSpriteData();
FreeAllSpritePalettes();
- sub_80FA8EC((u32)&unk_2000000.unk8, 0);
- sub_80FBCF0(0, 0);
- sub_80FBB3C(1, 1);
+ // TODO: remove this cast
+ InitRegionMap((void *)&unk_2000000.unk8, 0);
+ CreateRegionMapPlayerIcon(0, 0);
+ CreateRegionMapCursor(1, 1);
SetUpWindowConfig(&gWindowConfig_81E709C);
InitMenuWindow(&gWindowConfig_81E709C);
MenuZeroFillScreen();
@@ -107,7 +110,7 @@ void sub_813EFDC(void)
case 4:
if (!gPaletteFade.active)
{
- sub_80FAB10();
+ FreeRegionMapIconResources();
SetMainCallback2(unk_2000000.callback);
}
break;
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
new file mode 100644
index 000000000..79913e1c5
--- /dev/null
+++ b/src/field_screen_effect.c
@@ -0,0 +1,340 @@
+#include "global.h"
+#include "event_data.h"
+#include "field_camera.h"
+#include "menu.h"
+#include "palette.h"
+#include "rom4.h"
+#include "script.h"
+#include "task.h"
+#include "text.h"
+#include "unknown_task.h"
+
+struct UnknownStruct1
+{
+ u8 filler0[0x14];
+ u8 unk14;
+ u8 filler15[0xB];
+};
+extern struct UnknownStruct1 gUnknown_03004DC0;
+
+extern u16 gUnknown_03004DE0[][0x3C0];
+
+const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 };
+
+const s32 gUnknown_0839ACE8 = 4;
+
+const static u32 gUnknown_0839ACEC[3] =
+{
+ REG_ADDR_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
+ 1
+};
+
+static void sub_808136C(u16 *dest, u32 a2, s32 a3, s32 a4)
+{
+ if (a2 <= 0xA0)
+ {
+ if (a3 < 0)
+ a3 = 0;
+ if (a3 > 255)
+ a3 = 255;
+ if (a4 < 0)
+ a4 = 0;
+ if (a4 > 255)
+ a4 = 255;
+ dest[a2] = (a3 << 8) | a4;
+ }
+}
+
+static void sub_8081398(u16 *dest, s32 a2, s32 a3, s32 a4)
+{
+ s32 v1 = a4;
+ s32 v2 = a4;
+ s32 v3 = 0;
+ while (v1 >= v3)
+ {
+ sub_808136C(dest, a3 - v3, a2 - v1, a2 + v1);
+ sub_808136C(dest, a3 + v3, a2 - v1, a2 + v1);
+ sub_808136C(dest, a3 - v1, a2 - v3, a2 + v3);
+ sub_808136C(dest, a3 + v1, a2 - v3, a2 + v3);
+ v2 -= (v3 * 2) - 1;
+ v3++;
+ if (v2 < 0)
+ {
+ v2 += 2 * (v1 - 1);
+ v1--;
+ }
+ }
+}
+
+static void sub_8081424(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]);
+ data[0] = 1;
+ break;
+ case 1:
+ sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]);
+ data[0] = 0;
+ data[3] += data[5];
+ if (data[3] > data[4])
+ {
+ if (data[6] == 1)
+ {
+ remove_some_task();
+ data[0] = 2;
+ }
+ else
+ {
+ DestroyTask(taskId);
+ }
+ }
+ break;
+ case 2:
+ dp12_8087EA4();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_80814E8(u8 taskId)
+{
+ if (!FuncIsActiveTask(sub_8081424))
+ {
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8081510(void)
+{
+ if (!FuncIsActiveTask(sub_80814E8))
+ CreateTask(sub_80814E8, 80);
+}
+
+static u8 sub_8081534(s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, u8 a6)
+{
+ u8 taskId = CreateTask(sub_8081424, 80);
+ s16 *data = gTasks[taskId].data;
+
+ data[3] = a3;
+ data[4] = a4;
+ data[1] = a1;
+ data[2] = a2;
+ data[6] = a5;
+
+ if (a3 < a4)
+ data[5] = a6;
+ else
+ data[5] = -a6;
+
+ return taskId;
+}
+
+void sub_8081594(u8 a1)
+{
+ u8 index = sav1_get_flash_used_on_map();
+ u8 value = 0;
+ if (!a1)
+ value = 1;
+ sub_8081534(120, 80, gUnknown_0839ACDC[index], gUnknown_0839ACDC[a1], value, 1);
+ sub_8081510();
+ ScriptContext2_Enable();
+}
+
+void sub_80815E0(u8 a1)
+{
+ if (a1)
+ {
+ sub_8081398(&gUnknown_03004DE0[0][0], 120, 80, gUnknown_0839ACDC[a1]);
+ CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480);
+ }
+}
+
+static void sub_808161C(u8 a1)
+{
+ int i;
+ u16 color[1];
+
+ if (!a1)
+ color[0] = 0x1F;
+ else
+ color[0] = 0x7C00;
+
+ for (i = 0; i < 16; i++)
+ {
+ LoadPalette(color, 0xF0 + i, 2);
+ }
+}
+
+static bool8 sub_8081658(u16 a1)
+{
+ u8 lo = REG_BLDALPHA & 0xFF;
+ u8 hi = REG_BLDALPHA >> 8;
+
+ if (a1)
+ {
+ if (lo)
+ {
+ lo--;
+ }
+ }
+ else
+ {
+ if (hi < 0x10)
+ {
+ hi++;
+ }
+ }
+
+ REG_BLDALPHA = (hi << 8) | lo;
+
+ if (lo == 0 && hi == 0x10)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_80816A8(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;
+ REG_DISPCNT &= 0xBFFF;
+ REG_BLDCNT |= gUnknown_081E29E8[0];
+ REG_BLDALPHA = 1804;
+ REG_WININ = 63;
+ REG_WINOUT = 30;
+ sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1);
+ CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480);
+ sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]);
+ data[0] = 1;
+ break;
+ case 1:
+ MenuFillWindowRectWithBlankTile(0, 0, 29, 19);
+ sub_808161C(data[1]);
+ sub_8081534(data[2], data[3], 1, 160, 1, 2);
+ data[0] = 2;
+ break;
+ case 2:
+ if (!FuncIsActiveTask(sub_8081424))
+ {
+ 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_8081658(data[5]) == TRUE)
+ data[0] = 5;
+ }
+ break;
+ case 5:
+ MenuZeroFillWindowRect(0, 0, 29, 19);
+ LoadFontDefaultPalette(&gWindowConfig_81E6CE4);
+ REG_WIN0H = 255;
+ REG_DISPCNT = data[6];
+ REG_BLDCNT = data[7];
+ REG_BLDALPHA = data[8];
+ REG_WININ = data[9];
+ REG_WINOUT = data[10];
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80818A4(void)
+{
+ u8 taskId = CreateTask(sub_80816A8, 80);
+ s16 *data = gTasks[taskId].data;
+
+ if (gScriptResult == 0)
+ {
+ data[1] = 0;
+ data[2] = 104;
+ }
+ else if (gScriptResult == 1)
+ {
+ data[1] = 1;
+ data[2] = 104;
+ }
+ else if (gScriptResult == 2)
+ {
+ data[1] = 0;
+ data[2] = 120;
+ }
+ else
+ {
+ data[1] = 1;
+ data[2] = 120;
+ }
+
+ data[3] = 80;
+}
+
+void sub_80818FC(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_80816A8);
+ gTasks[taskId].data[0] = 6;
+}
+
+static void task50_0807F0C8(u8);
+
+void sub_8081924(void)
+{
+ sub_8054044();
+ CreateTask(task50_0807F0C8, 80);
+}
+
+static void task50_0807F0C8(u8 taskId)
+{
+ if (sub_8054034() == TRUE)
+ {
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+}
diff --git a/src/field_specials.c b/src/field_specials.c
index 2b505bbfe..454bd8d96 100755..100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -41,8 +41,26 @@
#elif GERMAN
#define CHAR_DECIMAL_SEPARATOR CHAR_COMMA
#endif
+
+extern struct WarpData gUnknown_020297F0;
+extern u8 gBattleOutcome;
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gScriptResult;
+
+EWRAM_DATA u8 gUnknown_02039250 = 0;
+EWRAM_DATA u8 gUnknown_02039251 = 0;
+EWRAM_DATA u32 gUnknown_02039254 = 0;
+EWRAM_DATA u8 gUnknown_02039258 = 0;
+EWRAM_DATA u8 gUnknown_02039259 = 0;
+EWRAM_DATA u8 gUnknown_0203925A = 0;
+EWRAM_DATA u8 gUnknown_0203925B = 0;
+EWRAM_DATA u8 gUnknown_0203925C = 0;
+
static void RecordCyclingRoadResults(u32, u8);
+static struct ElevatorMenu gUnknown_03000760[20];
+
void sub_810D6A4(void) {
SetMainCallback2(sub_8145D88);
ScriptContext2_Enable();
@@ -1761,7 +1779,7 @@ u8 GetPokeblockNameByMonNature(void)
void GetSecretBaseNearbyMapName(void)
{
- sub_80FBFB4(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0);
+ GetMapSectionName(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0);
}
u16 sub_810F404(void)
diff --git a/src/field_tasks.c b/src/field_tasks.c
index caf2ce6b9..caf2ce6b9 100755..100644
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
diff --git a/src/fieldmap.c b/src/fieldmap.c
index e573ec13a..0e0ec246c 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -25,6 +25,8 @@ EWRAM_DATA struct MapHeader gMapHeader = {0};
EWRAM_DATA struct Camera gUnknown_0202E844 = {0};
EWRAM_DATA static struct ConnectionFlags gUnknown_0202E850 = {0};
+struct BackupMapData gUnknown_03004870;
+
static const struct ConnectionFlags sDummyConnectionFlags = {0};
struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection)
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index e837dbd45..b394d1e4c 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -27,7 +27,6 @@ extern struct SpriteTemplate gSpriteTemplate_CutGrass;
extern struct MapPosition gUnknown_0203923C;
extern u8 gLastFieldPokeMenuOpened;
-extern u32 gUnknown_0202FF84[];
extern u8 UseCutScript;
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
new file mode 100644
index 000000000..6c2633567
--- /dev/null
+++ b/src/fldeff_flash.c
@@ -0,0 +1,306 @@
+#include "global.h"
+#include "event_data.h"
+#include "field_effect.h"
+#include "main.h"
+#include "palette.h"
+#include "pokemon_menu.h"
+#include "rom4.h"
+#include "rom6.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+
+struct FlashStruct
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ void (*func)(void);
+};
+
+extern struct FlashStruct gUnknown_083F7FC4[];
+extern u16 gCaveTransitionPalette_White[];
+extern u16 gCaveTransitionPalette_Black[];
+extern u16 gUnknown_083F808C[];
+extern u16 gUnknown_083F809C[];
+extern u16 gCaveTransitionTilemap[];
+extern u8 gCaveTransitionTiles[];
+
+extern u8 gLastFieldPokeMenuOpened;
+extern void (*gUnknown_03005CE4)(void);
+
+extern u8 gUnknown_081B694A[];
+
+void sub_810CBFC(void);
+void sub_810CC34(void);
+bool8 sub_810CD5C(void);
+void sub_810CE5C(u8);
+void sub_810CE78(u8);
+void sub_810CF18(u8);
+void sub_810CF5C(u8);
+void sub_810CFC4(u8);
+void sub_810D00C(u8);
+void sub_810D028(u8);
+void sub_810D0C4(u8);
+void sub_810D128(u8);
+
+bool8 SetUpFieldMove_Flash(void)
+{
+ if (gMapHeader.cave == TRUE && !FlagGet(SYS_USE_FLASH))
+ {
+ gFieldCallback = sub_808AB90;
+ gUnknown_03005CE4 = sub_810CBFC;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_810CBFC(void)
+{
+ u8 taskId = oei_task_add();
+ gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gTasks[taskId].data[8] = (uintptr_t)sub_810CC34 >> 16;
+ gTasks[taskId].data[9] = (uintptr_t)sub_810CC34;
+}
+
+void sub_810CC34(void)
+{
+ PlaySE(SE_W115);
+ FlagSet(SYS_USE_FLASH);
+ ScriptContext1_SetupScript(gUnknown_081B694A);
+}
+
+void sub_810CC54(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_810CC80(void)
+{
+ u16 ime;
+
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG0CNT = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
+ ResetPaletteFade();
+ ResetTasks();
+ ResetSpriteData();
+ ime = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = ime;
+ SetVBlankCallback(VBlankCB);
+ SetMainCallback2(sub_810CC54);
+ if (!sub_810CD5C())
+ SetMainCallback2(gMain.savedCallback);
+}
+
+bool8 sub_810CD5C(void)
+{
+ u8 i;
+ u8 v0 = get_map_light_from_warp0();
+ u8 v1 = sav1_map_get_light_level();
+
+ for (i = 0; gUnknown_083F7FC4[i].unk0; i++)
+ {
+ if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1)
+ {
+ gUnknown_083F7FC4[i].func();
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+u8 sub_810CDB8(u8 a1, u8 a2)
+{
+ u8 i;
+ u8 v0 = a1;
+ u8 v1 = a2;
+
+ for (i = 0; gUnknown_083F7FC4[i].unk0; i++)
+ {
+ if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1)
+ {
+ return gUnknown_083F7FC4[i].unk2;
+ }
+ }
+
+ return FALSE;
+}
+
+u8 fade_type_for_given_maplight_pair(u8 a1, u8 a2)
+{
+ u8 i;
+ u8 v0 = a1;
+ u8 v1 = a2;
+
+ for (i = 0; gUnknown_083F7FC4[i].unk0; i++)
+ {
+ if (gUnknown_083F7FC4[i].unk0 == v0 && gUnknown_083F7FC4[i].unk1 == v1)
+ {
+ return gUnknown_083F7FC4[i].unk3;
+ }
+ }
+
+ return FALSE;
+}
+
+void sub_810CE48(void)
+{
+ CreateTask(sub_810CE5C, 0);
+}
+
+void sub_810CE5C(u8 taskId)
+{
+ gTasks[taskId].func = sub_810CE78;
+}
+
+void sub_810CE78(u8 taskId)
+{
+ REG_DISPCNT = 0;
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
+ LoadPalette(gUnknown_083F809C, 0xE0, 0x10);
+ REG_BLDCNT = 15937;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG0CNT = 7948;
+ REG_DISPCNT = 4416;
+ gTasks[taskId].func = sub_810CF18;
+ gTasks[taskId].data[0] = 16;
+ gTasks[taskId].data[1] = 0;
+}
+
+void sub_810CF18(u8 taskId)
+{
+ u16 count = gTasks[taskId].data[1];
+ u16 blend = count + 0x1000;
+ REG_BLDALPHA = blend;
+ if (count <= 0x10)
+ {
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = sub_810CF5C;
+ }
+}
+
+void sub_810CF5C(u8 taskId)
+{
+ u16 count;
+
+ REG_BLDALPHA = 4112;
+
+ count = gTasks[taskId].data[2];
+
+ if (count < 8)
+ {
+ gTasks[taskId].data[2]++;
+ LoadPalette(&gUnknown_083F809C[count], 0xE0, 16 - 2 * count);
+ }
+ else
+ {
+ LoadPalette(gCaveTransitionPalette_White, 0, 0x20);
+ gTasks[taskId].func = sub_810CFC4;
+ gTasks[taskId].data[2] = 8;
+ }
+}
+
+void sub_810CFC4(u8 taskId)
+{
+ if (gTasks[taskId].data[2])
+ gTasks[taskId].data[2]--;
+ else
+ SetMainCallback2(gMain.savedCallback);
+}
+
+void sub_810CFF8(void)
+{
+ CreateTask(sub_810D00C, 0);
+}
+
+void sub_810D00C(u8 taskId)
+{
+ gTasks[taskId].func = sub_810D028;
+}
+
+void sub_810D028(u8 taskId)
+{
+ REG_DISPCNT = 0;
+ LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
+ LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG0CNT = 7948;
+ REG_DISPCNT = 4416;
+ LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
+ LoadPalette(gCaveTransitionPalette_Black, 0, 0x20);
+ gTasks[taskId].func = sub_810D0C4;
+ gTasks[taskId].data[0] = 16;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+}
+
+void sub_810D0C4(u8 taskId)
+{
+ u16 count = gTasks[taskId].data[2];
+ if (count < 16)
+ {
+ gTasks[taskId].data[2]++;
+ gTasks[taskId].data[2]++;
+ LoadPalette(&gUnknown_083F808C[15 - count], 0xE0, 2 * (count + 1));
+ }
+ else
+ {
+ REG_BLDALPHA = 4112;
+ REG_BLDCNT = 15937;
+ gTasks[taskId].func = sub_810D128;
+ }
+}
+
+void sub_810D128(u8 taskId)
+{
+ u16 count = 16 - gTasks[taskId].data[1];
+ u16 blend = count + 0x1000;
+ REG_BLDALPHA = blend;
+ if (count)
+ {
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ LoadPalette(gCaveTransitionPalette_Black, 0, 0x20);
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index 1edae09d4..81f4f63c6 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -13,8 +13,6 @@ static void sub_811AA18(void);
static void sub_811AA38(void);
static void sub_811AA9C(void);
-extern u32 gUnknown_0202FF84[];
-
extern u8 gLastFieldPokeMenuOpened;
extern u16 gScriptResult;
extern void (*gFieldCallback)(void);
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index 6e782f4ac..4c3e6bf4a 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -15,8 +15,6 @@ static void sub_812C01C(void);
static void sub_812C084(u8);
static void sub_812C118(u8);
-extern u32 gUnknown_0202FF84[];
-
extern u8 gLastFieldPokeMenuOpened;
extern void (*gFieldCallback)(void);
extern void (*gUnknown_03005CE4)(void);
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
index df12d3072..74e68df06 100644
--- a/src/fldeff_teleport.c
+++ b/src/fldeff_teleport.c
@@ -7,8 +7,6 @@
#include "rom6.h"
#include "task.h"
-extern u32 gUnknown_0202FF84[];
-
extern void (*gFieldCallback)(void);
extern u8 gLastFieldPokeMenuOpened;
extern void (*gUnknown_03005CE4)(void);
diff --git a/src/intro.c b/src/intro.c
index 462a2134d..a43e0356c 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -22,12 +22,8 @@
#include "unknown_task.h"
extern struct SpriteTemplate gUnknown_02024E8C;
-extern u16 gUnknown_02039318;
-extern u16 gUnknown_0203931A;
extern u16 gUnknown_02039358;
extern u16 gUnknown_0203935A;
-extern u32 gIntroFrameCounter;
-extern struct GcmbStruct gMultibootProgramStruct;
extern u16 gSaveFileStatus;
extern u8 gReservedSpritePaletteCount;
extern const u8 gInterfaceGfx_PokeBall[];
@@ -37,6 +33,12 @@ extern const u16 gIntroCopyright_Pal[];
extern const u16 gIntroCopyright_Tilemap[];
extern void *const gUnknown_0840B5A0[];
+static EWRAM_DATA u16 gUnknown_02039318 = 0;
+static EWRAM_DATA u16 gUnknown_0203931A = 0;
+
+u32 gIntroFrameCounter;
+struct GcmbStruct gMultibootProgramStruct;
+
//--------------------------------------------------
// Graphics Data
//--------------------------------------------------
diff --git a/src/item.c b/src/item.c
index 22ac6e7cd..36871285a 100644
--- a/src/item.c
+++ b/src/item.c
@@ -1,12 +1,24 @@
#include "global.h"
+#include "hold_effects.h"
#include "item.h"
#include "items.h"
+#include "item_use.h"
#include "berry.h"
#include "string_util.h"
#include "strings.h"
extern u8 gUnknown_02038560;
-extern struct Item gItems[];
+
+// These constants are used in gItems
+enum
+{
+ POCKET_NONE,
+ POCKET_ITEMS,
+ POCKET_POKE_BALLS,
+ POCKET_TM_HM,
+ POCKET_BERRIES,
+ POCKET_KEY_ITEMS,
+};
enum
{
@@ -17,6 +29,14 @@ enum
KEYITEMS_POCKET
};
+#if ENGLISH
+#include "data/item_descriptions_en.h"
+#include "data/items_en.h"
+#elif GERMAN
+#include "data/item_descriptions_de.h"
+#include "data/items_de.h"
+#endif
+
static void CompactPCItems(void);
void CopyItemName(u16 itemId, u8 *string)
@@ -557,7 +577,7 @@ static u16 SanitizeItemId(u16 itemId)
return itemId;
}
-struct Item *ItemId_GetItem(u16 itemId)
+const struct Item *ItemId_GetItem(u16 itemId)
{
return &gItems[SanitizeItemId(itemId)];
}
@@ -582,7 +602,7 @@ u8 ItemId_GetHoldEffectParam(u16 itemId)
return gItems[SanitizeItemId(itemId)].holdEffectParam;
}
-u8 *ItemId_GetDescription(u16 itemId)
+const u8 *ItemId_GetDescription(u16 itemId)
{
return gItems[SanitizeItemId(itemId)].description;
}
@@ -590,7 +610,7 @@ u8 *ItemId_GetDescription(u16 itemId)
bool32 ItemId_CopyDescription(u8 *a, u32 itemId, u32 c)
{
u32 r5 = c + 1;
- u8 *description = gItems[SanitizeItemId(itemId)].description;
+ const u8 *description = gItems[SanitizeItemId(itemId)].description;
u8 *str = a;
for (;;)
diff --git a/src/load_save.c b/src/load_save.c
index 0630f060c..730aea2b8 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -19,7 +19,10 @@ struct LoadedSaveData
struct MailStruct mail[16];
};
-extern struct LoadedSaveData gLoadedSaveData[];
+EWRAM_DATA struct SaveBlock2 gSaveBlock2 = {0};
+EWRAM_DATA struct SaveBlock1 gSaveBlock1 = {0};
+
+static EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0};
void CheckForFlashMemory(void)
{
@@ -112,27 +115,27 @@ void LoadPlayerBag(void)
// load player items.
for (i = 0; i < 20; i++)
- gLoadedSaveData->items[i] = gSaveBlock1.bagPocket_Items[i];
+ gLoadedSaveData.items[i] = gSaveBlock1.bagPocket_Items[i];
// load player key items.
for (i = 0; i < 20; i++)
- gLoadedSaveData->keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i];
+ gLoadedSaveData.keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i];
// load player pokeballs.
for (i = 0; i < 16; i++)
- gLoadedSaveData->pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i];
+ gLoadedSaveData.pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i];
// load player TMs and HMs.
for (i = 0; i < 64; i++)
- gLoadedSaveData->TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i];
+ gLoadedSaveData.TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i];
// load player berries.
for (i = 0; i < 46; i++)
- gLoadedSaveData->berries[i] = gSaveBlock1.bagPocket_Berries[i];
+ gLoadedSaveData.berries[i] = gSaveBlock1.bagPocket_Berries[i];
// load mail.
for (i = 0; i < 16; i++)
- gLoadedSaveData->mail[i] = gSaveBlock1.mail[i];
+ gLoadedSaveData.mail[i] = gSaveBlock1.mail[i];
}
void SavePlayerBag(void)
@@ -141,25 +144,25 @@ void SavePlayerBag(void)
// save player items.
for (i = 0; i < 20; i++)
- gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData->items[i];
+ gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData.items[i];
// save player key items.
for (i = 0; i < 20; i++)
- gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData->keyItems[i];
+ gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData.keyItems[i];
// save player pokeballs.
for (i = 0; i < 16; i++)
- gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData->pokeBalls[i];
+ gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData.pokeBalls[i];
// save player TMs and HMs.
for (i = 0; i < 64; i++)
- gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData->TMsHMs[i];
+ gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData.TMsHMs[i];
// save player berries.
for (i = 0; i < 46; i++)
- gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData->berries[i];
+ gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData.berries[i];
// save mail.
for (i = 0; i < 16; i++)
- gSaveBlock1.mail[i] = gLoadedSaveData->mail[i];
+ gSaveBlock1.mail[i] = gLoadedSaveData.mail[i];
}
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
index 303cc3d07..01105d0db 100644
--- a/src/map_name_popup.c
+++ b/src/map_name_popup.c
@@ -101,7 +101,7 @@ void DrawMapNamePopup(void)
u8 name[20];
MenuLoadTextWindowGraphics_OverrideFrameType(0);
- sub_80FBFB4(name, gMapHeader.name, 0);
+ GetMapSectionName(name, gMapHeader.regionMapSectionId, 0);
MenuDrawTextWindow(0, 0, 13, 3);
sub_8072BD8(name, 1, 1, 0x60);
}
diff --git a/src/menu.c b/src/menu.c
index d532fc602..ef458124b 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -180,7 +180,7 @@ void sub_8071F40(const u8 *str)
MenuPrint(str, 3, 15);
}
-void sub_8071F60(u8 a1, u8 a2, u8 a3, u8 a4)
+void sub_8071F60(u8 a1, u8 a2, u8 a3)
{
sub_8003490(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3);
}
@@ -710,7 +710,7 @@ _08072B3E:\n\
}
#endif
-void MenuPrint_RightAligned(u8 *str, u8 left, u8 top)
+void MenuPrint_RightAligned(const u8 *str, u8 left, u8 top)
{
sub_8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
}
diff --git a/src/menu_cursor.c b/src/menu_cursor.c
index 2dc36cf32..64ab36573 100644
--- a/src/menu_cursor.c
+++ b/src/menu_cursor.c
@@ -22,13 +22,12 @@ extern const struct Subsprite gUnknown_0842F790;
extern u16 gUnknown_0203A360[];
-extern struct Subsprite gMenuCursorSubsprites[];
-
-extern u8 gUnknown_0203A3D0;
-extern u8 gUnknown_0203A3D1;
-extern u8 gUnknown_0203A3D2;
-extern u8 gUnknown_0203A3D3;
-extern u8 gUnknown_0203A3D4;
+EWRAM_DATA struct Subsprite gMenuCursorSubsprites[10] = {0};
+EWRAM_DATA u8 gUnknown_0203A3D0 = 0;
+EWRAM_DATA u8 gUnknown_0203A3D1 = 0;
+EWRAM_DATA u8 gUnknown_0203A3D2 = 0;
+EWRAM_DATA u8 gUnknown_0203A3D3 = 0;
+EWRAM_DATA u8 gUnknown_0203A3D4 = 0;
void sub_814A590(void)
{
@@ -555,7 +554,7 @@ _0814AA24:\n\
cmp r1, 0x7\n\
bgt _0814A99E\n\
_0814AA3E:\n\
- ldr r5, _0814AAAC @ =0x0843d6d8\n\
+ ldr r5, _0814AAAC @ =gUnknown_0842F798\n\
ldr r0, [r5]\n\
ldr r1, [r5, 0x4]\n\
str r0, [r4]\n\
@@ -611,7 +610,7 @@ _0814AA9C:\n\
pop {r0}\n\
bx r0\n\
.align 2, 0\n\
-_0814AAAC: .4byte 0x0843d6d8\n\
+_0814AAAC: .4byte gUnknown_0842F798\n\
_0814AAB0: .4byte gUnknown_0203A3D0\n\
_0814AAB4: .4byte gSprites\n\
_0814AAB8: .4byte gSubspriteTables_842F5C0\n\
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
new file mode 100644
index 000000000..9915d67ac
--- /dev/null
+++ b/src/menu_helpers.c
@@ -0,0 +1,572 @@
+#include "global.h"
+#include "item_menu.h"
+#include "items.h"
+#include "link.h"
+#include "mail_data.h"
+#include "main.h"
+#include "map_constants.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "rom4.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "task.h"
+#include "text.h"
+
+#define SCROLL_INDICATOR_PAL_TAG 6
+
+static void sub_80F9834(struct Sprite *sprite);
+
+static EWRAM_DATA u8 gUnknown_020388C0[4] = {0};
+static EWRAM_DATA struct YesNoFuncTable gUnknown_020388C4 = {0};
+
+static TaskFunc gUnknown_0300074C;
+
+static const u8 gSpriteImage_83E5808[] = INCBIN_U8("graphics/unknown_sprites/83E59A0/0.4bpp");
+
+static const u8 gSpriteImage_83E5848[] = INCBIN_U8("graphics/unknown_sprites/83E59A0/1.4bpp");
+
+static const u8 gSpriteImage_83E5888[] = INCBIN_U8("graphics/unknown_sprites/83E59B0/0.4bpp");
+
+static const u8 gSpriteImage_83E58C8[] = INCBIN_U8("graphics/unknown_sprites/83E59B0/1.4bpp");
+
+static const u8 gSpriteImage_83E5908[] = INCBIN_U8("graphics/unknown_sprites/83E59C0/0.4bpp");
+
+static const u8 gSpriteImage_83E5928[] = INCBIN_U8("graphics/unknown_sprites/83E59C0/1.4bpp");
+
+static const u16 Palette_3E5948[] = INCBIN_U16("graphics/interface/83E5948.gbapal");
+
+static const struct SpritePalette gUnknown_083E5968 = { Palette_3E5948, SCROLL_INDICATOR_PAL_TAG };
+
+static const struct OamData gOamData_83E5970 =
+{
+ .tileNum = 1
+};
+
+static const struct OamData gOamData_83E5978 =
+{
+ .shape = ST_OAM_H_RECTANGLE,
+ .tileNum = 1
+};
+
+static const struct OamData gOamData_83E5980 =
+{
+ .shape = ST_OAM_V_RECTANGLE,
+ .tileNum = 1
+};
+
+static const union AnimCmd gSpriteAnim_83E5988[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd gSpriteAnim_83E5990[] =
+{
+ ANIMCMD_FRAME(1, 0),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const gSpriteAnimTable_83E5998[] =
+{
+ gSpriteAnim_83E5988,
+ gSpriteAnim_83E5990,
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83E59A0[] =
+{
+ { gSpriteImage_83E5808, 0x40 },
+ { gSpriteImage_83E5848, 0x40 },
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83E59B0[] =
+{
+ { gSpriteImage_83E5888, 0x40 },
+ { gSpriteImage_83E58C8, 0x40 },
+};
+
+static const struct SpriteFrameImage gSpriteImageTable_83E59C0[] =
+{
+ { gSpriteImage_83E5908, 0x20 },
+ { gSpriteImage_83E5928, 0x20 },
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83E59D0 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = SCROLL_INDICATOR_PAL_TAG,
+ .oam = &gOamData_83E5978,
+ .anims = gSpriteAnimTable_83E5998,
+ .images = gSpriteImageTable_83E59A0,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80F9834,
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83E59E8 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = SCROLL_INDICATOR_PAL_TAG,
+ .oam = &gOamData_83E5980,
+ .anims = gSpriteAnimTable_83E5998,
+ .images = gSpriteImageTable_83E59B0,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80F9834,
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83E5A00 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = SCROLL_INDICATOR_PAL_TAG,
+ .oam = &gOamData_83E5970,
+ .anims = gSpriteAnimTable_83E5998,
+ .images = gSpriteImageTable_83E59C0,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+void sub_80F9020(void)
+{
+ memset(&gBGTilemapBuffers[1], 0, 0x800);
+ memset(&gBGTilemapBuffers[2], 0, 0x800);
+ memset(&gBGTilemapBuffers[3], 0, 0x800);
+}
+
+// display message box, fill box with tile if tile is not zero, print string
+static void PrintMessage(const u8 *str, u16 tile)
+{
+ MenuDisplayMessageBox();
+ if (tile)
+ {
+ sub_80A3FA0(&gBGTilemapBuffers[1][0], 2, 15, 26, 4, tile);
+ }
+ sub_8072044(str);
+}
+
+static void sub_80F9090(u8 taskId)
+{
+ if (MenuUpdateWindowText() == TRUE)
+ {
+ gUnknown_0300074C(taskId);
+ }
+}
+
+void DisplayItemMessageOnField(u8 taskId, const u8 *str, TaskFunc callback, u16 tile)
+{
+ PrintMessage(str, tile);
+ gUnknown_0300074C = callback;
+ gTasks[taskId].func = sub_80F9090;
+}
+
+static void Task_CallYesOrNoCallback(u8 taskId)
+{
+ switch (ProcessMenuInputNoWrap_())
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ gUnknown_020388C4.yesFunc(taskId);
+ break;
+ case 1:
+ case -1:
+ PlaySE(SE_SELECT);
+ gUnknown_020388C4.noFunc(taskId);
+ }
+}
+
+void DoYesNoFuncWithChoice(u8 taskId, const struct YesNoFuncTable *funcTable)
+{
+ gUnknown_020388C4 = *funcTable;
+ gTasks[taskId].func = Task_CallYesOrNoCallback;
+}
+
+static void PrintStringWithPalette(const u8 *str, u8 paletteNum, u8 left, u8 top)
+{
+ u8 paletteStr[] = _("{PALETTE 0}");
+
+ if (paletteNum != 0xFF)
+ {
+ paletteStr[2] = paletteNum;
+ StringCopy(gStringVar4, paletteStr);
+ StringAppend(gStringVar4, str);
+ paletteStr[2] = gMenuWindowPtr->paletteNum;
+ StringAppend(gStringVar4, paletteStr);
+ }
+ else
+ {
+ StringCopy(gStringVar4, str);
+ }
+
+ MenuPrint(gStringVar4, left, top);
+}
+
+// unused
+void PrintNumberWithPalette(s32 value, u8 paletteNum, u8 n, u8 mode, u8 left, u8 top)
+{
+ ConvertIntToDecimalStringN(gStringVar1, value, mode, n);
+ if (paletteNum != 0xFF)
+ {
+ PrintStringWithPalette(gStringVar1, paletteNum, left, top);
+ }
+ else
+ {
+ MenuPrint(gStringVar1, left, top);
+ }
+}
+
+// unused
+void PrintTriangleCursorWithPalette(u8 left, u8 top, u8 paletteNum)
+{
+ u8 cursorStr[] = _("▶");
+ PrintStringWithPalette(cursorStr, paletteNum, left, top);
+}
+
+u8 sub_80F9284(void)
+{
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
+ {
+ if (gMain.newKeys & L_BUTTON)
+ {
+ return 1;
+ }
+ if (gMain.newKeys & R_BUTTON)
+ {
+ return 2;
+ }
+ }
+
+ return 0;
+}
+
+u8 sub_80F92BC(void)
+{
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
+ {
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ return 1;
+ }
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ return 2;
+ }
+ }
+
+ return 0;
+}
+
+bool8 sub_80F92F4(u16 itemId)
+{
+ if (itemId != ITEM_ENIGMA_BERRY)
+ {
+ return TRUE;
+ }
+
+ if (!(gSaveBlock1.location.mapGroup == MAP_GROUP_TRADE_CENTER && gSaveBlock1.location.mapNum == MAP_ID_TRADE_CENTER))
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 sub_80F931C(u16 itemId)
+{
+ if (is_c1_link_related_active() != TRUE)
+ {
+ return TRUE;
+ }
+
+ if (ItemIsMail(itemId) != TRUE)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 sub_80F9344(void)
+{
+ if (is_c1_link_related_active() == TRUE || gReceivedRemoteLinkPlayers == 1)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_80F9368(void)
+{
+ u8 *addr;
+ u32 size;
+
+ REG_DISPCNT = 0;
+ REG_BG3CNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG0CNT = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+
+ addr = (u8 *)VRAM;
+ size = 0x18000;
+ while (1)
+ {
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill16(3, 0, addr, size);
+ break;
+ }
+ }
+
+ DmaClear32(3, OAM, OAM_SIZE);
+ DmaClear16(3, PLTT, PLTT_SIZE);
+}
+
+void sub_80F9438(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+}
+
+void sub_80F944C(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_020388C0[i] = 0xFF;
+ }
+
+ FreeSpritePaletteByTag(SCROLL_INDICATOR_PAL_TAG);
+ LoadSpritePalette(&gUnknown_083E5968);
+}
+
+void sub_80F9480(u8 *data, u8 n)
+{
+ u8 i;
+
+ for (i = 0; i < n; i++)
+ {
+ data[i] = 0xFF;
+ }
+}
+
+void sub_80F94A4(u8 animNum, u8 *spriteId, s16 x, s16 y)
+{
+ if (animNum <= 5)
+ {
+ if (*spriteId == 0xFF)
+ {
+ *spriteId = CreateSprite(&gSpriteTemplate_83E5A00, x, y, 0);
+ }
+ animNum -= 4;
+ StartSpriteAnim(&gSprites[*spriteId], animNum);
+ }
+}
+
+void sub_80F94F8(u8 *spriteId)
+{
+ if (*spriteId != 0xFF)
+ {
+ DestroySprite(&gSprites[*spriteId]);
+ *spriteId = 0xFF;
+ }
+}
+
+void sub_80F9520(u8 *data, u8 n)
+{
+ u8 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ sub_80F94F8(&data[i]);
+ }
+}
+
+void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y)
+{
+ if (id >= 4)
+ {
+ return;
+ }
+
+ switch (id)
+ {
+ case 0:
+ if (gUnknown_020388C0[0] == 0xFF)
+ {
+ gUnknown_020388C0[0] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0);
+ gSprites[gUnknown_020388C0[0]].data2 = -1;
+ if (gUnknown_020388C0[1] != 0xFF)
+ {
+ gSprites[gUnknown_020388C0[0]].pos2.y = gSprites[gUnknown_020388C0[1]].pos2.y * -1;
+ gSprites[gUnknown_020388C0[0]].data3 = gSprites[gUnknown_020388C0[1]].data3;
+ }
+ else
+ {
+ gSprites[gUnknown_020388C0[0]].data3 = 0;
+ }
+ }
+ break;
+
+ case 1:
+ if (gUnknown_020388C0[1] == 0xFF)
+ {
+ gUnknown_020388C0[1] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0);
+ gSprites[gUnknown_020388C0[1]].data2 = 1;
+ if (gUnknown_020388C0[0] != 0xFF)
+ {
+ gSprites[gUnknown_020388C0[1]].pos2.y = gSprites[gUnknown_020388C0[0]].pos2.y * -1;
+ gSprites[gUnknown_020388C0[1]].data3 = gSprites[gUnknown_020388C0[0]].data3;
+ }
+ else
+ {
+ gSprites[gUnknown_020388C0[1]].data3 = 0;
+ }
+ }
+ break;
+
+ case 2:
+ if (gUnknown_020388C0[2] == 0xFF)
+ {
+ gUnknown_020388C0[2] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0);
+ gSprites[gUnknown_020388C0[2]].data0 = -1;
+ if (gUnknown_020388C0[3] != 0xFF)
+ {
+ gSprites[gUnknown_020388C0[2]].pos2.x = gSprites[gUnknown_020388C0[3]].pos2.x * -1;
+ gSprites[gUnknown_020388C0[2]].data1 = gSprites[gUnknown_020388C0[3]].data1;
+ }
+ else
+ {
+ gSprites[gUnknown_020388C0[2]].data1 = 0;
+ }
+ }
+ break;
+
+ case 3:
+ if (gUnknown_020388C0[3] == 0xFF)
+ {
+ gUnknown_020388C0[3] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0);
+ gSprites[gUnknown_020388C0[3]].data0 = 1;
+ if (gUnknown_020388C0[2] != 0xFF)
+ {
+ gSprites[gUnknown_020388C0[3]].pos2.x = gSprites[gUnknown_020388C0[2]].pos2.x * -1;
+ gSprites[gUnknown_020388C0[3]].data1 = gSprites[gUnknown_020388C0[2]].data1;
+ }
+ else
+ {
+ gSprites[gUnknown_020388C0[3]].data1 = 0;
+ }
+ }
+ break;
+ }
+
+ StartSpriteAnim(&gSprites[gUnknown_020388C0[id]], id & 1);
+}
+
+void sub_80F979C(u8 id, bool8 invisible)
+{
+ if (id < 4 && gUnknown_020388C0[id] != 0xFF)
+ {
+ gSprites[gUnknown_020388C0[id]].invisible = invisible;
+ }
+}
+
+void DestroyVerticalScrollIndicator(u8 id)
+{
+ if (id < 4 && gUnknown_020388C0[id] != 0xFF)
+ {
+ DestroySprite(&gSprites[gUnknown_020388C0[id]]);
+ gUnknown_020388C0[id] = 0xFF;
+ }
+}
+
+void LoadScrollIndicatorPalette(void)
+{
+ LoadSpritePalette(&gUnknown_083E5968);
+}
+
+void BuyMenuFreeMemory(void)
+{
+ FreeSpritePaletteByTag(SCROLL_INDICATOR_PAL_TAG);
+}
+
+static void sub_80F9834(struct Sprite *sprite)
+{
+ if (sprite->data1 == 0)
+ {
+ sprite->pos2.x += sprite->data0;
+ }
+ if (sprite->data3 == 0)
+ {
+ sprite->pos2.y += sprite->data2;
+ }
+ sprite->data1++;
+ sprite->data3++;
+ if (sprite->data1 > 2)
+ {
+ sprite->data1 = 0;
+ }
+ if (sprite->data3 > 2)
+ {
+ sprite->data3 = 0;
+ }
+ if (sprite->pos2.x == 8 || sprite->pos2.x == -8)
+ {
+ sprite->pos2.x = 0;
+ }
+ if (sprite->pos2.y == 8 || sprite->pos2.y == -8)
+ {
+ sprite->pos2.y = 0;
+ }
+}
+
+void sub_80F98A4(u8 id)
+{
+ if (gUnknown_020388C0[id] != 0xFF && id < 4)
+ {
+ gSprites[gUnknown_020388C0[id]].callback = SpriteCallbackDummy;
+ }
+}
+
+void StartVerticalScrollIndicators(u8 id)
+{
+ if (gUnknown_020388C0[id] != 0xFF && id < 4)
+ {
+ gSprites[gUnknown_020388C0[id]].callback = sub_80F9834;
+ }
+}
+
+static void sub_80F9914(u8 id)
+{
+ if (gUnknown_020388C0[id] != 0xFF && id < 4)
+ {
+ gSprites[gUnknown_020388C0[id]].pos2.x = 0;
+ gSprites[gUnknown_020388C0[id]].pos2.y = 0;
+ gSprites[gUnknown_020388C0[id]].data1 = 0;
+ gSprites[gUnknown_020388C0[id]].data3 = 0;
+ }
+}
+
+void PauseVerticalScrollIndicator(u8 id)
+{
+ sub_80F98A4(id);
+ sub_80F9914(id);
+}
+
+void sub_80F9988(u8 id, u8 priority)
+{
+ if (gUnknown_020388C0[id] != 0xFF && id < 4)
+ {
+ gSprites[gUnknown_020388C0[id]].oam.priority = priority;
+ }
+}
diff --git a/src/mon_markings.c b/src/mon_markings.c
new file mode 100644
index 000000000..0cad8db59
--- /dev/null
+++ b/src/mon_markings.c
@@ -0,0 +1,383 @@
+#include "global.h"
+#include "main.h"
+#include "menu_cursor.h"
+#include "text_window.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+
+#ifdef GERMAN
+#define MENU_TEXT_SPRITE_X_OFFSET 24
+#else
+#define MENU_TEXT_SPRITE_X_OFFSET 32
+#endif
+
+struct PokemonMarkMenu
+{
+ /*0x0000*/ u16 baseTileTag;
+ /*0x0002*/ u16 basePaletteTag;
+ /*0x0004*/ u8 markings; // bit flags
+ /*0x0005*/ s8 cursorPos;
+ /*0x0006*/ bool8 markingsArray[4];
+ /*0x000A*/ u8 cursorBaseY;
+ /*0x000B*/ bool8 spriteSheetLoadRequired;
+ /*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window
+ /*0x0014*/ struct Sprite *menuMarkingSprites[4];
+ /*0x0024*/ struct Sprite *menuTextSprite;
+ /*0x0028*/ u8 *frameTiles;
+ /*0x002C*/ u16 *framePalette;
+ /*0x0030*/ u8 menuWindowSpriteTiles[0x1000];
+ /*0x1030*/ u8 filler1030[0x80];
+ /*0x10B0*/ u8 tileLoadState;
+};
+
+extern u8 gPokenavConditionMenuMisc_Gfx[];
+extern u16 gUnknown_08E966B8[];
+
+extern u16 gUnknown_083E49F4[];
+extern u8 gUnknown_083E4A14[];
+extern struct OamData gOamData_83E5214;
+extern struct OamData gOamData_83E521C;
+extern const union AnimCmd *const gSpriteAnimTable_83E5274[];
+extern const union AnimCmd *const gSpriteAnimTable_83E52AC[];
+extern struct OamData gOamData_83E52B4;
+extern const union AnimCmd *const gSpriteAnimTable_83E533C[];
+
+static EWRAM_DATA struct PokemonMarkMenu *sMenu = NULL;
+
+void sub_80F761C(s16, s16, u16, u16);
+void nullsub_65(struct Sprite *);
+void sub_80F78CC(struct Sprite *);
+void sub_80F7908(struct Sprite *);
+struct Sprite *sub_80F7960(u16, u16, u16 *, u16);
+
+void sub_80F727C(struct PokemonMarkMenu *ptr)
+{
+ sMenu = ptr;
+ sMenu->spriteSheetLoadRequired = FALSE;
+}
+
+void sub_80F728C(void)
+{
+ const struct FrameGraphics *frame = GetTextWindowFrameGraphics(gSaveBlock2.optionsWindowFrameType);
+ sMenu->frameTiles = frame->tiles;
+ sMenu->framePalette = frame->palette;
+ sMenu->tileLoadState = 0;
+ CpuFill16(0, sMenu->menuWindowSpriteTiles, sizeof(sMenu->menuWindowSpriteTiles));
+}
+
+bool8 sub_80F72D4(void)
+{
+ u16 i;
+ u8 *dest = sMenu->menuWindowSpriteTiles + sMenu->tileLoadState * 0x100;
+
+ switch (sMenu->tileLoadState)
+ {
+ case 0:
+ CpuFastCopy(sMenu->frameTiles, dest, TILE_SIZE_4BPP);
+ for (i = 0; i < 6; i++)
+ {
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP);
+ }
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 2, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP);
+ sMenu->tileLoadState++;
+ break;
+ default:
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 3, dest, TILE_SIZE_4BPP);
+ for (i = 0; i < 6; i++)
+ {
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 4, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP);
+ }
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 5, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP);
+ sMenu->tileLoadState++;
+ break;
+ case 13:
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 6, dest, TILE_SIZE_4BPP);
+ for (i = 0; i < 6; i++)
+ {
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 7, dest + TILE_SIZE_4BPP * (i + 1), TILE_SIZE_4BPP);
+ }
+ CpuFastCopy(sMenu->frameTiles + TILE_SIZE_4BPP * 8, dest + TILE_SIZE_4BPP * 7, TILE_SIZE_4BPP);
+ sMenu->tileLoadState++;
+ return FALSE;
+ case 14:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_80F7404(void)
+{
+ sub_80F728C();
+ while (sub_80F72D4())
+ ;
+}
+
+void sub_80F7418(u8 markings, s16 x, s16 y)
+{
+ u16 i;
+ sMenu->cursorPos = 0;
+ sMenu->markings = markings;
+ for (i = 0; i < 4; i++)
+ sMenu->markingsArray[i] = (sMenu->markings >> i) & 1;
+ DestroyMenuCursor();
+ sub_80F761C(x, y, sMenu->baseTileTag, sMenu->basePaletteTag);
+}
+
+void sub_80F7470(void)
+{
+ u16 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ FreeSpriteTilesByTag(sMenu->baseTileTag + i);
+ }
+
+ FreeSpritePaletteByTag(sMenu->basePaletteTag);
+ FreeSpritePaletteByTag(sMenu->basePaletteTag + 1);
+
+ for (i = 0; i < 2; i++)
+ {
+ if (!sMenu->menuWindowSprites[i])
+ return;
+ DestroySprite(sMenu->menuWindowSprites[i]);
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ if (!sMenu->menuMarkingSprites[i])
+ return;
+ DestroySprite(sMenu->menuMarkingSprites[i]);
+ }
+
+ DestroyMenuCursor();
+
+ if (sMenu->menuTextSprite)
+ DestroySprite(sMenu->menuTextSprite);
+}
+
+bool8 sub_80F7500(void)
+{
+ u16 i;
+ struct SpriteSheet sheets[3] =
+ {
+ { sMenu->menuWindowSpriteTiles, 0x1000, sMenu->baseTileTag },
+ { gPokenavConditionMenuMisc_Gfx, 0x520, sMenu->baseTileTag + 1 },
+ { NULL, 0, 0 }
+ };
+
+ if (sMenu->spriteSheetLoadRequired)
+ {
+ LoadTilesForSpriteSheets(sheets);
+ sMenu->spriteSheetLoadRequired = FALSE;
+ }
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ s8 pos;
+ PlaySE(SE_SELECT);
+ pos = --sMenu->cursorPos;
+ if (pos < 0)
+ sMenu->cursorPos = 5;
+ return TRUE;
+ }
+
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ s8 pos;
+ PlaySE(SE_SELECT);
+ pos = ++sMenu->cursorPos;
+ if (pos > 5)
+ sMenu->cursorPos = 0;
+ return TRUE;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+
+ switch (sMenu->cursorPos)
+ {
+ case 4:
+ sMenu->markings = 0;
+ for (i = 0; i < 4; i++)
+ sMenu->markings |= sMenu->markingsArray[i] << i;
+ return FALSE;
+ case 5:
+ return FALSE;
+ }
+
+ sMenu->markingsArray[sMenu->cursorPos] = !sMenu->markingsArray[sMenu->cursorPos];
+ return TRUE;
+ }
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_80F761C(s16 x, s16 y, u16 baseTileTag, u16 basePaletteTag)
+{
+ u16 i;
+ u8 spriteId;
+
+ struct SpriteSheet sheets[] =
+ {
+ { sMenu->menuWindowSpriteTiles, 0x1000, baseTileTag },
+ { gPokenavConditionMenuMisc_Gfx, 0x520, baseTileTag + 1 },
+ { NULL, 0 }
+ };
+
+ struct SpritePalette palettes[] =
+ {
+ { sMenu->framePalette, basePaletteTag },
+ { gUnknown_08E966B8, basePaletteTag + 1},
+ { NULL, 0 }
+ };
+
+ struct SpriteTemplate sprTemplate =
+ {
+ baseTileTag,
+ basePaletteTag,
+ &gOamData_83E5214,
+ gSpriteAnimTable_83E52AC,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ nullsub_65,
+ };
+
+ sMenu->spriteSheetLoadRequired = TRUE;
+ AllocTilesForSpriteSheets(sheets);
+ LoadSpritePalettes(palettes);
+
+ for (i = 0; i < 2; i++)
+ {
+ spriteId = CreateSprite(&sprTemplate, x + 32, y + 32, 2);
+ if (spriteId != 64)
+ {
+ sMenu->menuWindowSprites[i] = &gSprites[spriteId];
+ StartSpriteAnim(&gSprites[spriteId], i);
+ }
+ else
+ {
+ sMenu->menuWindowSprites[i] = NULL;
+ return;
+ }
+ }
+
+ sMenu->menuWindowSprites[1]->pos1.y = y + 96;
+
+ sprTemplate.tileTag++;
+ sprTemplate.paletteTag++;
+ sprTemplate.anims = gSpriteAnimTable_83E5274;
+ sprTemplate.callback = sub_80F78CC;
+ sprTemplate.oam = &gOamData_83E521C;
+
+ for (i = 0; i < 4; i++)
+ {
+ spriteId = CreateSprite(&sprTemplate, x + 32, y + 16 + 16 * i, 1);
+ if (spriteId != 64)
+ {
+ sMenu->menuMarkingSprites[i] = &gSprites[spriteId];
+ gSprites[spriteId].data0 = i;
+ }
+ else
+ {
+ sMenu->menuMarkingSprites[i] = NULL;
+ return;
+ }
+ }
+
+ sprTemplate.callback = SpriteCallbackDummy;
+
+ spriteId = CreateSprite(&sprTemplate, 0, 0, 1);
+
+ if (spriteId != 64)
+ {
+ sMenu->menuTextSprite = &gSprites[spriteId];
+ sMenu->menuTextSprite->oam.shape = ST_OAM_H_RECTANGLE;
+ sMenu->menuTextSprite->oam.size = 3;
+ StartSpriteAnim(sMenu->menuTextSprite, 9);
+ sMenu->menuTextSprite->pos1.x = x + MENU_TEXT_SPRITE_X_OFFSET;
+ sMenu->menuTextSprite->pos1.y = y + 80;
+ CalcCenterToCornerVec(sMenu->menuTextSprite, 1, 2, 0);
+ }
+ else
+ {
+ sMenu->menuTextSprite = NULL;
+ }
+
+ sMenu->cursorBaseY = y + 8;
+ sub_814A5C0(0, basePaletteTag + 1, 15, 0, 0x30);
+ sub_814A880(x + 8, sMenu->cursorBaseY);
+ sub_814AABC(sub_80F7908);
+}
+
+void nullsub_65(struct Sprite *sprite)
+{
+}
+
+void sub_80F78CC(struct Sprite *sprite)
+{
+ if (sMenu->markingsArray[sprite->data0])
+ StartSpriteAnim(sprite, 2 * sprite->data0 + 1);
+ else
+ StartSpriteAnim(sprite, 2 * sprite->data0);
+}
+
+void sub_80F7908(struct Sprite *sprite)
+{
+ sprite->pos1.y = 16 * sMenu->cursorPos + sMenu->cursorBaseY;
+}
+
+struct Sprite *sub_80F7920(u16 tileTag, u16 paletteTag, u16 *palette)
+{
+ if (!palette)
+ palette = gUnknown_083E49F4;
+ return sub_80F7960(tileTag, paletteTag, palette, 16);
+}
+
+struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, u16 *palette)
+{
+ if (!palette)
+ palette = gUnknown_083E49F4;
+ return sub_80F7960(tileTag, paletteTag, palette, 1);
+}
+
+struct Sprite *sub_80F7960(u16 tileTag, u16 paletteTag, u16 *palette, u16 size)
+{
+ u8 spriteId;
+ struct SpriteTemplate sprTemplate;
+ struct SpriteSheet sheet = { gUnknown_083E4A14, 0x80, tileTag };
+ struct SpritePalette sprPalette = { palette, paletteTag };
+
+ sprTemplate.tileTag = tileTag;
+ sprTemplate.paletteTag = paletteTag;
+ sprTemplate.oam = &gOamData_83E52B4;
+ sprTemplate.anims = gSpriteAnimTable_83E533C;
+ sprTemplate.images = NULL;
+ sprTemplate.affineAnims = gDummySpriteAffineAnimTable;
+ sprTemplate.callback = nullsub_65;
+
+ sheet.size = size * 0x80;
+
+ LoadSpriteSheet(&sheet);
+ LoadSpritePalette(&sprPalette);
+
+ spriteId = CreateSprite(&sprTemplate, 0, 0, 0);
+ if (spriteId != 64)
+ return &gSprites[spriteId];
+ else
+ return NULL;
+}
+
+void sub_80F7A10(u8 markings, void *dest)
+{
+ void *src = gUnknown_083E4A14 + markings * 0x80;
+ DmaCopy16(3, src, dest, 0x80);
+}
diff --git a/src/money.c b/src/money.c
index ab4508a39..5d9d0b689 100644
--- a/src/money.c
+++ b/src/money.c
@@ -8,7 +8,8 @@
#define SPRITE_TAG_MONEY (0x2722)
extern u16 gSpecialVar_0x8005;
-extern u8 gUnknown_02038734;
+
+static EWRAM_DATA u8 gUnknown_02038734 = 0;
extern const struct CompressedSpriteSheet gUnknown_083CF584;
extern const struct CompressedSpritePalette gUnknown_083CF58C;
diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c
index 2d9e3fa6f..273191192 100644
--- a/src/mori_debug_menu.c
+++ b/src/mori_debug_menu.c
@@ -12,9 +12,10 @@
#define SIO_MULTI_CNT ((struct SioMultiCnt *)REG_ADDR_SIOCNT)
-extern u8 gUnknown_03004DA0[];
extern u8 (*gCallback_03004AE8)(void);
+u8 gUnknown_03004DA0[0x20];
+
extern u8 gUnknown_0839B22C[][3];
extern u8 gUnknown_0839B24A[];
extern u8 gUnknown_0839B24D[];
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 4be5dec1c..46b76fd88 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -15,7 +15,8 @@
#include "text.h"
extern u8 unk_2000000[];
-extern u8 gUnknown_02039338;
+
+static EWRAM_DATA u8 gUnknown_02039338 = 0;
static void VBlankCB(void);
static bool8 CheckLanguageMatch(void);
@@ -286,7 +287,7 @@ static void CB2_MysteryEventMenu(void)
case 11:
if (gReceivedRemoteLinkPlayers)
break;
- unkVal = sub_812613C(unk_2000000);
+ unkVal = RunMysteryEventScript(unk_2000000);
CpuFill32(0, unk_2000000, 0x7D4);
if (!GetEventLoadMessage(gStringVar4, unkVal))
TrySavingData(NORMAL_SAVE);
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 45ef719da..f507942a7 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -1,103 +1,462 @@
#include "global.h"
+#include "berry.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "mail_data.h"
#include "mystery_event_script.h"
+#include "pokedex.h"
+#include "pokemon.h"
+#include "pokemon_size_record.h"
#include "script.h"
+#include "species.h"
+#include "strings.h"
#include "string_util.h"
#include "text.h"
+#include "util.h"
#if ENGLISH
-#define UNK_MASK_1 0x2
+#define LANGUAGE_MASK 0x2
#elif GERMAN
-#define UNK_MASK_1 0x4
+#define LANGUAGE_MASK 0x4
#endif
#ifdef SAPPHIRE
-#define UNK_MASK_2 0x100
+#define VERSION_MASK 0x100
#else
-#define UNK_MASK_2 0x80
+#define VERSION_MASK 0x80
#endif
-extern struct ScriptContext gUnknown_02039288;
+extern void party_compaction(void);
+extern void sub_813601C(void);
-extern ScrCmdFunc gScriptFuncs[];
-extern ScrCmdFunc gScriptFuncs_End[];
+extern ScrCmdFunc gMysteryEventScriptCmdTable[];
+extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
-extern u8 gOtherText_DataCannotUseVersion[];
+extern const u8 gOtherText_BerryObtainedDadHasIt[];
+extern const u8 gOtherText_BerryTransformed[];
+extern const u8 gOtherText_BerryAlreadyObtained[];
+extern const u8 gOtherText_SpecialRibbonReceived[];
+extern const u8 gOtherText_DexUpgraded[];
+extern const u8 gOtherText_RareWordAdded[];
+extern const u8 gOtherText_PokeWasSentOver[];
+extern const u8 gOtherText_PartyIsFull[];
+extern const u8 gOtherText_NewTrainerInHoenn[];
+extern const u8 gOtherText_DataCannotUseVersion[];
-bool32 sub_8126098(u16 a1, u32 a2, u16 a3, u32 a4)
+static EWRAM_DATA struct ScriptContext sMysteryEventScriptContext = {0};
+
+static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4)
{
- if (!(a1 & UNK_MASK_1))
+ if (!(a1 & LANGUAGE_MASK))
return FALSE;
- if (!(a2 & UNK_MASK_1))
+ if (!(a2 & LANGUAGE_MASK))
return FALSE;
if (!(a3 & 0x4))
return FALSE;
- if (!(a4 & UNK_MASK_2))
+ if (!(a4 & VERSION_MASK))
return FALSE;
return TRUE;
}
-void sub_81260D0(void)
+static void SetIncompatible(void)
{
StringExpandPlaceholders(gStringVar4, gOtherText_DataCannotUseVersion);
- sub_8126160(3);
+ SetMysteryEventScriptStatus(3);
}
-void sub_81260EC(struct ScriptContext *ctx, u8 *ptr)
+static void InitMysteryEventScript(struct ScriptContext *ctx, u8 *script)
{
- InitScriptContext(ctx, gScriptFuncs, gScriptFuncs_End);
- SetupBytecodeScript(ctx, ptr);
- ctx->data[0] = (u32)ptr;
+ InitScriptContext(ctx, gMysteryEventScriptCmdTable, gMysteryEventScriptCmdTableEnd);
+ SetupBytecodeScript(ctx, script);
+ ctx->data[0] = (u32)script;
ctx->data[1] = 0;
ctx->data[2] = 0;
ctx->data[3] = 0;
}
-bool32 sub_812611C(struct ScriptContext *ctx)
+static bool32 RunMysteryEventScriptCommand(struct ScriptContext *ctx)
{
- if (RunScript(ctx) && ctx->data[3])
+ if (RunScriptCommand(ctx) && ctx->data[3])
return TRUE;
else
return FALSE;
}
-u32 sub_812613C(u8 *ptr)
+u32 RunMysteryEventScript(u8 *script)
{
- struct ScriptContext *ctx = &gUnknown_02039288;
- sub_81260EC(ctx, ptr);
- while (sub_812611C(ctx))
+ struct ScriptContext *ctx = &sMysteryEventScriptContext;
+ InitMysteryEventScript(ctx, script);
+ while (RunMysteryEventScriptCommand(ctx))
;
return ctx->data[2];
}
-void sub_8126160(u32 val)
+void SetMysteryEventScriptStatus(u32 val)
{
- gUnknown_02039288.data[2] = val;
+ sMysteryEventScriptContext.data[2] = val;
}
-int sub_812616C(u8 *a1, int a2)
+static int CalcChecksum(u8 *data, int size)
{
unsigned int i;
int sum = 0;
- for (i = 0; i < a2; i++)
- sum += a1[i];
+ for (i = 0; i < size; i++)
+ sum += data[i];
return sum;
}
-u32 sub_812618C(u8 *ptr)
+static u32 GetWord(u8 *ptr)
{
return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24);
}
-void sub_81261A4(u8 *ptr, u32 val)
+static void SetWord(u8 *ptr, u32 val)
{
ptr[0] = val;
ptr[1] = val >> 8;
ptr[2] = val >> 16;
ptr[3] = val >> 24;
}
+
+bool8 unref_sub_81261B4(u8 *a1, int a2)
+{
+ if (a1[0x0] == 1 && a1[0x11] == 15 && !GetWord(a1 + 0x12))
+ {
+ int v4 = GetWord(a1 + 0x16) - a2 + (int)a1;
+ int v5 = GetWord(a1 + 0x1A);
+ int v6 = CalcChecksum((u8*)v4, v5 - a2 + (int)a1 - v4);
+ SetWord(a1 + 0x12, v6);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 unref_sub_812620C(u8 *a1, int a2)
+{
+ if (a1[0x0] == 1 && a1[0x11] == 16 && !GetWord(a1 + 0x12))
+ {
+ int v4 = GetWord(a1 + 0x16) - a2 + (int)a1;
+ int v5 = GetWord(a1 + 0x1A);
+ int v6 = CalcCRC16((u8*)v4, v5 - a2 + (int)a1 - v4);
+ SetWord(a1 + 0x12, v6);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u32 CalcRecordMixingGiftChecksum(void)
+{
+ u32 sum = 0;
+ int i;
+ char *data = (char *)&gSaveBlock1.recordMixingGift.data;
+
+ for (i = 0; i < sizeof(gSaveBlock1.recordMixingGift.data); i++)
+ {
+ sum += data[i];
+ }
+
+ return sum;
+}
+
+static bool32 IsRecordMixingGiftValid(void)
+{
+ struct RecordMixingGiftData *data = &gSaveBlock1.recordMixingGift.data;
+
+ u32 checksum = CalcRecordMixingGiftChecksum();
+
+ if (!data->unk0)
+ return FALSE;
+
+ if (!data->quantity)
+ return FALSE;
+
+ if (!data->itemId)
+ return FALSE;
+
+ if (checksum == 0)
+ return FALSE;
+
+ if (checksum == gSaveBlock1.recordMixingGift.checksum)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void ClearRecordMixingGift(void)
+{
+ CpuFill16(0, &gSaveBlock1.recordMixingGift, sizeof(gSaveBlock1.recordMixingGift));
+}
+
+static void SetRecordMixingGift(u8 unk, u8 quantity, u16 itemId)
+{
+ if (!unk || !quantity || !itemId)
+ {
+ ClearRecordMixingGift();
+ }
+ else
+ {
+ gSaveBlock1.recordMixingGift.data.unk0 = unk;
+ gSaveBlock1.recordMixingGift.data.quantity = quantity;
+ gSaveBlock1.recordMixingGift.data.itemId = itemId;
+ gSaveBlock1.recordMixingGift.checksum = CalcRecordMixingGiftChecksum();
+ }
+}
+
+u16 GetRecordMixingGift(void)
+{
+ struct RecordMixingGiftData *data = &gSaveBlock1.recordMixingGift.data;
+
+ if (!IsRecordMixingGiftValid())
+ {
+ ClearRecordMixingGift();
+ return 0;
+ }
+ else
+ {
+ u16 itemId = data->itemId;
+ data->quantity--;
+ if (data->quantity == 0)
+ ClearRecordMixingGift();
+ else
+ gSaveBlock1.recordMixingGift.checksum = CalcRecordMixingGiftChecksum();
+ return itemId;
+ }
+}
+
+bool8 MEScrCmd_end(struct ScriptContext *ctx)
+{
+ StopScript(ctx);
+ return TRUE;
+}
+
+bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx)
+{
+ u16 v1;
+ u32 v2;
+ u16 v3;
+ u32 v4;
+
+ ctx->data[1] = ScriptReadWord(ctx);
+ v1 = ScriptReadHalfword(ctx);
+ v2 = ScriptReadWord(ctx);
+ v3 = ScriptReadHalfword(ctx);
+ v4 = ScriptReadWord(ctx);
+
+ if (CheckCompatibility(v1, v2, v3, v4) == TRUE)
+ ctx->data[3] = 1;
+ else
+ SetIncompatible();
+
+ return TRUE;
+}
+
+bool8 MEScrCmd_nop(struct ScriptContext *ctx)
+{
+ return FALSE;
+}
+
+bool8 MEScrCmd_setstatus(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+ ctx->data[2] = value;
+ return FALSE;
+}
+
+bool8 MEScrCmd_setmsg(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+ u8 *str = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ if (value == 255 || value == ctx->data[2])
+ StringExpandPlaceholders(gStringVar4, str);
+ return FALSE;
+}
+
+bool8 MEScrCmd_runscript(struct ScriptContext *ctx)
+{
+ u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ ScriptContext2_RunNewScript(script);
+ return FALSE;
+}
+
+bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx)
+{
+ u8 *str;
+ const u8 *message;
+ bool32 haveBerry = IsEnigmaBerryValid();
+ u8 *berry = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ StringCopyN(gStringVar1, gSaveBlock1.enigmaBerry.berry.name, 7);
+ SetEnigmaBerry(berry);
+ StringCopyN(gStringVar2, gSaveBlock1.enigmaBerry.berry.name, 7);
+
+ if (!haveBerry)
+ {
+ str = gStringVar4;
+ message = gOtherText_BerryObtainedDadHasIt;
+ }
+ else if (StringCompare(gStringVar1, gStringVar2))
+ {
+ str = gStringVar4;
+ message = gOtherText_BerryTransformed;
+ }
+ else
+ {
+ str = gStringVar4;
+ message = gOtherText_BerryAlreadyObtained;
+ }
+
+ StringExpandPlaceholders(str, message);
+
+ ctx->data[2] = 2;
+
+ if (IsEnigmaBerryValid() == TRUE)
+ VarSet(0x402D, 1);
+ else
+ ctx->data[2] = 1;
+
+ return FALSE;
+}
+
+bool8 MEScrCmd_giveribbon(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+ u8 ribbonId = ScriptReadByte(ctx);
+ GiveGiftRibbonToParty(index, ribbonId);
+ StringExpandPlaceholders(gStringVar4, gOtherText_SpecialRibbonReceived);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_initramscript(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 objectId = ScriptReadByte(ctx);
+ u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ u8 *scriptEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ InitRamScript(script, scriptEnd - script, mapGroup, mapNum, objectId);
+ return FALSE;
+}
+
+bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx)
+{
+ EnableNationalPokedex();
+ StringExpandPlaceholders(gStringVar4, gOtherText_DexUpgraded);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_addrareword(struct ScriptContext *ctx)
+{
+ sub_80EB890(ScriptReadByte(ctx));
+ StringExpandPlaceholders(gStringVar4, gOtherText_RareWordAdded);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx)
+{
+ u8 unk = ScriptReadByte(ctx);
+ u8 quantity = ScriptReadByte(ctx);
+ u16 itemId = ScriptReadHalfword(ctx);
+ SetRecordMixingGift(unk, quantity, itemId);
+ return FALSE;
+}
+
+bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
+{
+ struct MailStruct mail;
+ struct Pokemon pokemon;
+ u16 species;
+ u16 heldItem;
+ u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0];
+ void *pokemonPtr = (void *)data;
+ void *mailPtr = (void *)(data + sizeof(struct Pokemon));
+
+ pokemon = *(struct Pokemon *)pokemonPtr;
+ species = GetMonData(&pokemon, MON_DATA_SPECIES2);
+
+ if (species == SPECIES_EGG)
+ StringCopyN(gStringVar1, gSystemText_Egg, 11);
+ else
+ StringCopyN(gStringVar1, gSystemText_Pokemon2, 11);
+
+ if (gPlayerPartyCount == 6)
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_PartyIsFull);
+ ctx->data[2] = 3;
+ }
+ else
+ {
+ memcpy(&gPlayerParty[5], pokemonPtr, sizeof(struct Pokemon));
+ memcpy(&mail, mailPtr, sizeof(struct MailStruct));
+
+ if (species != SPECIES_EGG)
+ {
+ u16 pokedexNum = SpeciesToNationalPokedexNum(species);
+ GetNationalPokedexFlag(pokedexNum, 2);
+ GetNationalPokedexFlag(pokedexNum, 3);
+ }
+
+ heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM);
+ if (ItemIsMail(heldItem))
+ GiveMailToMon2(&gPlayerParty[5], &mail);
+ party_compaction();
+ CalculatePlayerPartyCount();
+ StringExpandPlaceholders(gStringVar4, gOtherText_PokeWasSentOver);
+ ctx->data[2] = 2;
+ }
+
+ return FALSE;
+}
+
+bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx)
+{
+ u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0];
+ memcpy(gSaveBlock2.filler_A8.ereaderTrainer, (void *)data, sizeof(gSaveBlock2.filler_A8.ereaderTrainer));
+ sub_813601C();
+ StringExpandPlaceholders(gStringVar4, gOtherText_NewTrainerInHoenn);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_enableresetrtc(struct ScriptContext *ctx)
+{
+ EnableResetRTC();
+ StringExpandPlaceholders(gStringVar4, gSystemText_ClockAdjustmentUsable);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_checksum(struct ScriptContext *ctx)
+{
+ int checksum = ScriptReadWord(ctx);
+ u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ if (checksum != CalcChecksum(data, dataEnd - data))
+ {
+ ctx->data[3] = 0;
+ ctx->data[2] = 1;
+ }
+ return TRUE;
+}
+
+bool8 MEScrCmd_crc(struct ScriptContext *ctx)
+{
+ int crc = ScriptReadWord(ctx);
+ u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ if (crc != CalcCRC16(data, dataEnd - data))
+ {
+ ctx->data[3] = 0;
+ ctx->data[2] = 1;
+ }
+ return TRUE;
+}
diff --git a/src/new_game.c b/src/new_game.c
index 4b6ea1dd2..226ac9bb7 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -26,7 +26,8 @@
#include "secret_base.h"
#include "tv.h"
-extern u8 gDifferentSaveFile;
+EWRAM_DATA u8 gDifferentSaveFile = 0;
+EWRAM_DATA u8 gUnknown_020297ED = 0;
extern u8 gPlayerPartyCount;
extern u8 gUnknown_03005CE8;
diff --git a/src/option_menu.c b/src/option_menu.c
index 2463b11c6..7f8d76528 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -32,8 +32,9 @@ enum {
MENUITEM_CANCEL,
};
-extern u8 gUnknown_0839F63C[];
-extern u8 gUnknown_0839F5FC[]; //palette
+const u16 gUnknown_0839F5FC[] = INCBIN_U16("graphics/misc/option_menu_text.gbapal");
+// note: this is only used in the Japanese release
+const u8 gUnknown_0839F63C[] = INCBIN_U8("graphics/misc/option_menu_equals_sign.4bpp");
static void Task_OptionMenuFadeIn(u8 taskId);
static void Task_OptionMenuProcessInput(u8 taskId);
diff --git a/src/player_pc.c b/src/player_pc.c
index b432f260e..6d52c560a 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -32,8 +32,9 @@ extern u8 sub_807D770(void);
extern void sub_808B020(void);
extern void sub_80F944C(void);
-extern u8 *gPcItemMenuOptionOrder;
-extern u8 gPcItemMenuOptionsNum;
+static EWRAM_DATA u8 *gPcItemMenuOptionOrder = NULL;
+
+static u8 gPcItemMenuOptionsNum;
extern u8 gUnknown_02038561;
@@ -932,36 +933,36 @@ weirdCase:
static void ItemStorage_PrintItemPcResponse(u16 itemId)
{
- u8 *string;
+ const u8 *string;
switch(itemId)
{
case ITEMPC_GO_BACK_TO_PREV:
- string = (u8 *)gMenuText_GoBackToPrev;
+ string = gMenuText_GoBackToPrev;
break;
case ITEMPC_HOW_MANY_TO_WITHDRAW:
- string = (u8 *)gOtherText_HowManyToWithdraw;
+ string = gOtherText_HowManyToWithdraw;
break;
case ITEMPC_WITHDREW_THING:
- string = (u8 *)gOtherText_WithdrewThing;
+ string = gOtherText_WithdrewThing;
break;
case ITEMPC_HOW_MANY_TO_TOSS:
- string = (u8 *)gOtherText_HowManyToToss;
+ string = gOtherText_HowManyToToss;
break;
case ITEMPC_THREW_AWAY_ITEM:
- string = (u8 *)gOtherText_ThrewAwayItem;
+ string = gOtherText_ThrewAwayItem;
break;
case ITEMPC_NO_MORE_ROOM:
- string = (u8 *)gOtherText_NoMoreRoom;
+ string = gOtherText_NoMoreRoom;
break;
case ITEMPC_TOO_IMPORTANT:
- string = (u8 *)gOtherText_TooImportant;
+ string = gOtherText_TooImportant;
break;
case ITEMPC_OKAY_TO_THROW_AWAY:
- string = (u8 *)gOtherText_OkayToThrowAwayPrompt;
+ string = gOtherText_OkayToThrowAwayPrompt;
break;
case ITEMPC_SWITCH_WHICH_ITEM:
- string = (u8 *)gOtherText_SwitchWhichItem;
+ string = gOtherText_SwitchWhichItem;
break;
default:
string = ItemId_GetDescription(itemId);
diff --git a/src/pokeblock.c b/src/pokeblock.c
index b7fa5daa8..775280f6e 100755..100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -26,8 +26,24 @@
#include "songs.h"
#include "safari_zone.h"
#include "use_pokeblock.h"
+#include "event_data.h"
#include "pokeblock.h"
+struct UnkPokeblockStruct
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+};
+
+extern u8 ewram[];
+
+
+static EWRAM_DATA u8 gUnknown_02039244 = 0;
+static EWRAM_DATA struct UnkPokeblockStruct gUnknown_02039248 = {0};
+static EWRAM_DATA u8 gUnknown_0203924C = 0;
+
// function declarations
// gUnknown_083F7EF4
@@ -76,6 +92,8 @@ static void sub_810C5EC(u8);
// sub_810C610
static void sub_810C704(u8);
+static const u8 *gUnknown_03000758;
+
// rodata
#define GFX_TAG_POKEBLOCK_CASE 14800
@@ -313,7 +331,7 @@ static bool8 sub_810B6C0(void)
case 15:
sub_810BB0C();
sub_810BB30();
- sub_810BC84(gUnknown_02039248[1]);
+ sub_810BC84(gUnknown_02039248.unk1);
gMain.state++;
break;
case 16:
@@ -453,7 +471,7 @@ static void sub_810BB88(u8 a0)
for (i=a0; i<=a0+8; i++)
{
y = (i - a0) << 1;
- if (i == gUnknown_02039248[2])
+ if (i == gUnknown_02039248.unk2)
{
buf = sub_8072C74(gStringVar1, gContestStatsText_StowCase, 0x78, 0);
MenuPrint(gStringVar1, 15, y + 1);
@@ -500,23 +518,23 @@ static void sub_810BC98(void)
static void sub_810BD08(void)
{
u8 i;
- gUnknown_02039248[2] = 0;
+ gUnknown_02039248.unk2 = 0;
for (i=0; i<40; i++)
{
if (gSaveBlock1.pokeblocks[i].color != 0)
- gUnknown_02039248[2]++;
+ gUnknown_02039248.unk2++;
}
- if (gUnknown_02039248[2] < 8)
+ if (gUnknown_02039248.unk2 < 8)
{
- gUnknown_02039248[3] = gUnknown_02039248[2];
+ gUnknown_02039248.unk3 = gUnknown_02039248.unk2;
}
else
{
- gUnknown_02039248[3] = 8;
+ gUnknown_02039248.unk3 = 8;
}
- if (gUnknown_02039248[1] + 8 > gUnknown_02039248[2] && gUnknown_02039248[1] != 0)
+ if (gUnknown_02039248.unk1 + 8 > gUnknown_02039248.unk2 && gUnknown_02039248.unk1 != 0)
{
- gUnknown_02039248[1]--;
+ gUnknown_02039248.unk1--;
}
}
@@ -526,8 +544,8 @@ static void sub_810BD64(u16 a0, u16 a1)
int y;
for (i=0; i<14; i++)
{
- gBGTilemapBuffers[2][(2 * gUnknown_02039248[0] + 1) * 32 + (y = i + 15)] = a0;
- gBGTilemapBuffers[2][(2 * gUnknown_02039248[0] + 2) * 32 + y] = a0;
+ gBGTilemapBuffers[2][(2 * gUnknown_02039248.unk0 + 1) * 32 + (y = i + 15)] = a0;
+ gBGTilemapBuffers[2][(2 * gUnknown_02039248.unk0 + 2) * 32 + y] = a0;
}
}
@@ -543,7 +561,7 @@ static void sub_810BDAC(bool8 flag)
{
sub_810BD64(0x2005, 0x2014);
}
- if (gUnknown_02039248[1])
+ if (gUnknown_02039248.unk1)
{
sub_80F979C(0, 0);
}
@@ -551,7 +569,7 @@ static void sub_810BDAC(bool8 flag)
{
sub_80F979C(0, 1);
}
- if (gUnknown_02039248[2] > gUnknown_02039248[3] && gUnknown_02039248[1] + gUnknown_02039248[3] != gUnknown_02039248[2])
+ if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2)
{
sub_80F979C(1, 0);
}
@@ -562,9 +580,9 @@ static void sub_810BDAC(bool8 flag)
for (i=0; i<5; i++)
{
v0 = ((i % 3) << 6) + 0x1a1 + (i / 3) * 6;
- if (gUnknown_02039248[0] + gUnknown_02039248[1] != gUnknown_02039248[2])
+ if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2)
{
- if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]], i + 1) > 0)
+ if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0)
{
gBGTilemapBuffers[2][v0] = (i << 12) + 23;
gBGTilemapBuffers[2][v0 + 32] = (i << 12) + 24;
@@ -582,9 +600,9 @@ static void sub_810BDAC(bool8 flag)
}
}
BasicInitMenuWindow(&gWindowConfig_81E6E34);
- if (gUnknown_02039248[0] + gUnknown_02039248[1] != gUnknown_02039248[2])
+ if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2)
{
- sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]]), 16, 1);
+ sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1);
MenuPrint(gStringVar1, 11, 17);
}
else
@@ -606,48 +624,48 @@ static void sub_810BF7C(u8 taskId)
{
if (gMain.newAndRepeatedKeys & DPAD_UP)
{
- if (gUnknown_02039248[0] != 0)
+ if (gUnknown_02039248.unk0 != 0)
{
sub_810BD64(5, 20);
- gUnknown_02039248[0]--;
+ gUnknown_02039248.unk0--;
sub_810BF38(FALSE);
}
- else if (gUnknown_02039248[1] != 0)
+ else if (gUnknown_02039248.unk1 != 0)
{
- gUnknown_02039248[1]--;
- sub_810BB88(gUnknown_02039248[1]);
+ gUnknown_02039248.unk1--;
+ sub_810BB88(gUnknown_02039248.unk1);
sub_810BF38(FALSE);
}
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
- if (gUnknown_02039248[0] != gUnknown_02039248[3])
+ if (gUnknown_02039248.unk0 != gUnknown_02039248.unk3)
{
sub_810BD64(5, 20);
- gUnknown_02039248[0]++;
+ gUnknown_02039248.unk0++;
sub_810BF38(FALSE);
}
- else if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2])
+ else if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 != gUnknown_02039248.unk2)
{
- gUnknown_02039248[1]++;
- sub_810BB88(gUnknown_02039248[1]);
+ gUnknown_02039248.unk1++;
+ sub_810BB88(gUnknown_02039248.unk1);
sub_810BF38(FALSE);
}
}
else if (gMain.newKeys & SELECT_BUTTON)
{
- if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2])
+ if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 != gUnknown_02039248.unk2)
{
PlaySE(SE_SELECT);
sub_810BDAC(TRUE);
- gTasks[taskId].data[0] = gUnknown_02039248[1] + gUnknown_02039248[0];
+ gTasks[taskId].data[0] = gUnknown_02039248.unk1 + gUnknown_02039248.unk0;
gTasks[taskId].func = sub_810C0C8;
}
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
- if (gUnknown_02039248[1] + gUnknown_02039248[0] == gUnknown_02039248[2])
+ if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 == gUnknown_02039248.unk2)
{
gScriptResult = 0xffff;
sub_810C31C(taskId);
@@ -670,36 +688,36 @@ static void sub_810C0C8(u8 taskId)
{
if (gMain.newAndRepeatedKeys & DPAD_UP)
{
- if (gUnknown_02039248[0] != 0)
+ if (gUnknown_02039248.unk0 != 0)
{
sub_810BD64(5, 20);
- gUnknown_02039248[0]--;
+ gUnknown_02039248.unk0--;
sub_810BF38(TRUE);
sub_810C1C8(taskId, 1);
}
- else if (gUnknown_02039248[1] != 0)
+ else if (gUnknown_02039248.unk1 != 0)
{
sub_810C1C8(taskId, 0);
- gUnknown_02039248[1]--;
- sub_810BB88(gUnknown_02039248[1]);
+ gUnknown_02039248.unk1--;
+ sub_810BB88(gUnknown_02039248.unk1);
sub_810BF38(TRUE);
sub_810C1C8(taskId, 1);
}
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
- if (gUnknown_02039248[0] != gUnknown_02039248[3])
+ if (gUnknown_02039248.unk0 != gUnknown_02039248.unk3)
{
sub_810BD64(5, 20);
- gUnknown_02039248[0]++;
+ gUnknown_02039248.unk0++;
sub_810BF38(TRUE);
sub_810C1C8(taskId, 1);
}
- else if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2])
+ else if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 != gUnknown_02039248.unk2)
{
sub_810C1C8(taskId, 0);
- gUnknown_02039248[1]++;
- sub_810BB88(gUnknown_02039248[1]);
+ gUnknown_02039248.unk1++;
+ sub_810BB88(gUnknown_02039248.unk1);
sub_810BF38(TRUE);
sub_810C1C8(taskId, 1);
}
@@ -730,8 +748,8 @@ static void sub_810C1C8(u8 taskId, u8 flag)
{
v0 = 0x0005;
}
- y = gTasks[taskId].data[0] - gUnknown_02039248[1];
- if ((u16)y <= 8 && y != gUnknown_02039248[0])
+ y = gTasks[taskId].data[0] - gUnknown_02039248.unk1;
+ if ((u16)y <= 8 && y != gUnknown_02039248.unk0)
{
for (i=0; i<14; i++)
{
@@ -744,8 +762,8 @@ static void sub_810C1C8(u8 taskId, u8 flag)
static void sub_810C23C(u8 taskId)
{
struct Pokeblock buf;
- u8 selidx = gUnknown_02039248[1] + gUnknown_02039248[0];
- if (selidx == gUnknown_02039248[2])
+ u8 selidx = gUnknown_02039248.unk1 + gUnknown_02039248.unk0;
+ if (selidx == gUnknown_02039248.unk2)
{
sub_810BDAC(FALSE);
}
@@ -754,7 +772,7 @@ static void sub_810C23C(u8 taskId)
buf = gSaveBlock1.pokeblocks[selidx];
gSaveBlock1.pokeblocks[selidx] = gSaveBlock1.pokeblocks[gTasks[taskId].data[0]];
gSaveBlock1.pokeblocks[gTasks[taskId].data[0]] = buf;
- sub_810BB88(gUnknown_02039248[1]);
+ sub_810BB88(gUnknown_02039248.unk1);
sub_810BDAC(FALSE);
}
}
@@ -801,7 +819,7 @@ static void sub_810C368(u8 taskId)
MenuDrawTextWindow(7, v0 + 4, 13, 11);
PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, (const struct MenuAction *)gUnknown_083F7EF4, gUnknown_03000758);
InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5);
- gScriptItemId = gUnknown_02039248[0] + gUnknown_02039248[1];
+ gScriptItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1;
gTasks[taskId].func = sub_810C40C;
}
@@ -856,7 +874,7 @@ static void sub_810C540(u8 taskId)
BasicInitMenuWindow(&gWindowConfig_81E6E50);
HandleDestroyMenuCursors();
MenuZeroFillWindowRect(7, 4, 13, 11);
- StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]].color]);
+ StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1].color]);
StringExpandPlaceholders(gStringVar4, gContestStatsText_ThrowAwayPrompt);
DisplayItemMessageOnField(taskId, gStringVar4, sub_810C5EC, 0);
}
@@ -876,7 +894,7 @@ static void sub_810C5EC(u8 taskId)
static void sub_810C610(u8 taskId)
{
MenuZeroFillWindowRect(7, 6, 13, 11);
- sub_810CA6C((gUnknown_02039248[0] + gUnknown_02039248[1]));
+ sub_810CA6C((gUnknown_02039248.unk0 + gUnknown_02039248.unk1));
StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway);
DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0);
sub_810BC98();
@@ -887,7 +905,7 @@ static void sub_810C668(u8 taskId)
{
StartVerticalScrollIndicators(0);
StartVerticalScrollIndicators(1);
- if (gUnknown_02039248[2] > gUnknown_02039248[3] && gUnknown_02039248[1] + gUnknown_02039248[3] != gUnknown_02039248[2])
+ if (gUnknown_02039248.unk2 > gUnknown_02039248.unk3 && gUnknown_02039248.unk1 + gUnknown_02039248.unk3 != gUnknown_02039248.unk2)
{
sub_80F979C(1, 0);
}
@@ -908,7 +926,7 @@ static void sub_810C6DC(u8 taskId)
static void sub_810C704(u8 taskId)
{
BasicInitMenuWindow(&gWindowConfig_81E6E34);
- sub_810BC84(gUnknown_02039248[1]);
+ sub_810BC84(gUnknown_02039248.unk1);
sub_80F979C(1, 1);
gTasks[taskId].func = sub_810C6DC;
}
diff --git a/src/pokedex.c b/src/pokedex.c
index 2ef91e472..c132635cb 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -143,13 +143,7 @@ struct UnknownStruct4
extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 gReservedSpritePaletteCount;
-extern struct PokedexView *gPokedexView;
extern struct SpriteTemplate gUnknown_02024E8C;
-extern u16 gUnknown_0202FFB8;
-extern u8 gUnknown_0202FFBA;
-extern struct PokedexListItem *gUnknown_0202FFBC;
-extern u8 gUnknown_03005CE8;
-extern IntrCallback gUnknown_03005CEC;
extern u8 gUnknown_03005E98;
extern const u8 gPokedexMenu_Gfx[];
extern const u8 gUnknown_08E96738[];
@@ -171,6 +165,14 @@ extern const u16 gPokedexMenuSearch_Pal[];
extern const u8 gTypeNames[][7];
extern const u8 gPokedexMenu2_Gfx[];
+static EWRAM_DATA struct PokedexView *gPokedexView = NULL;
+static EWRAM_DATA u16 gUnknown_0202FFB8 = 0;
+static EWRAM_DATA u8 gUnknown_0202FFBA = 0;
+static EWRAM_DATA struct PokedexListItem *gUnknown_0202FFBC = NULL;
+
+u8 gUnknown_03005CE8;
+IntrCallback gUnknown_03005CEC;
+
static u8 sub_8091E3C(void);
static const u16 sPokedexSearchPalette[] = INCBIN_U16("graphics/pokedex/search.gbapal");
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index c55105ef3..c65bfa185 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -18,7 +18,13 @@
extern u8 unk_2000000[];
extern u16 word_2024E82;
-extern u8 byte_2024E88;
+
+static EWRAM_DATA u8 byte_2024E88 = 0;
+
+u8 gPlayerPartyCount;
+struct Pokemon gPlayerParty[6];
+u8 gEnemyPartyCount;
+struct Pokemon gEnemyParty[6];
void ZeroBoxMonData(struct BoxPokemon *boxMon)
{
@@ -249,29 +255,30 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread)
{
s32 i;
- register u32 temp asm("r4");
s32 statCount = 0;
u16 evAmount;
- register u32 mask1 asm("r1");
- u8 mask2;
+ u8 temp;
CreateMon(mon, species, level, fixedIV, 0, 0, 0, 0);
+
temp = evSpread;
- mask1 = 1;
- for (i = 5; i >= 0; i--)
+
+ for (i = 0; i < 6; i++)
{
- if (temp & mask1)
+ if (temp & 1)
statCount++;
temp >>= 1;
}
evAmount = 510 / statCount;
- mask2 = 1;
+
+ temp = 1;
+
for (i = 0; i < 6; i++)
{
- if (evSpread & mask2)
+ if (evSpread & temp)
SetMonData(mon, MON_DATA_HP_EV + i, (u8 *)&evAmount);
- mask2 <<= 1;
+ temp <<= 1;
}
CalculateMonStats(mon);
@@ -443,23 +450,21 @@ void CalculateMonStats(struct Pokemon *mon)
if (species == SPECIES_SHEDINJA)
{
if (currentHP != 0 || oldMaxHP == 0)
- {
currentHP = 1;
- goto set_hp;
- }
+ else
+ return;
}
else
{
- if (currentHP != 0 || oldMaxHP == 0)
- {
- if (currentHP != 0)
- currentHP += newMaxHP - oldMaxHP;
- else if (oldMaxHP == 0)
- currentHP = newMaxHP;
- set_hp:
- SetMonData(mon, MON_DATA_HP, (u8 *)&currentHP);
- }
+ if (currentHP == 0 && oldMaxHP == 0)
+ currentHP = newMaxHP;
+ else if (currentHP != 0)
+ currentHP += newMaxHP - oldMaxHP;
+ else
+ return;
}
+
+ SetMonData(mon, MON_DATA_HP, (u8 *)&currentHP);
}
void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest)
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 543b032e2..a77edbdb2 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -31,10 +31,11 @@ extern u8 gXXX_CritRelated;
extern u16 gBattleWeather;
extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBattleMovePower;
-extern struct SpriteTemplate gUnknown_02024E8C;
extern u16 gTrainerBattleOpponent;
extern struct PokemonStorage gPokemonStorage;
+EWRAM_DATA struct SpriteTemplate gUnknown_02024E8C = {0};
+
extern u8 gBadEggNickname[];
extern const struct SpriteTemplate gSpriteTemplate_8208288[];
//array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.)
diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c
new file mode 100644
index 000000000..8994ea49e
--- /dev/null
+++ b/src/pokemon_icon.c
@@ -0,0 +1,1276 @@
+#include "global.h"
+#include "graphics.h"
+#include "mail_data.h"
+#include "species.h"
+#include "sprite.h"
+
+#define POKE_ICON_BASE_PAL_TAG 56000
+
+struct MonIconSpriteTemplate
+{
+ const struct OamData *oam;
+ const u8 *image;
+ const union AnimCmd *const *anims;
+ const union AffineAnimCmd *const *affineAnims;
+ void (*callback)(struct Sprite *);
+ u16 paletteTag;
+};
+
+const u8 * const gMonIconTable[] =
+{
+ gMonIcon_Bulbasaur,
+ gMonIcon_Bulbasaur,
+ gMonIcon_Ivysaur,
+ gMonIcon_Venusaur,
+ gMonIcon_Charmander,
+ gMonIcon_Charmeleon,
+ gMonIcon_Charizard,
+ gMonIcon_Squirtle,
+ gMonIcon_Wartortle,
+ gMonIcon_Blastoise,
+ gMonIcon_Caterpie,
+ gMonIcon_Metapod,
+ gMonIcon_Butterfree,
+ gMonIcon_Weedle,
+ gMonIcon_Kakuna,
+ gMonIcon_Beedrill,
+ gMonIcon_Pidgey,
+ gMonIcon_Pidgeotto,
+ gMonIcon_Pidgeot,
+ gMonIcon_Rattata,
+ gMonIcon_Raticate,
+ gMonIcon_Spearow,
+ gMonIcon_Fearow,
+ gMonIcon_Ekans,
+ gMonIcon_Arbok,
+ gMonIcon_Pikachu,
+ gMonIcon_Raichu,
+ gMonIcon_Sandshrew,
+ gMonIcon_Sandslash,
+ gMonIcon_NidoranF,
+ gMonIcon_Nidorina,
+ gMonIcon_Nidoqueen,
+ gMonIcon_NidoranM,
+ gMonIcon_Nidorino,
+ gMonIcon_Nidoking,
+ gMonIcon_Clefairy,
+ gMonIcon_Clefable,
+ gMonIcon_Vulpix,
+ gMonIcon_Ninetales,
+ gMonIcon_Jigglypuff,
+ gMonIcon_Wigglytuff,
+ gMonIcon_Zubat,
+ gMonIcon_Golbat,
+ gMonIcon_Oddish,
+ gMonIcon_Gloom,
+ gMonIcon_Vileplume,
+ gMonIcon_Paras,
+ gMonIcon_Parasect,
+ gMonIcon_Venonat,
+ gMonIcon_Venomoth,
+ gMonIcon_Diglett,
+ gMonIcon_Dugtrio,
+ gMonIcon_Meowth,
+ gMonIcon_Persian,
+ gMonIcon_Psyduck,
+ gMonIcon_Golduck,
+ gMonIcon_Mankey,
+ gMonIcon_Primeape,
+ gMonIcon_Growlithe,
+ gMonIcon_Arcanine,
+ gMonIcon_Poliwag,
+ gMonIcon_Poliwhirl,
+ gMonIcon_Poliwrath,
+ gMonIcon_Abra,
+ gMonIcon_Kadabra,
+ gMonIcon_Alakazam,
+ gMonIcon_Machop,
+ gMonIcon_Machoke,
+ gMonIcon_Machamp,
+ gMonIcon_Bellsprout,
+ gMonIcon_Weepinbell,
+ gMonIcon_Victreebel,
+ gMonIcon_Tentacool,
+ gMonIcon_Tentacruel,
+ gMonIcon_Geodude,
+ gMonIcon_Graveler,
+ gMonIcon_Golem,
+ gMonIcon_Ponyta,
+ gMonIcon_Rapidash,
+ gMonIcon_Slowpoke,
+ gMonIcon_Slowbro,
+ gMonIcon_Magnemite,
+ gMonIcon_Magneton,
+ gMonIcon_Farfetchd,
+ gMonIcon_Doduo,
+ gMonIcon_Dodrio,
+ gMonIcon_Seel,
+ gMonIcon_Dewgong,
+ gMonIcon_Grimer,
+ gMonIcon_Muk,
+ gMonIcon_Shellder,
+ gMonIcon_Cloyster,
+ gMonIcon_Gastly,
+ gMonIcon_Haunter,
+ gMonIcon_Gengar,
+ gMonIcon_Onix,
+ gMonIcon_Drowzee,
+ gMonIcon_Hypno,
+ gMonIcon_Krabby,
+ gMonIcon_Kingler,
+ gMonIcon_Voltorb,
+ gMonIcon_Electrode,
+ gMonIcon_Exeggcute,
+ gMonIcon_Exeggutor,
+ gMonIcon_Cubone,
+ gMonIcon_Marowak,
+ gMonIcon_Hitmonlee,
+ gMonIcon_Hitmonchan,
+ gMonIcon_Lickitung,
+ gMonIcon_Koffing,
+ gMonIcon_Weezing,
+ gMonIcon_Rhyhorn,
+ gMonIcon_Rhydon,
+ gMonIcon_Chansey,
+ gMonIcon_Tangela,
+ gMonIcon_Kangaskhan,
+ gMonIcon_Horsea,
+ gMonIcon_Seadra,
+ gMonIcon_Goldeen,
+ gMonIcon_Seaking,
+ gMonIcon_Staryu,
+ gMonIcon_Starmie,
+ gMonIcon_Mrmime,
+ gMonIcon_Scyther,
+ gMonIcon_Jynx,
+ gMonIcon_Electabuzz,
+ gMonIcon_Magmar,
+ gMonIcon_Pinsir,
+ gMonIcon_Tauros,
+ gMonIcon_Magikarp,
+ gMonIcon_Gyarados,
+ gMonIcon_Lapras,
+ gMonIcon_Ditto,
+ gMonIcon_Eevee,
+ gMonIcon_Vaporeon,
+ gMonIcon_Jolteon,
+ gMonIcon_Flareon,
+ gMonIcon_Porygon,
+ gMonIcon_Omanyte,
+ gMonIcon_Omastar,
+ gMonIcon_Kabuto,
+ gMonIcon_Kabutops,
+ gMonIcon_Aerodactyl,
+ gMonIcon_Snorlax,
+ gMonIcon_Articuno,
+ gMonIcon_Zapdos,
+ gMonIcon_Moltres,
+ gMonIcon_Dratini,
+ gMonIcon_Dragonair,
+ gMonIcon_Dragonite,
+ gMonIcon_Mewtwo,
+ gMonIcon_Mew,
+ gMonIcon_Chikorita,
+ gMonIcon_Bayleef,
+ gMonIcon_Meganium,
+ gMonIcon_Cyndaquil,
+ gMonIcon_Quilava,
+ gMonIcon_Typhlosion,
+ gMonIcon_Totodile,
+ gMonIcon_Croconaw,
+ gMonIcon_Feraligatr,
+ gMonIcon_Sentret,
+ gMonIcon_Furret,
+ gMonIcon_Hoothoot,
+ gMonIcon_Noctowl,
+ gMonIcon_Ledyba,
+ gMonIcon_Ledian,
+ gMonIcon_Spinarak,
+ gMonIcon_Ariados,
+ gMonIcon_Crobat,
+ gMonIcon_Chinchou,
+ gMonIcon_Lanturn,
+ gMonIcon_Pichu,
+ gMonIcon_Cleffa,
+ gMonIcon_Igglybuff,
+ gMonIcon_Togepi,
+ gMonIcon_Togetic,
+ gMonIcon_Natu,
+ gMonIcon_Xatu,
+ gMonIcon_Mareep,
+ gMonIcon_Flaaffy,
+ gMonIcon_Ampharos,
+ gMonIcon_Bellossom,
+ gMonIcon_Marill,
+ gMonIcon_Azumarill,
+ gMonIcon_Sudowoodo,
+ gMonIcon_Politoed,
+ gMonIcon_Hoppip,
+ gMonIcon_Skiploom,
+ gMonIcon_Jumpluff,
+ gMonIcon_Aipom,
+ gMonIcon_Sunkern,
+ gMonIcon_Sunflora,
+ gMonIcon_Yanma,
+ gMonIcon_Wooper,
+ gMonIcon_Quagsire,
+ gMonIcon_Espeon,
+ gMonIcon_Umbreon,
+ gMonIcon_Murkrow,
+ gMonIcon_Slowking,
+ gMonIcon_Misdreavus,
+ gMonIcon_UnownA,
+ gMonIcon_Wobbuffet,
+ gMonIcon_Girafarig,
+ gMonIcon_Pineco,
+ gMonIcon_Forretress,
+ gMonIcon_Dunsparce,
+ gMonIcon_Gligar,
+ gMonIcon_Steelix,
+ gMonIcon_Snubbull,
+ gMonIcon_Granbull,
+ gMonIcon_Qwilfish,
+ gMonIcon_Scizor,
+ gMonIcon_Shuckle,
+ gMonIcon_Heracross,
+ gMonIcon_Sneasel,
+ gMonIcon_Teddiursa,
+ gMonIcon_Ursaring,
+ gMonIcon_Slugma,
+ gMonIcon_Magcargo,
+ gMonIcon_Swinub,
+ gMonIcon_Piloswine,
+ gMonIcon_Corsola,
+ gMonIcon_Remoraid,
+ gMonIcon_Octillery,
+ gMonIcon_Delibird,
+ gMonIcon_Mantine,
+ gMonIcon_Skarmory,
+ gMonIcon_Houndour,
+ gMonIcon_Houndoom,
+ gMonIcon_Kingdra,
+ gMonIcon_Phanpy,
+ gMonIcon_Donphan,
+ gMonIcon_Porygon2,
+ gMonIcon_Stantler,
+ gMonIcon_Smeargle,
+ gMonIcon_Tyrogue,
+ gMonIcon_Hitmontop,
+ gMonIcon_Smoochum,
+ gMonIcon_Elekid,
+ gMonIcon_Magby,
+ gMonIcon_Miltank,
+ gMonIcon_Blissey,
+ gMonIcon_Raikou,
+ gMonIcon_Entei,
+ gMonIcon_Suicune,
+ gMonIcon_Larvitar,
+ gMonIcon_Pupitar,
+ gMonIcon_Tyranitar,
+ gMonIcon_Lugia,
+ gMonIcon_HoOh,
+ gMonIcon_Celebi,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_QuestionMark,
+ gMonIcon_Treecko,
+ gMonIcon_Grovyle,
+ gMonIcon_Sceptile,
+ gMonIcon_Torchic,
+ gMonIcon_Combusken,
+ gMonIcon_Blaziken,
+ gMonIcon_Mudkip,
+ gMonIcon_Marshtomp,
+ gMonIcon_Swampert,
+ gMonIcon_Poochyena,
+ gMonIcon_Mightyena,
+ gMonIcon_Zigzagoon,
+ gMonIcon_Linoone,
+ gMonIcon_Wurmple,
+ gMonIcon_Silcoon,
+ gMonIcon_Beautifly,
+ gMonIcon_Cascoon,
+ gMonIcon_Dustox,
+ gMonIcon_Lotad,
+ gMonIcon_Lombre,
+ gMonIcon_Ludicolo,
+ gMonIcon_Seedot,
+ gMonIcon_Nuzleaf,
+ gMonIcon_Shiftry,
+ gMonIcon_Nincada,
+ gMonIcon_Ninjask,
+ gMonIcon_Shedinja,
+ gMonIcon_Taillow,
+ gMonIcon_Swellow,
+ gMonIcon_Shroomish,
+ gMonIcon_Breloom,
+ gMonIcon_Spinda,
+ gMonIcon_Wingull,
+ gMonIcon_Pelipper,
+ gMonIcon_Surskit,
+ gMonIcon_Masquerain,
+ gMonIcon_Wailmer,
+ gMonIcon_Wailord,
+ gMonIcon_Skitty,
+ gMonIcon_Delcatty,
+ gMonIcon_Kecleon,
+ gMonIcon_Baltoy,
+ gMonIcon_Claydol,
+ gMonIcon_Nosepass,
+ gMonIcon_Torkoal,
+ gMonIcon_Sableye,
+ gMonIcon_Barboach,
+ gMonIcon_Whiscash,
+ gMonIcon_Luvdisc,
+ gMonIcon_Corphish,
+ gMonIcon_Crawdaunt,
+ gMonIcon_Feebas,
+ gMonIcon_Milotic,
+ gMonIcon_Carvanha,
+ gMonIcon_Sharpedo,
+ gMonIcon_Trapinch,
+ gMonIcon_Vibrava,
+ gMonIcon_Flygon,
+ gMonIcon_Makuhita,
+ gMonIcon_Hariyama,
+ gMonIcon_Electrike,
+ gMonIcon_Manectric,
+ gMonIcon_Numel,
+ gMonIcon_Camerupt,
+ gMonIcon_Spheal,
+ gMonIcon_Sealeo,
+ gMonIcon_Walrein,
+ gMonIcon_Cacnea,
+ gMonIcon_Cacturne,
+ gMonIcon_Snorunt,
+ gMonIcon_Glalie,
+ gMonIcon_Lunatone,
+ gMonIcon_Solrock,
+ gMonIcon_Azurill,
+ gMonIcon_Spoink,
+ gMonIcon_Grumpig,
+ gMonIcon_Plusle,
+ gMonIcon_Minun,
+ gMonIcon_Mawile,
+ gMonIcon_Meditite,
+ gMonIcon_Medicham,
+ gMonIcon_Swablu,
+ gMonIcon_Altaria,
+ gMonIcon_Wynaut,
+ gMonIcon_Duskull,
+ gMonIcon_Dusclops,
+ gMonIcon_Roselia,
+ gMonIcon_Slakoth,
+ gMonIcon_Vigoroth,
+ gMonIcon_Slaking,
+ gMonIcon_Gulpin,
+ gMonIcon_Swalot,
+ gMonIcon_Tropius,
+ gMonIcon_Whismur,
+ gMonIcon_Loudred,
+ gMonIcon_Exploud,
+ gMonIcon_Clamperl,
+ gMonIcon_Huntail,
+ gMonIcon_Gorebyss,
+ gMonIcon_Absol,
+ gMonIcon_Shuppet,
+ gMonIcon_Banette,
+ gMonIcon_Seviper,
+ gMonIcon_Zangoose,
+ gMonIcon_Relicanth,
+ gMonIcon_Aron,
+ gMonIcon_Lairon,
+ gMonIcon_Aggron,
+ gMonIcon_Castform,
+ gMonIcon_Volbeat,
+ gMonIcon_Illumise,
+ gMonIcon_Lileep,
+ gMonIcon_Cradily,
+ gMonIcon_Anorith,
+ gMonIcon_Armaldo,
+ gMonIcon_Ralts,
+ gMonIcon_Kirlia,
+ gMonIcon_Gardevoir,
+ gMonIcon_Bagon,
+ gMonIcon_Shelgon,
+ gMonIcon_Salamence,
+ gMonIcon_Beldum,
+ gMonIcon_Metang,
+ gMonIcon_Metagross,
+ gMonIcon_Regirock,
+ gMonIcon_Regice,
+ gMonIcon_Registeel,
+ gMonIcon_Kyogre,
+ gMonIcon_Groudon,
+ gMonIcon_Rayquaza,
+ gMonIcon_Latias,
+ gMonIcon_Latios,
+ gMonIcon_Jirachi,
+ gMonIcon_Deoxys,
+ gMonIcon_Chimecho,
+ gMonIcon_Egg,
+ gMonIcon_UnownB,
+ gMonIcon_UnownC,
+ gMonIcon_UnownD,
+ gMonIcon_UnownE,
+ gMonIcon_UnownF,
+ gMonIcon_UnownG,
+ gMonIcon_UnownH,
+ gMonIcon_UnownI,
+ gMonIcon_UnownJ,
+ gMonIcon_UnownK,
+ gMonIcon_UnownL,
+ gMonIcon_UnownM,
+ gMonIcon_UnownN,
+ gMonIcon_UnownO,
+ gMonIcon_UnownP,
+ gMonIcon_UnownQ,
+ gMonIcon_UnownR,
+ gMonIcon_UnownS,
+ gMonIcon_UnownT,
+ gMonIcon_UnownU,
+ gMonIcon_UnownV,
+ gMonIcon_UnownW,
+ gMonIcon_UnownX,
+ gMonIcon_UnownY,
+ gMonIcon_UnownZ,
+ gMonIcon_UnownExclamationMark,
+ gMonIcon_UnownQuestionMark,
+};
+
+const u8 gMonIconPaletteIndices[] =
+{
+ 0, // ??????????
+ 1, // Bulbasaur
+ 1, // Ivysaur
+ 1, // Venusaur
+ 0, // Charmander
+ 0, // Charmeleon
+ 0, // Charizard
+ 0, // Squirtle
+ 2, // Wartortle
+ 2, // Blastoise
+ 1, // Caterpie
+ 1, // Metapod
+ 0, // Butterfree
+ 1, // Weedle
+ 2, // Kakuna
+ 2, // Beedrill
+ 0, // Pidgey
+ 0, // Pidgeotto
+ 0, // Pidgeot
+ 2, // Rattata
+ 1, // Raticate
+ 0, // Spearow
+ 0, // Fearow
+ 2, // Ekans
+ 2, // Arbok
+ 2, // Pikachu
+ 0, // Raichu
+ 2, // Sandshrew
+ 2, // Sandslash
+ 2, // Nidoran♀
+ 2, // Nidorina
+ 2, // Nidoqueen
+ 2, // Nidoran♂
+ 2, // Nidorino
+ 2, // Nidoking
+ 0, // Clefairy
+ 0, // Clefable
+ 2, // Vulpix
+ 1, // Ninetales
+ 0, // Jigglypuff
+ 0, // Wigglytuff
+ 2, // Zubat
+ 2, // Golbat
+ 1, // Oddish
+ 0, // Gloom
+ 0, // Vileplume
+ 0, // Paras
+ 0, // Parasect
+ 0, // Venonat
+ 2, // Venomoth
+ 2, // Diglett
+ 2, // Dugtrio
+ 1, // Meowth
+ 1, // Persian
+ 1, // Psyduck
+ 2, // Golduck
+ 1, // Mankey
+ 2, // Primeape
+ 0, // Growlithe
+ 0, // Arcanine
+ 0, // Poliwag
+ 0, // Poliwhirl
+ 0, // Poliwrath
+ 2, // Abra
+ 2, // Kadabra
+ 2, // Alakazam
+ 0, // Machop
+ 2, // Machoke
+ 0, // Machamp
+ 1, // Bellsprout
+ 1, // Weepinbell
+ 1, // Victreebel
+ 2, // Tentacool
+ 2, // Tentacruel
+ 1, // Geodude
+ 1, // Graveler
+ 1, // Golem
+ 0, // Ponyta
+ 0, // Rapidash
+ 0, // Slowpoke
+ 0, // Slowbro
+ 0, // Magnemite
+ 0, // Magneton
+ 1, // Farfetch'd
+ 2, // Doduo
+ 2, // Dodrio
+ 2, // Seel
+ 2, // Dewgong
+ 2, // Grimer
+ 2, // Muk
+ 2, // Shellder
+ 2, // Cloyster
+ 2, // Gastly
+ 2, // Haunter
+ 2, // Gengar
+ 2, // Onix
+ 2, // Drowzee
+ 1, // Hypno
+ 2, // Krabby
+ 2, // Kingler
+ 0, // Voltorb
+ 0, // Electrode
+ 0, // Exeggcute
+ 1, // Exeggutor
+ 1, // Cubone
+ 1, // Marowak
+ 2, // Hitmonlee
+ 2, // Hitmonchan
+ 1, // Lickitung
+ 2, // Koffing
+ 2, // Weezing
+ 1, // Rhyhorn
+ 1, // Rhydon
+ 0, // Chansey
+ 0, // Tangela
+ 1, // Kangaskhan
+ 0, // Horsea
+ 0, // Seadra
+ 0, // Goldeen
+ 0, // Seaking
+ 2, // Staryu
+ 2, // Starmie
+ 0, // Mr. mime
+ 1, // Scyther
+ 2, // Jynx
+ 1, // Electabuzz
+ 0, // Magmar
+ 2, // Pinsir
+ 2, // Tauros
+ 0, // Magikarp
+ 0, // Gyarados
+ 2, // Lapras
+ 2, // Ditto
+ 2, // Eevee
+ 0, // Vaporeon
+ 0, // Jolteon
+ 0, // Flareon
+ 0, // Porygon
+ 0, // Omanyte
+ 0, // Omastar
+ 2, // Kabuto
+ 2, // Kabutops
+ 0, // Aerodactyl
+ 1, // Snorlax
+ 0, // Articuno
+ 0, // Zapdos
+ 0, // Moltres
+ 0, // Dratini
+ 0, // Dragonair
+ 2, // Dragonite
+ 2, // Mewtwo
+ 0, // Mew
+ 1, // Chikorita
+ 1, // Bayleef
+ 1, // Meganium
+ 1, // Cyndaquil
+ 1, // Quilava
+ 1, // Typhlosion
+ 2, // Totodile
+ 2, // Croconaw
+ 2, // Feraligatr
+ 2, // Sentret
+ 2, // Furret
+ 2, // Hoothoot
+ 2, // Noctowl
+ 0, // Ledyba
+ 0, // Ledian
+ 1, // Spinarak
+ 0, // Ariados
+ 2, // Crobat
+ 2, // Chinchou
+ 0, // Lanturn
+ 0, // Pichu
+ 0, // Cleffa
+ 1, // Igglybuff
+ 2, // Togepi
+ 2, // Togetic
+ 0, // Natu
+ 0, // Xatu
+ 2, // Mareep
+ 0, // Flaaffy
+ 0, // Ampharos
+ 1, // Bellossom
+ 2, // Marill
+ 2, // Azumarill
+ 1, // Sudowoodo
+ 1, // Politoed
+ 1, // Hoppip
+ 1, // Skiploom
+ 2, // Jumpluff
+ 2, // Aipom
+ 1, // Sunkern
+ 1, // Sunflora
+ 1, // Yanma
+ 0, // Wooper
+ 0, // Quagsire
+ 2, // Espeon
+ 2, // Umbreon
+ 2, // Murkrow
+ 0, // Slowking
+ 0, // Misdreavus
+ 0, // Unown A
+ 0, // Wobbuffet
+ 1, // Girafarig
+ 0, // Pineco
+ 2, // Forretress
+ 2, // Dunsparce
+ 2, // Gligar
+ 0, // Steelix
+ 0, // Snubbull
+ 2, // Granbull
+ 0, // Qwilfish
+ 0, // Scizor
+ 1, // Shuckle
+ 2, // Heracross
+ 0, // Sneasel
+ 0, // Teddiursa
+ 2, // Ursaring
+ 0, // Slugma
+ 0, // Magcargo
+ 2, // Swinub
+ 2, // Piloswine
+ 0, // Corsola
+ 0, // Remoraid
+ 0, // Octillery
+ 0, // Delibird
+ 2, // Mantine
+ 0, // Skarmory
+ 0, // Houndour
+ 0, // Houndoom
+ 0, // Kingdra
+ 0, // Phanpy
+ 0, // Donphan
+ 0, // Porygon2
+ 2, // Stantler
+ 1, // Smeargle
+ 2, // Tyrogue
+ 2, // Hitmontop
+ 1, // Smoochum
+ 1, // Elekid
+ 1, // Magby
+ 1, // Miltank
+ 1, // Blissey
+ 0, // Raikou
+ 2, // Entei
+ 0, // Suicune
+ 1, // Larvitar
+ 0, // Pupitar
+ 1, // Tyranitar
+ 0, // Lugia
+ 1, // Ho-Oh
+ 1, // Celebi
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 0, // ?
+ 1, // Treecko
+ 0, // Grovyle
+ 1, // Sceptile
+ 0, // Torchic
+ 0, // Combusken
+ 0, // Blaziken
+ 0, // Mudkip
+ 0, // Marshtomp
+ 0, // Swampert
+ 2, // Poochyena
+ 2, // Mightyena
+ 2, // Zigzagoon
+ 2, // Linoone
+ 0, // Wurmple
+ 2, // Silcoon
+ 0, // Beautifly
+ 2, // Cascoon
+ 1, // Dustox
+ 1, // Lotad
+ 1, // Lombre
+ 1, // Ludicolo
+ 1, // Seedot
+ 1, // Nuzleaf
+ 0, // Shiftry
+ 1, // Nincada
+ 1, // Ninjask
+ 1, // Shedinja
+ 2, // Taillow
+ 2, // Swellow
+ 1, // Shroomish
+ 1, // Breloom
+ 1, // Spinda
+ 0, // Wingull
+ 0, // Pelipper
+ 2, // Surskit
+ 0, // Masquerain
+ 2, // Wailmer
+ 0, // Wailord
+ 0, // Skitty
+ 2, // Delcatty
+ 1, // Kecleon
+ 1, // Baltoy
+ 0, // Claydol
+ 0, // Nosepass
+ 1, // Torkoal
+ 2, // Sableye
+ 0, // Barboach
+ 0, // Whiscash
+ 0, // Luvdisc
+ 0, // Corphish
+ 0, // Crawdaunt
+ 2, // Feebas
+ 0, // Milotic
+ 0, // Carvanha
+ 0, // Sharpedo
+ 1, // Trapinch
+ 1, // Vibrava
+ 1, // Flygon
+ 2, // Makuhita
+ 1, // Hariyama
+ 1, // Electrike
+ 0, // Manectric
+ 1, // Numel
+ 0, // Camerupt
+ 2, // Spheal
+ 2, // Sealeo
+ 0, // Walrein
+ 1, // Cacnea
+ 1, // Cacturne
+ 2, // Snorunt
+ 0, // Glalie
+ 1, // Lunatone
+ 0, // Solrock
+ 2, // Azurill
+ 0, // Spoink
+ 2, // Grumpig
+ 0, // Plusle
+ 0, // Minun
+ 2, // Mawile
+ 0, // Meditite
+ 0, // Medicham
+ 0, // Swablu
+ 0, // Altaria
+ 0, // Wynaut
+ 0, // Duskull
+ 0, // Dusclops
+ 0, // Roselia
+ 2, // Slakoth
+ 2, // Vigoroth
+ 1, // Slaking
+ 1, // Gulpin
+ 2, // Swalot
+ 1, // Tropius
+ 0, // Whismur
+ 2, // Loudred
+ 2, // Exploud
+ 0, // Clamperl
+ 0, // Huntail
+ 0, // Gorebyss
+ 0, // Absol
+ 0, // Shuppet
+ 0, // Banette
+ 2, // Seviper
+ 0, // Zangoose
+ 1, // Relicanth
+ 2, // Aron
+ 2, // Lairon
+ 2, // Aggron
+ 0, // Castform
+ 0, // Volbeat
+ 2, // Illumise
+ 2, // Lileep
+ 0, // Cradily
+ 0, // Anorith
+ 0, // Armaldo
+ 1, // Ralts
+ 1, // Kirlia
+ 1, // Gardevoir
+ 2, // Bagon
+ 2, // Shelgon
+ 0, // Salamence
+ 0, // Beldum
+ 0, // Metang
+ 0, // Metagross
+ 2, // Regirock
+ 2, // Regice
+ 2, // Registeel
+ 2, // Kyogre
+ 0, // Groudon
+ 1, // Rayquaza
+ 0, // Latias
+ 2, // Latios
+ 0, // Jirachi
+ 0, // Deoxys
+ 0, // Chimecho
+ 1, // Egg
+ 0, // Unown B
+ 0, // Unown C
+ 0, // Unown D
+ 0, // Unown E
+ 0, // Unown F
+ 0, // Unown G
+ 0, // Unown H
+ 0, // Unown I
+ 0, // Unown J
+ 0, // Unown K
+ 0, // Unown L
+ 0, // Unown M
+ 0, // Unown N
+ 0, // Unown O
+ 0, // Unown P
+ 0, // Unown Q
+ 0, // Unown R
+ 0, // Unown S
+ 0, // Unown T
+ 0, // Unown U
+ 0, // Unown V
+ 0, // Unown W
+ 0, // Unown X
+ 0, // Unown Y
+ 0, // Unown Z
+ 0, // Unown Exclamation Mark
+ 0, // Unown Question Mark
+};
+
+const struct SpritePalette gMonIconPaletteTable[] =
+{
+ { gMonIconPalettes[0], POKE_ICON_BASE_PAL_TAG + 0 },
+ { gMonIconPalettes[1], POKE_ICON_BASE_PAL_TAG + 1 },
+ { gMonIconPalettes[2], POKE_ICON_BASE_PAL_TAG + 2 },
+
+// There are only 3 actual palettes. The following are unused
+// and don't point to valid data.
+ { gMonIconPalettes[3], POKE_ICON_BASE_PAL_TAG + 3 },
+ { gMonIconPalettes[4], POKE_ICON_BASE_PAL_TAG + 4 },
+ { gMonIconPalettes[5], POKE_ICON_BASE_PAL_TAG + 5 },
+};
+
+static const struct OamData sMonIconOamData =
+{
+ .size = 2,
+ .priority = 1,
+};
+
+// fastest to slowest
+
+static const union AnimCmd sAnim_0[] =
+{
+ ANIMCMD_FRAME(0, 6),
+ ANIMCMD_FRAME(1, 6),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sAnim_1[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_FRAME(1, 8),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sAnim_2[] =
+{
+ ANIMCMD_FRAME(0, 14),
+ ANIMCMD_FRAME(1, 14),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sAnim_3[] =
+{
+ ANIMCMD_FRAME(0, 22),
+ ANIMCMD_FRAME(1, 22),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sAnim_4[] =
+{
+ ANIMCMD_FRAME(0, 29),
+ ANIMCMD_FRAME(0, 29), // frame 0 is repeated
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const sMonIconAnims[] =
+{
+ sAnim_0,
+ sAnim_1,
+ sAnim_2,
+ sAnim_3,
+ sAnim_4,
+};
+
+static const union AffineAnimCmd sAffineAnim_0[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 0, 10),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd sAffineAnim_1[] =
+{
+ AFFINEANIMCMD_FRAME(-2, -2, 0, 122),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const sMonIconAffineAnims[] =
+{
+ sAffineAnim_0,
+ sAffineAnim_1,
+};
+
+const u16 sSpriteImageSizes[3][4] =
+{
+ // square
+ {
+ 0x20, // 1×1
+ 0x80, // 2×2
+ 0x200, // 4×4
+ 0x800, // 8×8
+ },
+
+ // horizontal rectangle
+ {
+ 0x40, // 2×1
+ 0x80, // 4×1
+ 0x100, // 4×2
+ 0x400, // 8×4
+ },
+
+ // vertical rectangle
+ {
+ 0x40, // 1×2
+ 0x80, // 1×4
+ 0x100, // 2×4
+ 0x400, // 4×8
+ },
+};
+
+u16 GetUnownLetterByPersonality(u32);
+const u8 *GetMonIconPtr(u16, u32 personality);
+u8 UpdateMonIconFrame(struct Sprite *);
+u8 CreateMonIconSprite(struct MonIconSpriteTemplate *, s16, s16, u8);
+void sub_809D7E8(struct Sprite *);
+
+// duplicate of sub_809D3A4
+u8 unref_sub_809D26C(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
+{
+ u8 spriteId;
+ struct MonIconSpriteTemplate iconTemplate;
+ struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match
+
+ iconTemplatePtr->oam = &sMonIconOamData;
+ iconTemplatePtr->image = gMonIconTable[species];
+ iconTemplatePtr->anims = sMonIconAnims;
+ iconTemplatePtr->affineAnims = sMonIconAffineAnims;
+ iconTemplatePtr->callback = callback;
+ iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species];
+
+ spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority);
+
+ UpdateMonIconFrame(&gSprites[spriteId]);
+
+ return spriteId;
+}
+
+u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality)
+{
+ u8 spriteId;
+ struct MonIconSpriteTemplate iconTemplate =
+ {
+ .oam = &sMonIconOamData,
+ .image = GetMonIconPtr(species, personality),
+ .anims = sMonIconAnims,
+ .affineAnims = sMonIconAffineAnims,
+ .callback = callback,
+ .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species],
+ };
+
+ if (species > SPECIES_EGG)
+ iconTemplate.paletteTag = POKE_ICON_BASE_PAL_TAG;
+
+ spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
+
+ UpdateMonIconFrame(&gSprites[spriteId]);
+
+ return spriteId;
+}
+
+u8 sub_809D3A4(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
+{
+ u8 spriteId;
+ struct MonIconSpriteTemplate iconTemplate;
+ struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match
+
+ iconTemplatePtr->oam = &sMonIconOamData;
+ iconTemplatePtr->image = gMonIconTable[species];
+ iconTemplatePtr->anims = sMonIconAnims;
+ iconTemplatePtr->affineAnims = sMonIconAffineAnims;
+ iconTemplatePtr->callback = callback;
+ iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species];
+
+ spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority);
+
+ UpdateMonIconFrame(&gSprites[spriteId]);
+
+ return spriteId;
+}
+
+u16 mon_icon_convert_unown_species_id(u16 species, u32 personality)
+{
+ u16 result;
+
+ if (species == SPECIES_UNOWN)
+ {
+ u16 letter = GetUnownLetterByPersonality(personality);
+ if (letter == 0)
+ letter = SPECIES_UNOWN;
+ else
+ letter += (SPECIES_UNOWN_B - 1);
+ result = letter;
+ }
+ else
+ {
+ if (species > SPECIES_EGG)
+ result = 260;
+ else
+ result = species;
+ }
+
+ return result;
+}
+
+u16 GetUnownLetterByPersonality(u32 personality)
+{
+ return (((personality & 0x3000000) >> 18) | ((personality & 0x30000) >> 12) | ((personality & 0x300) >> 6) | (personality & 0x3)) % 0x1C;
+}
+
+u16 sub_809D4A8(u16 species)
+{
+ u16 value;
+
+ if (MailSpeciesToSpecies(species, &value) == SPECIES_UNOWN)
+ {
+ if (value == 0)
+ value += SPECIES_UNOWN;
+ else
+ value += (SPECIES_UNOWN_B - 1);
+ return value;
+ }
+ else
+ {
+ return mon_icon_convert_unown_species_id(species, 0);
+ }
+}
+
+const u8 *GetMonIconPtr(u16 species, u32 personality)
+{
+ u16 convertedSpecies = mon_icon_convert_unown_species_id(species, personality);
+ return gMonIconTable[convertedSpecies];
+}
+
+void sub_809D510(struct Sprite *sprite)
+{
+ sub_809D7E8(sprite);
+}
+
+void sub_809D51C(void)
+{
+ u8 i;
+ for (i = 0; i < 6; i++)
+ LoadSpritePalette(&gMonIconPaletteTable[i]);
+}
+
+// unused
+void SafeLoadMonIconPalette(u16 species)
+{
+ u8 palIndex;
+ if (species > SPECIES_EGG)
+ species = 260;
+ palIndex = gMonIconPaletteIndices[species];
+ if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF)
+ LoadSpritePalette(&gMonIconPaletteTable[palIndex]);
+}
+
+void sub_809D580(u16 species)
+{
+ u8 palIndex = gMonIconPaletteIndices[species];
+ if (IndexOfSpritePaletteTag(gMonIconPaletteTable[palIndex].tag) == 0xFF)
+ LoadSpritePalette(&gMonIconPaletteTable[palIndex]);
+}
+
+// unused
+void FreeMonIconPalettes(void)
+{
+ u8 i;
+ for (i = 0; i < 6; i++)
+ FreeSpritePaletteByTag(gMonIconPaletteTable[i].tag);
+}
+
+// unused
+void SafeFreeMonIconPalette(u16 species)
+{
+ u8 palIndex;
+ if (species > SPECIES_EGG)
+ species = 260;
+ palIndex = gMonIconPaletteIndices[species];
+ FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag);
+}
+
+void sub_809D608(u16 species)
+{
+ u8 palIndex;
+ palIndex = gMonIconPaletteIndices[species];
+ FreeSpritePaletteByTag(gMonIconPaletteTable[palIndex].tag);
+}
+
+void sub_809D62C(struct Sprite *sprite)
+{
+ UpdateMonIconFrame(sprite);
+}
+
+// TODO: try to find a way to avoid using goto and asm statement
+u8 UpdateMonIconFrame(struct Sprite *sprite)
+{
+ u8 result = 0;
+
+ if (sprite->animDelayCounter == 0)
+ {
+ s16 frame = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.imageValue;
+
+ if (frame != -2)
+ {
+ if (frame != -1)
+ goto copy;
+ goto end;
+ }
+
+ sprite->animCmdIndex = 0;
+ goto end;
+
+ copy:
+ RequestSpriteCopy(
+ (u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame,
+ (u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP,
+ sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]);
+ {
+ register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration;
+ sprite->animDelayCounter = duration;
+ }
+ sprite->animCmdIndex++;
+ result = sprite->animCmdIndex;
+ }
+ else
+ {
+ sprite->animDelayCounter--;
+ }
+
+end:
+ return result;
+}
+
+u8 CreateMonIconSprite(struct MonIconSpriteTemplate *iconTemplate, s16 x, s16 y, u8 subpriority)
+{
+ u8 spriteId;
+
+ struct SpriteFrameImage image = { NULL, sSpriteImageSizes[iconTemplate->oam->shape][iconTemplate->oam->size] };
+
+ struct SpriteTemplate spriteTemplate =
+ {
+ .tileTag = 0xFFFF,
+ .paletteTag = iconTemplate->paletteTag,
+ .oam = iconTemplate->oam,
+ .anims = iconTemplate->anims,
+ .images = &image,
+ .affineAnims = iconTemplate->affineAnims,
+ .callback = iconTemplate->callback,
+ };
+
+ spriteId = CreateSprite(&spriteTemplate, x, y, subpriority);
+ gSprites[spriteId].animPaused = TRUE;
+ gSprites[spriteId].animBeginning = FALSE;
+ gSprites[spriteId].images = (const struct SpriteFrameImage *)iconTemplate->image;
+ return spriteId;
+}
+
+void sub_809D7E8(struct Sprite *sprite)
+{
+ struct SpriteFrameImage image = { NULL, sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] };
+ sprite->images = &image;
+ DestroySprite(sprite);
+}
+
+void sub_809D824(struct Sprite *sprite, u8 animNum)
+{
+ sprite->animNum = animNum;
+ sprite->animDelayCounter = 0;
+ sprite->animCmdIndex = 0;
+}
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 0cab07fc1..5e97523e2 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -12,6 +12,8 @@ extern const struct StorageAction gUnknown_083B6DF4[];
extern const u8 unk_2000000[];
+EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
+
#define gUnk2002694 (u8 *)(&unk_2000000[0x2694])
#define gUnk20026A6 (u8 *)(&unk_2000000[0x26a6])
#define gUnk20011fa (u8 *)(&unk_2000000[0x11fa])
diff --git a/src/record_mixing.c b/src/record_mixing.c
index e1a72cf2e..d1083910c 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -6,11 +6,16 @@
#include "dewford_trend.h"
#include "event_data.h"
#include "fldeff_80C5CD4.h"
+#include "item.h"
+#include "items.h"
+#include "load_save.h"
#include "link.h"
#include "mauville_old_man.h"
#include "menu.h"
#include "mystery_event_script.h"
+#include "rng.h"
#include "rom4.h"
+#include "save.h"
#include "script.h"
#include "secret_base.h"
#include "songs.h"
@@ -20,24 +25,25 @@
#include "task.h"
#include "tv.h"
+extern u8 ewram[];
+#define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000))
+#define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000))
-extern void *recordMixingSecretBases;
-extern void *recordMixingTvShows;
-extern void *gUnknown_083D0274;
-extern void *gUnknown_083D0278;
-extern void *recordMixingEasyChatPairs;
-extern void *gUnknown_083D0284;
-extern u8 gUnknown_083D0288[2];
-extern u8 gUnknown_083D028A[2][3];
-extern u8 gUnknown_083D0290[9][4];
-
-extern struct RecordMixing_UnknownStruct gUnknown_02038738; //Don't know what type this points to
-extern struct RecordMixing_UnknownStruct *gUnknown_083D0280;
+extern struct RecordMixing_UnknownStruct gUnknown_02038738;
extern u16 gSpecialVar_0x8005;
-extern u32 gUnknown_03005D2C;
-extern u8 gUnknown_03000718;
-extern u8 gUnknown_0300071C[];
-extern bool8 gReceivedRemoteLinkPlayers;
+
+u32 gUnknown_03005D2C;
+
+static u8 gUnknown_03000718;
+static u8 gUnknown_0300071C[4];
+
+void *recordMixingSecretBases = &gSaveBlock1.secretBases;
+void *recordMixingTvShows = &gSaveBlock1.tvShows;
+void *gUnknown_083D0274 = &gSaveBlock1.unknown_2ABC;
+void *gUnknown_083D0278 = &gSaveBlock1.oldMan;
+void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs;
+struct RecordMixing_UnknownStruct *gUnknown_083D0280 = &gUnknown_02038738;
+void *gUnknown_083D0284 = &gSaveBlock2.filler_A8;
#define BUFFER_CHUNK_SIZE 200
@@ -46,7 +52,8 @@ void sub_80B929C(void)
sub_8083A84(Task_RecordMixing_Main);
}
-struct PlayerRecords {
+struct PlayerRecords
+{
struct SecretBaseRecord secretBases[20];
TVShow tvShows[25];
u8 filler1004[0x40];
@@ -57,9 +64,6 @@ struct PlayerRecords {
u16 filler11C8[0x34];
};
-extern struct PlayerRecords unk_2008000;
-extern struct PlayerRecords unk_2018000;
-
void RecordMixing_PrepareExchangePacket(void)
{
sub_80BC300();
@@ -67,17 +71,17 @@ void RecordMixing_PrepareExchangePacket(void)
memcpy(unk_2018000.secretBases, recordMixingSecretBases, sizeof(unk_2018000.secretBases));
memcpy(unk_2018000.tvShows, recordMixingTvShows, sizeof(unk_2018000.tvShows));
- memcpy(unk_2018000.filler1004, gUnknown_083D0274, 0x40);
- memcpy(unk_2018000.filler1044, gUnknown_083D0278, 0x40);
- memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, 0x28);
+ memcpy(unk_2018000.filler1004, gUnknown_083D0274, sizeof(unk_2008000.filler1004));
+ memcpy(unk_2018000.filler1044, gUnknown_083D0278, sizeof(unk_2008000.filler1044));
+ memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(unk_2018000.easyChatPairs));
gUnknown_02038738.data[0] = gSaveBlock1.filler_303C.data[0];
gUnknown_02038738.data[1] = gSaveBlock1.filler_303C.data[1];
sub_8041324(gSaveBlock1.daycareData, &gUnknown_02038738);
memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixing_UnknownStruct));
- memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4);
+ memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124));
if (GetMultiplayerId() == 0)
- unk_2018000.filler11C8[0] = sub_8126338();
+ unk_2018000.filler11C8[0] = GetRecordMixingGift();
}
void RecordMixing_ReceiveExchangePacket(u32 a)
@@ -86,71 +90,77 @@ void RecordMixing_ReceiveExchangePacket(u32 a)
sub_80BFD44((u8 *)unk_2008000.tvShows, sizeof(struct PlayerRecords), a);
sub_80C0514(unk_2008000.filler1004, sizeof(struct PlayerRecords), a);
sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a);
- //UB: Too many arguments for function "sub_80FA4E4"
sub_80FA4E4(unk_2008000.easyChatPairs, sizeof(struct PlayerRecords), a);
- sub_80B9C6C(&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows);
+ sub_80B9C6C((u8 *)&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows);
sub_80B9B70(unk_2008000.filler1124, sizeof(struct PlayerRecords), a);
sub_80B9F3C(unk_2008000.filler11C8, a);
}
+#define tCounter data[0]
+
void Task_RecordMixing_SoundEffect(u8 taskId)
{
- gTasks[taskId].data[0]++;
- if (gTasks[taskId].data[0] == 50)
+ gTasks[taskId].tCounter++;
+ if (gTasks[taskId].tCounter == 50)
{
PlaySE(SE_W213);
- gTasks[taskId].data[0] = 0;
+ gTasks[taskId].tCounter = 0;
}
}
-#define TD_STATE 0
+#undef tCounter
+
+
+#define tState data[0]
+#define tSndEffTaskId data[15]
+
void Task_RecordMixing_Main(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
- switch (taskData[TD_STATE])
+ switch (tState)
{
case 0: // init
sub_8007270(gSpecialVar_0x8005);
- VarSet(0x4000, 1);
+ VarSet(VAR_0x4000, 1);
gUnknown_03000718 = 0;
RecordMixing_PrepareExchangePacket();
CreateRecordMixingSprite();
- taskData[TD_STATE] = 1;
- taskData[10] = CreateTask(sub_80B95F0, 0x50);
- taskData[15] = CreateTask(Task_RecordMixing_SoundEffect, 0x51);
+ tState = 1;
+ data[10] = CreateTask(sub_80B95F0, 0x50);
+ tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 0x51);
break;
case 1: // wait for sub_80B95F0
- if (!gTasks[taskData[10]].isActive)
+ if (!gTasks[data[10]].isActive)
{
- taskData[TD_STATE] = 2;
+ tState = 2;
FlagSet(SYS_MIX_RECORD);
DestroyRecordMixingSprite();
- DestroyTask(taskData[15]);
+ DestroyTask(tSndEffTaskId);
}
break;
case 2:
- taskData[10] = CreateTask(sub_80BA00C, 10);
- taskData[TD_STATE] = 3;
+ data[10] = CreateTask(sub_80BA00C, 10);
+ tState = 3;
PlaySE(SE_W226);
break;
case 3: // wait for sub_80BA00C
- if (!gTasks[taskData[10]].isActive)
+ if (!gTasks[data[10]].isActive)
{
- taskData[TD_STATE] = 4;
- taskData[10] = sub_8083664();
+ tState = 4;
+ data[10] = sub_8083664();
sub_80720B0();
MenuPrint(gOtherText_MixingComplete, 2, 15);
- taskData[8] = 0;
+ data[8] = 0;
}
break;
case 4: // wait 60 frames
- taskData[8]++;
- if (taskData[8] > 60)
- taskData[TD_STATE] = 5;
+ data[8]++;
+ if (data[8] > 60)
+ tState = 5;
break;
case 5:
- if (!gTasks[taskData[10]].isActive)
+ if (!gTasks[data[10]].isActive)
{
sub_8055588();
MenuZeroFillScreen();
@@ -165,14 +175,14 @@ void sub_80B95F0(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[TD_STATE])
+ switch (task->tState)
{
case 0:
sub_80B9A78();
MenuDisplayMessageBox();
MenuPrint(gOtherText_MixingRecordsWithFriend, 2, 15);
task->data[8] = 0x708;
- task->data[TD_STATE] = 400;
+ task->tState = 400;
ClearLinkCallback_2();
break;
case 100: // wait 20 frames
@@ -180,48 +190,48 @@ void sub_80B95F0(u8 taskId)
if (task->data[12] > 20)
{
task->data[12] = 0;
- task->data[TD_STATE] = 101;
+ task->tState = 101;
}
break;
case 101:
- {
- u8 players = GetLinkPlayerCount_2();
-
- if (IsLinkMaster() == 1)
{
- if (players == sub_800820C())
+ u8 players = GetLinkPlayerCount_2();
+
+ if (IsLinkMaster() == 1)
{
- PlaySE(0x15);
- task->data[TD_STATE] = 201;
- task->data[12] = 0;
+ if (players == sub_800820C())
+ {
+ PlaySE(SE_PIN);
+ task->tState = 201;
+ task->data[12] = 0;
+ }
+ }
+ else
+ {
+ PlaySE(SE_BOO);
+ task->tState = 301;
}
- }
- else
- {
- PlaySE(0x16);
- task->data[TD_STATE] = 301;
}
break;
- }
case 201:
if (sub_800820C() == GetLinkPlayerCount_2())
{
if (++task->data[12] > GetLinkPlayerCount_2() * 30)
{
sub_8007F4C();
- task->data[TD_STATE] = 1;
+ task->tState = 1;
}
}
break;
case 301:
if (sub_800820C() == GetLinkPlayerCount_2())
- task->data[TD_STATE] = 1;
+ task->tState = 1;
break;
case 400: // wait 20 frames
task->data[12]++;
if (task->data[12] > 20)
{
- task->data[TD_STATE] = 1;
+ task->tState = 1;
task->data[12] = 0;
}
break;
@@ -229,31 +239,30 @@ void sub_80B95F0(u8 taskId)
if (gReceivedRemoteLinkPlayers)
{
ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), 2, 2);
- task->data[TD_STATE] = 5;
+ task->tState = 5;
}
break;
case 2:
- {
- u8 subTaskId;
-
- task->data[6] = GetLinkPlayerCount_2();
- task->data[TD_STATE] = 0;
- task->data[5] = GetMultiplayerId_();
- task->func = Task_RecordMixing_SendPacket;
- StorePtrInTaskData(&unk_2018000, &task->data[2]);
- subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50);
- task->data[10] = subTaskId;
- gTasks[subTaskId].data[0] = taskId;
- //StorePtrInTaskData((void*)0x2008000, &gTasks[subTaskId].data[5]);
- StorePtrInTaskData((u8 *)&unk_2018000 - 0x10000, &gTasks[subTaskId].data[5]);
+ {
+ u8 subTaskId;
+
+ task->data[6] = GetLinkPlayerCount_2();
+ task->tState = 0;
+ task->data[5] = GetMultiplayerId_();
+ task->func = Task_RecordMixing_SendPacket;
+ StorePtrInTaskData(&unk_2018000, &task->data[2]);
+ subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50);
+ task->data[10] = subTaskId;
+ gTasks[subTaskId].data[0] = taskId;
+ StorePtrInTaskData((u8 *)&unk_2008000, &gTasks[subTaskId].data[5]);
+ }
break;
- }
case 5: // wait 60 frames
task->data[10]++;
if (task->data[10] > 60)
{
task->data[10] = 0;
- task->data[TD_STATE] = 2;
+ task->tState = 2;
}
break;
}
@@ -264,29 +273,29 @@ void Task_RecordMixing_SendPacket(u8 taskId)
struct Task *task = &gTasks[taskId];
// does this send the data 24 times?
- switch (task->data[TD_STATE])
+ switch (task->tState)
{
case 0: //Copy record data to send buffer
- {
- void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4];
+ {
+ void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4];
- memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE);
- task->data[TD_STATE]++;
+ memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE);
+ task->tState++;
+ }
break;
- }
case 1:
if (GetMultiplayerId() == 0)
sub_8007E9C(1);
- task->data[TD_STATE]++;
+ task->tState++;
break;
case 2:
break;
case 3:
task->data[4]++;
if ((u16)task->data[4] == 24)
- task->data[TD_STATE]++;
+ task->tState++;
else
- task->data[TD_STATE] = 0;
+ task->tState = 0;
break;
case 4:
if (!gTasks[task->data[10]].isActive)
@@ -325,7 +334,6 @@ void Task_RecordMixing_CopyReceiveBuffer(u8 taskId)
}
gTasks[task->data[0]].data[0]++;
}
- //_080B998A
if (handledPlayers == GetLinkPlayerCount())
DestroyTask(taskId);
}
@@ -353,15 +361,15 @@ void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId)
gUnknown_03000718 = 1;
}
-void *LoadPtrFromTaskData(u16 *ptr)
+void *LoadPtrFromTaskData(u16 *taskData)
{
- return (void *)(*ptr | *(ptr + 1) << 16);
+ return (void *)(taskData[0] | (taskData[1] << 16));
}
-void StorePtrInTaskData(void *ptr, u16 *data)
+void StorePtrInTaskData(void *ptr, u16 *taskData)
{
- *data = (u32)ptr;
- *(data + 1) = (u32)ptr >> 16;
+ taskData[0] = (u32)ptr;
+ taskData[1] = (u32)ptr >> 16;
}
u8 GetMultiplayerId_(void)
@@ -379,6 +387,27 @@ void sub_80B9A78(void)
gUnknown_03005D2C = sizeof(struct PlayerRecords);
}
+const u8 gUnknown_083D0288[2] = {1, 0};
+
+const u8 gUnknown_083D028A[2][3] =
+{
+ {1, 2, 0},
+ {2, 0, 1},
+};
+
+const u8 gUnknown_083D0290[9][4] =
+{
+ {1, 0, 3, 2},
+ {3, 0, 1, 2},
+ {2, 0, 3, 1},
+ {1, 3, 0, 2},
+ {2, 3, 0, 1},
+ {3, 2, 0, 1},
+ {1, 2, 3, 0},
+ {2, 3, 1, 0},
+ {3, 2, 1, 0},
+};
+
void sub_80B9A88(u8 *a)
{
u32 i;
@@ -430,101 +459,627 @@ u8 sub_80B9BBC(u16 *a)
return a[16];
}
-#undef NONMATCHING
-#ifdef NONMATCHING
+void sub_80B9BC4(u8 *a, size_t b, u8 c[][2], u8 d, u8 e)
+{
+ struct RecordMixing_UnknownStructSub *r6 = (struct RecordMixing_UnknownStructSub *)(a + b * c[d][0]);
+ struct RecordMixing_UnknownStructSub *src = r6 + c[d][1];
+ struct RecordMixing_UnknownStructSub sp0 = *src;
+ struct RecordMixing_UnknownStructSub *r8 = (struct RecordMixing_UnknownStructSub *)(a + b * c[e][0]);
+
+ r6 += c[d][1];
+ *r6 = *(r8 + c[e][1]);
+
+ r8 += c[e][1];
+ *r8 = sp0;
+}
-void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e)
+u8 sub_80B9C4C(u8 *a)
{
- struct RecordMixing_UnknownStructSub *offA;
- struct RecordMixing_UnknownStructSub *offB;
- struct RecordMixing_UnknownStructSub v0;
- v0 = (offA = ((struct RecordMixing_UnknownStruct *)(b * c[d][0] + (u32)&a))->data)[c[d][1]];
- offA[c[d][1]] = (offB = ((struct RecordMixing_UnknownStruct *)(b * c[e][0] + (u32)&a))->data)[c[e][1]];
- offB[c[e][1]] = v0;
- //ToDo: Figure out what this strange stack usage is
+ int i;
+ u8 r2 = 0;
+
+ for (i = 0; i < 0x100; i++)
+ r2 += a[i];
+ return r2;
}
+const u8 gUnknown_083D02B4[][2] =
+{
+ {0, 1},
+ {1, 2},
+ {2, 0},
+};
+
+const u8 gUnknown_083D02BA[3][4] =
+{
+ {0, 1, 2, 3},
+ {0, 2, 1, 3},
+ {0, 3, 2, 1},
+};
+
+#ifdef NONMATCHING
+void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
+{
+ u8 r8;
+ u8 sp4[4];
+ u8 sp8[4];
+ void *spC[4];
+ u8 sp1C[4][2];
+ u8 sp24[4][2];
+ u8 sp3C;
+ u16 sp40 = Random();
+ u16 i; // r3
+ u16 r7;
+ u8 r1;
+ struct RecordMixing_UnknownStruct *r6;
+
+ //asm("":::"r8");
+ SeedRng(gLinkPlayers[0].trainerId);
+ r8 = GetLinkPlayerCount();
+ for (i = 0; i < 4; i++)
+ {
+ sp4[i] = 0xFF;
+ sp8[i] = 0;
+ sp1C[i][0] = 0;
+ sp1C[i][1] = 0;
+ }
+ sp3C = 0;
+ for (i = 0; i < r8; i++)
+ {
+ r6 = (struct RecordMixing_UnknownStruct *)(a + b * i);
+ if (r6->unk70 != 0)
+ {
+ for (r7 = 0; r7 < r6->unk70; r7++)
+ {
+ if (r6->unk74[r7] == 0)
+ sp1C[i][r7] = 1;
+ }
+ }
+ //_080B9D3C
+ }
+ //_080B9D46
+ for (r7 = 0, i = 0; i < r8; i++)
+ {
+ r6 = (struct RecordMixing_UnknownStruct *)(a + b * i);
+ if (sp1C[i][0] == 1 || sp1C[i][1] == 1)
+ sp3C++;
+ if (sp1C[i][0] == 1 && sp1C[i][1] == 0)
+ {
+ sp24[r7][0] = i;
+ sp24[r7][1] = 0;
+ r7++;
+ }
+ else if (sp1C[i][0] == 0 && sp1C[i][1] == 1)
+ {
+ sp24[r7][0] = i;
+ sp24[r7][1] = 0;
+ r7++;
+ }
+ //else if (sp1C[i][0] == 1 + 1 && sp1C[i][1] + 1 == 1 + 1)
+ else if (sp1C[i][0] == 1 && sp1C[i][1] == 1)
+ {
+ u8 r4, r1;
+
+ sp24[r7][0] = i;
+ r4 = sub_80B9BBC((u16 *)&r6->data[0]);
+ r1 = sub_80B9BBC((u16 *)&r6->data[1]);
+
+ asm("");
+ if (r4 == 0 && r1 != 0)
+ sp24[r7][1] = 1;
+ else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0))
+ sp24[r7][1] = Random() % 2;
+ else
+ sp24[r7][1] = 0;
+ /*
+ if (r4 == 0 && r1 != 0)
+ sp24[r7][1] = 1;
+ else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0))
+ sp24[r7][1] = Random() % 2;
+ else
+ sp24[r7][1] = 0;
+ */
+
+ /*
+ if (r4 == 0 && r1 != 0)
+ sp24[r7][1] = 1;
+ else if ((r4 == 0 && r1 == 0) || (r4 != 0 && r1 != 0))
+ //sp24[r7][1] = ((Random() << 16) >> 16) % 2;
+ sp24[r7][1] = Random() % 2;
+ else
+ sp24[r7][1] = 0;
+ */
+ //_080B9E2C:
+ r7++;
+ }
+ }
+ //_080B9E3E
+ for (i = 0; i < 4; i++)
+ {
+ r6 = (struct RecordMixing_UnknownStruct *)a + b * c;
+ spC[i] = r6;
+ }
+ r1 = sub_80B9C4C(d) % 3;
+ switch (sp3C)
+ {
+ case 2:
+ sub_80B9BC4(a, b, (u8 *)sp24, 0, 1);
+ break;
+ case 3:
+ {
+ u8 var1 = gUnknown_083D02B4[r1][0];
+ u8 var2 = gUnknown_083D02B4[r1][1];
+ sub_80B9BC4(a, b, (u8 *)sp24, var1, var2);
+ }
+ break;
+ case 4:
+ {
+ u8 *r6 = (u8 *)sp24;
+ u8 var1 = gUnknown_083D02BA[r1][0];
+ u8 var2 = gUnknown_083D02BA[r1][1];
+ sub_80B9BC4(a, b, r6, var1, var2);
+ }
+ {
+ u8 *r6 = (u8 *)sp24;
+ u8 var1 = gUnknown_083D02BA[r1][2];
+ u8 var2 = gUnknown_083D02BA[r1][3];
+ sub_80B9BC4(a, b, r6, var1, var2);
+ }
+ break;
+ }
+ //_080B9EF0
+ //memcpy(&gSaveBlock1.filler_303C.data[0], a + b * c, 0x38);
+ //memcpy(&gSaveBlock1.filler_303C.data[1], a + b * c + 0x38, 0x38);
+ r6 = (struct RecordMixing_UnknownStruct *)(a + b * c);
+ gSaveBlock1.filler_303C.data[0] = r6->data[0];
+ gSaveBlock1.filler_303C.data[1] = r6->data[1];
+ //memcpy(&gSaveBlock1.filler_303C.data[0], &r6->data[0], 0x38);
+ //memcpy(&gSaveBlock1.filler_303C.data[1], &r6->data[1], 0x38);
+ SeedRng(sp40);
+}
#else
__attribute__((naked))
-void sub_80B9BC4(struct RecordMixing_UnknownStruct *a, size_t b, u8 c[][2], u8 d, u8 e)
+void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- mov r6, r10\n\
- mov r5, r9\n\
- mov r4, r8\n\
- push {r4-r6}\n\
- sub sp, 0x38\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x58\n\
+ str r0, [sp, 0x2C]\n\
+ str r1, [sp, 0x30]\n\
+ str r3, [sp, 0x38]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ str r2, [sp, 0x34]\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x40]\n\
+ ldr r0, _080B9DA8 @ =gLinkPlayers\n\
+ ldrh r0, [r0, 0x4]\n\
+ bl SeedRng\n\
+ bl GetLinkPlayerCount\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
mov r8, r0\n\
+ movs r3, 0\n\
+ add r0, sp, 0x1C\n\
+ mov r9, r0\n\
+ movs r1, 0x1D\n\
+ add r1, sp\n\
mov r10, r1\n\
- mov r9, r2\n\
- adds r4, r3, 0\n\
- ldr r5, [sp, 0x54]\n\
- lsls r4, 24\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- lsrs r4, 23\n\
- add r4, r9\n\
- ldrb r0, [r4]\n\
- mov r6, r10\n\
- muls r6, r0\n\
- add r6, r8\n\
- ldrb r0, [r4, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
- adds r1, r6, r1\n\
- mov r0, sp\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- lsls r5, 1\n\
- add r5, r9\n\
- ldrb r0, [r5]\n\
- mov r1, r10\n\
- muls r1, r0\n\
+ mov r2, sp\n\
+ adds r2, 0xC\n\
+ str r2, [sp, 0x4C]\n\
+ movs r7, 0xFF\n\
+ add r4, sp, 0x8\n\
+ movs r2, 0\n\
+ mov r6, r9\n\
+ mov r5, r10\n\
+_080B9CBC:\n\
+ mov r1, sp\n\
+ adds r1, r3\n\
+ adds r1, 0x4\n\
+ ldrb r0, [r1]\n\
+ orrs r0, r7\n\
+ strb r0, [r1]\n\
+ adds r0, r4, r3\n\
+ strb r2, [r0]\n\
+ lsls r1, r3, 1\n\
+ adds r0, r6, r1\n\
+ strb r2, [r0]\n\
+ adds r1, r5, r1\n\
+ strb r2, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x3\n\
+ bls _080B9CBC\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x3C]\n\
+ movs r3, 0\n\
+ mov r1, r8\n\
+ lsls r0, r1, 16\n\
+ lsrs r1, r0, 16\n\
+ str r0, [sp, 0x50]\n\
+ ldr r4, [sp, 0x30]\n\
+ ldr r0, [sp, 0x34]\n\
+ adds r2, r4, 0\n\
+ muls r2, r0\n\
+ str r2, [sp, 0x48]\n\
+ ldr r2, [sp, 0x3C]\n\
+ cmp r2, r1\n\
+ bcs _080B9D46\n\
+ mov r8, r1\n\
+_080B9D00:\n\
+ ldr r4, [sp, 0x30]\n\
+ adds r0, r4, 0\n\
+ muls r0, r3\n\
+ ldr r1, [sp, 0x2C]\n\
+ adds r6, r1, r0\n\
+ ldr r0, [r6, 0x70]\n\
+ cmp r0, 0\n\
+ beq _080B9D3C\n\
+ movs r7, 0\n\
+ cmp r7, r0\n\
+ bcs _080B9D3C\n\
+ adds r4, r6, 0\n\
+ adds r4, 0x74\n\
+ mov r2, r9\n\
+ lsls r1, r3, 1\n\
+ movs r5, 0x1\n\
+_080B9D20:\n\
+ lsls r0, r7, 1\n\
+ adds r0, r4, r0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080B9D30\n\
+ adds r0, r7, r1\n\
+ adds r0, r2, r0\n\
+ strb r5, [r0]\n\
+_080B9D30:\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ ldr r0, [r6, 0x70]\n\
+ cmp r7, r0\n\
+ bcc _080B9D20\n\
+_080B9D3C:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, r8\n\
+ bcc _080B9D00\n\
+_080B9D46:\n\
+ movs r7, 0\n\
+ movs r3, 0\n\
+ ldr r2, [sp, 0x50]\n\
+ cmp r2, 0\n\
+ beq _080B9E3E\n\
+ mov r4, sp\n\
+ adds r4, 0x24\n\
+ str r4, [sp, 0x44]\n\
+ movs r0, 0x25\n\
+ add r0, sp\n\
+ mov r8, r0\n\
+_080B9D5C:\n\
+ ldr r1, [sp, 0x30]\n\
adds r0, r1, 0\n\
- add r8, r0\n\
- ldrb r1, [r4, 0x1]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 3\n\
- adds r6, r0\n\
- ldrb r0, [r5, 0x1]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 3\n\
+ muls r0, r3\n\
+ ldr r2, [sp, 0x2C]\n\
+ adds r6, r2, r0\n\
+ lsls r1, r3, 1\n\
+ mov r4, r9\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ beq _080B9D7C\n\
+ mov r2, r10\n\
+ adds r0, r2, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080B9D86\n\
+_080B9D7C:\n\
+ ldr r0, [sp, 0x3C]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x3C]\n\
+_080B9D86:\n\
+ mov r4, r9\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080B9DAC\n\
+ mov r2, r10\n\
+ adds r0, r2, r1\n\
+ ldrb r2, [r0]\n\
+ cmp r2, 0\n\
+ bne _080B9DAC\n\
+_080B9D9A:\n\
+ lsls r1, r7, 1\n\
+ ldr r4, [sp, 0x44]\n\
+ adds r0, r4, r1\n\
+ strb r3, [r0]\n\
add r1, r8\n\
+ strb r2, [r1]\n\
+ b _080B9E2C\n\
+ .align 2, 0\n\
+_080B9DA8: .4byte gLinkPlayers\n\
+_080B9DAC:\n\
+ mov r2, r9\n\
+ adds r0, r2, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080B9DC0\n\
+ mov r4, r10\n\
+ adds r0, r4, r1\n\
+ ldrb r2, [r0]\n\
+ cmp r2, 0x1\n\
+ beq _080B9D9A\n\
+_080B9DC0:\n\
+ mov r2, r9\n\
+ adds r0, r2, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080B9E32\n\
+ mov r4, r10\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1\n\
+ bne _080B9E32\n\
+ lsls r5, r7, 1\n\
+ ldr r1, [sp, 0x44]\n\
+ adds r0, r1, r5\n\
+ strb r3, [r0]\n\
adds r0, r6, 0\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldrb r1, [r5, 0x1]\n\
- lsls r0, r1, 3\n\
+ str r3, [sp, 0x54]\n\
+ bl sub_80B9BBC\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ adds r0, r6, 0\n\
+ adds r0, 0x38\n\
+ bl sub_80B9BBC\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ ldr r3, [sp, 0x54]\n\
+ cmp r4, 0\n\
+ bne _080B9E0A\n\
+ cmp r1, 0\n\
+ beq _080B9E0E\n\
+ mov r2, r8\n\
+ adds r1, r2, r5\n\
+ movs r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _080B9E2C\n\
+_080B9E0A:\n\
+ cmp r1, 0\n\
+ beq _080B9E26\n\
+_080B9E0E:\n\
+ str r3, [sp, 0x54]\n\
+ bl Random\n\
+ mov r4, r8\n\
+ adds r2, r4, r5\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r3, [sp, 0x54]\n\
+ b _080B9E2C\n\
+_080B9E26:\n\
+ mov r2, r8\n\
+ adds r0, r2, r5\n\
+ strb r1, [r0]\n\
+_080B9E2C:\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+_080B9E32:\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ ldr r4, [sp, 0x50]\n\
+ cmp r0, r4\n\
+ bcc _080B9D5C\n\
+_080B9E3E:\n\
+ movs r3, 0\n\
+ ldr r1, [sp, 0x48]\n\
+ lsls r0, r1, 4\n\
subs r0, r1\n\
lsls r0, 3\n\
- add r8, r0\n\
- mov r0, r8\n\
- mov r1, sp\n\
+ ldr r2, [sp, 0x2C]\n\
+ adds r6, r2, r0\n\
+ ldr r1, [sp, 0x4C]\n\
+_080B9E4E:\n\
+ lsls r0, r3, 2\n\
+ adds r0, r1, r0\n\
+ str r6, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x3\n\
+ bls _080B9E4E\n\
+ ldr r0, [sp, 0x38]\n\
+ bl sub_80B9C4C\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ ldr r4, [sp, 0x3C]\n\
+ cmp r4, 0x3\n\
+ beq _080B9E9C\n\
+ cmp r4, 0x3\n\
+ bgt _080B9E82\n\
+ cmp r4, 0x2\n\
+ beq _080B9E8A\n\
+ b _080B9EF0\n\
+_080B9E82:\n\
+ ldr r0, [sp, 0x3C]\n\
+ cmp r0, 0x4\n\
+ beq _080B9EBC\n\
+ b _080B9EF0\n\
+_080B9E8A:\n\
+ add r2, sp, 0x24\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x30]\n\
+ movs r3, 0\n\
+ bl sub_80B9BC4\n\
+ b _080B9EF0\n\
+_080B9E9C:\n\
+ ldr r0, _080B9EB8 @ =gUnknown_083D02B4\n\
+ lsls r1, 1\n\
+ adds r2, r1, r0\n\
+ ldrb r3, [r2]\n\
+ adds r0, 0x1\n\
+ adds r1, r0\n\
+ ldrb r0, [r1]\n\
+ add r2, sp, 0x24\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x30]\n\
+ bl sub_80B9BC4\n\
+ b _080B9EF0\n\
+ .align 2, 0\n\
+_080B9EB8: .4byte gUnknown_083D02B4\n\
+_080B9EBC:\n\
+ add r6, sp, 0x24\n\
+ ldr r4, _080B9F2C @ =gUnknown_083D02BA\n\
+ lsls r5, r1, 2\n\
+ adds r0, r5, r4\n\
+ ldrb r3, [r0]\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r5, r0\n\
+ ldrb r0, [r0]\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x30]\n\
+ adds r2, r6, 0\n\
+ bl sub_80B9BC4\n\
+ adds r0, r4, 0x2\n\
+ adds r0, r5, r0\n\
+ ldrb r3, [r0]\n\
+ adds r4, 0x3\n\
+ adds r5, r4\n\
+ ldrb r0, [r5]\n\
+ str r0, [sp]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x30]\n\
+ adds r2, r6, 0\n\
+ bl sub_80B9BC4\n\
+_080B9EF0:\n\
+ ldr r1, [sp, 0x2C]\n\
+ ldr r2, [sp, 0x48]\n\
+ adds r6, r1, r2\n\
+ ldr r4, _080B9F30 @ =gSaveBlock1\n\
+ ldr r1, _080B9F34 @ =0x0000303c\n\
+ adds r0, r4, r1\n\
+ adds r1, r6, 0\n\
movs r2, 0x38\n\
bl memcpy\n\
- add sp, 0x38\n\
+ ldr r2, _080B9F38 @ =0x00003074\n\
+ adds r4, r2\n\
+ adds r1, r6, 0\n\
+ adds r1, 0x38\n\
+ adds r0, r4, 0\n\
+ movs r2, 0x38\n\
+ bl memcpy\n\
+ ldr r0, [sp, 0x40]\n\
+ bl SeedRng\n\
+ add sp, 0x58\n\
pop {r3-r5}\n\
mov r8, r3\n\
mov r9, r4\n\
mov r10, r5\n\
- pop {r4-r6}\n\
+ pop {r4-r7}\n\
pop {r0}\n\
bx r0\n\
+ .align 2, 0\n\
+_080B9F2C: .4byte gUnknown_083D02BA\n\
+_080B9F30: .4byte gSaveBlock1\n\
+_080B9F34: .4byte 0x0000303c\n\
+_080B9F38: .4byte 0x00003074\n\
.syntax divided\n");
}
#endif
-u8 sub_80B9C4C(u8 *a)
+void sub_80B9F3C(u16 *a, u8 b)
{
- int i;
- u8 r2 = 0;
-
- for (i = 0; i < 0x100; i++)
- r2 += a[i];
- return r2;
+ if (b != 0 && *a != 0)
+ {
+ if (GetPocketByItemId(*a) == 5)
+ {
+ if (!CheckBagHasItem(*a, 1) && !CheckPCHasItem(*a, 1) && AddBagItem(*a, 1))
+ {
+ VarSet(VAR_0x4001, *a);
+ StringCopy(gStringVar1, gLinkPlayers[0].name);
+ if (*a == ITEM_EON_TICKET)
+ FlagSet(SYS_HAS_EON_TICKET);
+ }
+ else
+ {
+ VarSet(VAR_0x4001, ITEM_NONE);
+ }
+ }
+ else
+ {
+ if (AddBagItem(*a, 1) == TRUE)
+ {
+ VarSet(VAR_0x4001, *a);
+ StringCopy(gStringVar1, gLinkPlayers[0].name);
+ }
+ else
+ {
+ VarSet(VAR_0x4001, ITEM_NONE);
+ }
+ }
+ }
}
+void sub_80BA00C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[0]++;
+ break;
+ case 1:
+ task->data[0]++;
+ break;
+ case 2:
+ SetSecretBase2Field_9_AndHideBG();
+ sub_8125E2C();
+ task->data[0]++;
+ break;
+ case 3:
+ if (sub_8125E6C() != 0)
+ {
+ ClearSecretBase2Field_9_2();
+ task->data[0]++;
+ task->data[1] = 0;
+ }
+ break;
+ case 4:
+ task->data[1]++;
+ if (task->data[1] > 10)
+ {
+ sub_800832C();
+ task->data[0]++;
+ }
+ break;
+ case 5:
+ if (!gReceivedRemoteLinkPlayers)
+ DestroyTask(taskId);
+ break;
+ }
+}
diff --git a/src/region_map.c b/src/region_map.c
new file mode 100644
index 000000000..076dfecec
--- /dev/null
+++ b/src/region_map.c
@@ -0,0 +1,1847 @@
+#include "global.h"
+#include "event_data.h"
+#include "field_effect.h"
+#include "field_specials.h"
+#include "m4a.h"
+#include "main.h"
+#include "map_constants.h"
+#include "menu.h"
+#include "palette.h"
+#include "pokemon_menu.h"
+#include "region_map.h"
+#include "rom4.h"
+#include "secret_base.h"
+#include "songs.h"
+#include "sprite.h"
+#include "strings.h"
+#include "string_util.h"
+#include "text.h"
+#include "trig.h"
+
+// Map Section IDs
+#define MAPSEC_LITTLEROOT_TOWN 0
+#define MAPSEC_OLDALE_TOWN 1
+#define MAPSEC_DEWFORD_TOWN 2
+#define MAPSEC_LAVARIDGE_TOWN 3
+#define MAPSEC_FALLARBOR_TOWN 4
+#define MAPSEC_VERDANTURF_TOWN 5
+#define MAPSEC_PACIFIDLOG_TOWN 6
+#define MAPSEC_PETALBURG_CITY 7
+#define MAPSEC_SLATEPORT_CITY 8
+#define MAPSEC_MAUVILLE_CITY 9
+#define MAPSEC_RUSTBORO_CITY 10
+#define MAPSEC_FORTREE_CITY 11
+#define MAPSEC_LILYCOVE_CITY 12
+#define MAPSEC_MOSSDEEP_CITY 13
+#define MAPSEC_SOOTOPOLIS_CITY 14
+#define MAPSEC_EVER_GRANDE_CITY 15
+#define MAPSEC_ROUTE_101 0x10
+#define MAPSEC_ROUTE_102 0x11
+#define MAPSEC_ROUTE_103 0x12
+#define MAPSEC_ROUTE_104 0x13
+#define MAPSEC_ROUTE_105 0x14
+#define MAPSEC_ROUTE_106 0x15
+#define MAPSEC_ROUTE_107 0x16
+#define MAPSEC_ROUTE_108 0x17
+#define MAPSEC_ROUTE_109 0x18
+#define MAPSEC_ROUTE_110 0x19
+#define MAPSEC_ROUTE_111 0x1A
+#define MAPSEC_ROUTE_112 0x1B
+#define MAPSEC_ROUTE_113 0x1C
+#define MAPSEC_ROUTE_114 0x1D
+#define MAPSEC_ROUTE_115 0x1E
+#define MAPSEC_ROUTE_116 0x1F
+#define MAPSEC_ROUTE_117 0x20
+#define MAPSEC_ROUTE_118 0x21
+#define MAPSEC_ROUTE_119 0x22
+#define MAPSEC_ROUTE_120 0x23
+#define MAPSEC_ROUTE_121 0x24
+#define MAPSEC_ROUTE_122 0x25
+#define MAPSEC_ROUTE_123 0x26
+#define MAPSEC_ROUTE_124 0x27
+#define MAPSEC_ROUTE_125 0x28
+#define MAPSEC_ROUTE_126 0x29
+#define MAPSEC_ROUTE_127 0x2A
+#define MAPSEC_ROUTE_128 0x2B
+#define MAPSEC_ROUTE_129 0x2C
+#define MAPSEC_ROUTE_130 0x2D
+#define MAPSEC_ROUTE_131 0x2E
+#define MAPSEC_ROUTE_132 0x2F
+#define MAPSEC_ROUTE_133 0x30
+#define MAPSEC_ROUTE_134 0x31
+#define MAPSEC_UNDERWATER1 0x32
+#define MAPSEC_UNDERWATER2 0x33
+#define MAPSEC_UNDERWATER3 0x34
+#define MAPSEC_UNDERWATER4 0x35
+#define MAPSEC_UNDERWATER5 0x36
+#define MAPSEC_GRANITE_CAVE 0x37
+#define MAPSEC_MT_CHIMNEY 0x38
+#define MAPSEC_SAFARI_ZONE 0x39
+#define MAPSEC_BATTLE_TOWER 0x3A
+#define MAPSEC_PETALBURG_WOODS 0x3B
+#define MAPSEC_RUSTURF_TUNNEL 0x3C
+#define MAPSEC_ABANDONED_SHIP 0x3D
+#define MAPSEC_NEW_MAUVILLE 0x3E
+#define MAPSEC_METEOR_FALLS_1 0x3F
+#define MAPSEC_METEOR_FALLS_2 0x40
+#define MAPSEC_MT_PYRE 0x41
+#define MAPSEC_EVIL_TEAM_HIDEOUT 0x42
+#define MAPSEC_SHOAL_CAVE 0x43
+#define MAPSEC_SEAFLOOR_CAVERN 0x44
+#define MAPSEC_UNDERWATER6 0x45
+#define MAPSEC_VICTORY_ROAD 0x46
+#define MAPSEC_MIRAGE_ISLAND 0x47
+#define MAPSEC_CAVE_OF_ORIGIN 0x48
+#define MAPSEC_SOUTHERN_ISLAND 0x49
+#define MAPSEC_FIERY_PATH_1 0x4A
+#define MAPSEC_FIERY_PATH_2 0x4B
+#define MAPSEC_JAGGED_PASS_1 0x4C
+#define MAPSEC_JAGGED_PASS_2 0x4D
+#define MAPSEC_SEALED_CHAMBER 0x4E
+#define MAPSEC_UNDERWATER7 0x4F
+#define MAPSEC_SCORCHED_SLAB 0x50
+#define MAPSEC_ISLAND_CAVE 0x51
+#define MAPSEC_DESERT_RUINS 0x52
+#define MAPSEC_ANCIENT_TOMB 0x53
+#define MAPSEC_INSIDE_OF_TRUCK 0x54
+#define MAPSEC_SKY_PILLAR 0x55
+#define MAPSEC_SECRET_BASE 0x56
+#define MAPSEC_UNK_0x57 0x57
+#define MAPSEC_NONE 0x58
+
+#define MAP_WIDTH 28
+#define MAP_HEIGHT 15
+#define MAPCURSOR_X_MIN 1
+#define MAPCURSOR_Y_MIN 2
+#define MAPCURSOR_X_MAX (MAPCURSOR_X_MIN + MAP_WIDTH - 1)
+#define MAPCURSOR_Y_MAX (MAPCURSOR_Y_MIN + MAP_HEIGHT - 1)
+
+// Input events
+enum
+{
+ INPUT_EVENT_NONE,
+ INPUT_EVENT_DPAD,
+ INPUT_EVENT_2,
+ INPUT_EVENT_3,
+ INPUT_EVENT_A_BUTTON,
+ INPUT_EVENT_B_BUTTON,
+};
+
+static EWRAM_DATA struct RegionMap *gRegionMap = NULL;
+
+static const u16 sRegionMapCursor_Pal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal");
+static const u8 sRegionMapCursorSmall_ImageLZ[] = INCBIN_U8("graphics/pokenav/cursor_small.4bpp.lz");
+static const u8 sRegionMapCursorLarge_ImageLZ[] = INCBIN_U8("graphics/pokenav/cursor_large.4bpp.lz");
+static const u16 sRegionMapBrendanIcon_Pal[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal");
+static const u8 sRegionMapBrendanIcon_Image[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp");
+static const u16 sRegionMapMayIcon_Pal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal");
+static const u8 sRegionMapMayIcon_Image[] = INCBIN_U8("graphics/pokenav/may_icon.4bpp");
+static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal");
+static const u8 sRegionMapBkgnd_ImageLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz");
+static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz");
+
+#include "data/region_map_layout.h"
+
+#if ENGLISH
+#include "data/region_map_names_en.h"
+#elif GERMAN
+#include "data/region_map_names_de.h"
+#endif
+
+struct RegionMapLocation
+{
+ u8 x, y;
+ u8 width, height;
+ const u8 *regionMapSectionId;
+};
+
+const struct RegionMapLocation gRegionMapLocations[] =
+{
+ { 4, 11, 1, 1, gMapName_LittlerootTown},
+ { 4, 9, 1, 1, gMapName_OldaleTown},
+ { 2, 14, 1, 1, gMapName_DewfordTown},
+ { 5, 3, 1, 1, gMapName_LavaridgeTown},
+ { 3, 0, 1, 1, gMapName_FallarborTown},
+ { 4, 6, 1, 1, gMapName_VerdanturfTown},
+ {17, 10, 1, 1, gMapName_PacifidlogTown},
+ { 1, 9, 1, 1, gMapName_PetalburgCity},
+ { 8, 10, 1, 2, gMapName_SlateportCity},
+ { 8, 6, 2, 1, gMapName_MauvilleCity},
+ { 0, 5, 1, 2, gMapName_RustboroCity},
+ {12, 0, 1, 1, gMapName_FortreeCity},
+ {18, 3, 2, 1, gMapName_LilycoveCity},
+ {24, 5, 2, 1, gMapName_MossdeepCity},
+ {21, 7, 1, 1, gMapName_SootopolisCity},
+ {27, 8, 1, 2, gMapName_EverGrandeCity},
+ { 4, 10, 1, 1, gMapName_Route101},
+ { 2, 9, 2, 1, gMapName_Route102},
+ { 4, 8, 4, 1, gMapName_Route103},
+ { 0, 7, 1, 3, gMapName_Route104},
+ { 0, 10, 1, 3, gMapName_Route105},
+ { 0, 13, 2, 1, gMapName_Route106},
+ { 3, 14, 3, 1, gMapName_Route107},
+ { 6, 14, 2, 1, gMapName_Route108},
+ { 8, 12, 1, 3, gMapName_Route109},
+ { 8, 7, 1, 3, gMapName_Route110},
+ { 8, 0, 1, 6, gMapName_Route111},
+ { 6, 3, 2, 1, gMapName_Route112},
+ { 4, 0, 4, 1, gMapName_Route113},
+ { 1, 0, 2, 3, gMapName_Route114},
+ { 0, 2, 1, 3, gMapName_Route115},
+ { 1, 5, 4, 1, gMapName_Route116},
+ { 5, 6, 3, 1, gMapName_Route117},
+ {10, 6, 2, 1, gMapName_Route118},
+ {11, 0, 1, 6, gMapName_Route119},
+ {13, 0, 1, 4, gMapName_Route120},
+ {14, 3, 4, 1, gMapName_Route121},
+ {16, 4, 1, 2, gMapName_Route122},
+ {12, 6, 5, 1, gMapName_Route123},
+ {20, 3, 4, 3, gMapName_Route124},
+ {24, 3, 2, 2, gMapName_Route125},
+ {20, 6, 3, 3, gMapName_Route126},
+ {23, 6, 3, 3, gMapName_Route127},
+ {23, 9, 4, 1, gMapName_Route128},
+ {24, 10, 2, 1, gMapName_Route129},
+ {21, 10, 3, 1, gMapName_Route130},
+ {18, 10, 3, 1, gMapName_Route131},
+ {15, 10, 2, 1, gMapName_Route132},
+ {12, 10, 3, 1, gMapName_Route133},
+ { 9, 10, 3, 1, gMapName_Route134},
+ {20, 3, 4, 3, gMapName_Underwater},
+ {20, 6, 3, 3, gMapName_Underwater},
+ {23, 6, 3, 3, gMapName_Underwater},
+ {23, 9, 4, 1, gMapName_Underwater},
+ {21, 7, 1, 1, gMapName_Underwater},
+ { 1, 13, 1, 1, gMapName_GraniteCave},
+ { 6, 2, 1, 1, gMapName_MtChimney},
+ {16, 2, 1, 1, gMapName_SafariZone},
+ {22, 12, 1, 1, gMapName_BattleTower},
+ { 0, 8, 1, 1, gMapName_PetalburgWoods},
+ { 2, 5, 1, 1, gMapName_RusturfTunnel},
+ { 6, 14, 1, 1, gMapName_AbandonedShip},
+ { 8, 7, 1, 1, gMapName_NewMauville},
+ { 0, 3, 1, 1, gMapName_MeteorFalls},
+ { 1, 2, 1, 1, gMapName_MeteorFalls},
+ {16, 4, 1, 1, gMapName_MtPyre},
+ {19, 3, 1, 1, gMapName_EvilTeamHideout},
+ {24, 4, 1, 1, gMapName_ShoalCave},
+ {24, 9, 1, 1, gMapName_SeafloorCavern},
+ {24, 9, 1, 1, gMapName_Underwater},
+ {27, 9, 1, 1, gMapName_VictoryRoad},
+ {17, 10, 1, 1, gMapName_MirageIsland},
+ {21, 7, 1, 1, gMapName_CaveOfOrigin},
+ {12, 14, 1, 1, gMapName_SouthernIsland},
+ { 6, 3, 1, 1, gMapName_FieryPath},
+ { 7, 3, 1, 1, gMapName_FieryPath},
+ { 6, 3, 1, 1, gMapName_JaggedPass},
+ { 7, 2, 1, 1, gMapName_JaggedPass},
+ {11, 10, 1, 1, gMapName_SealedChamber},
+ {11, 10, 1, 1, gMapName_Underwater},
+ {13, 0, 1, 1, gMapName_ScorchedSlab},
+ {0, 10, 1, 1, gMapName_IslandCave},
+ { 8, 3, 1, 1, gMapName_DesertRuins},
+ {13, 2, 1, 1, gMapName_AncientTomb},
+ { 0, 0, 1, 1, gMapName_InsideOfTruck},
+ {19, 10, 1, 1, gMapName_SkyPillar},
+ { 0, 0, 1, 1, gMapName_SecretBase},
+ { 0, 0, 1, 1, gMapName_None},
+};
+
+static const u16 gUnknown_083E7684[][2] =
+{
+ {MAPSEC_UNDERWATER1, MAPSEC_ROUTE_124},
+ {MAPSEC_UNDERWATER2, MAPSEC_ROUTE_126},
+ {MAPSEC_UNDERWATER3, MAPSEC_ROUTE_127},
+ {MAPSEC_UNDERWATER4, MAPSEC_ROUTE_128},
+ {MAPSEC_UNDERWATER5, MAPSEC_SOOTOPOLIS_CITY},
+ {MAPSEC_UNDERWATER6, MAPSEC_ROUTE_128},
+ {MAPSEC_EVIL_TEAM_HIDEOUT, MAPSEC_LILYCOVE_CITY},
+ {MAPSEC_UNDERWATER7, MAPSEC_ROUTE_134},
+ {MAPSEC_PETALBURG_WOODS, MAPSEC_ROUTE_104},
+ {MAPSEC_JAGGED_PASS_1, MAPSEC_ROUTE_112},
+ {MAPSEC_MT_PYRE, MAPSEC_ROUTE_122},
+ {MAPSEC_SKY_PILLAR, MAPSEC_ROUTE_131},
+ {MAPSEC_NONE, MAPSEC_NONE},
+};
+
+static u8 sub_80FAB78(void);
+static u8 _swiopen(void);
+static u8 sub_80FAD04(void);
+static u8 sub_80FADE4(void);
+static void CalcZoomScrollParams(s16, s16, s16, s16, u16, u16, u8);
+static void sub_80FB238(s16, s16);
+void UpdateRegionMapVideoRegs(void);
+static u16 GetRegionMapSectionAt(u16, u16);
+static void InitializeCursorPosition(void);
+static void sub_80FB600(void);
+static u16 sub_80FB758(u16);
+static u16 sub_80FB9C0(u16);
+static void sub_80FBA18(void);
+static bool8 sub_80FBAA0(u16);
+void CreateRegionMapCursor(u16, u16);
+static void sub_80FBCA0(void);
+static void sub_80FBDF8(void);
+static void sub_80FBE24(void);
+static void SpriteCB_PlayerIconZoomedOut(struct Sprite *);
+static void UpdateIconBlink(struct Sprite *);
+static void SpriteCB_PlayerIconZoomedIn(struct Sprite *);
+const u8 *GetMapSectionName(u8 *, u16, u16);
+static void VBlankCB_FlyRegionMap(void);
+static void CB2_FlyRegionMap(void);
+static void sub_80FC244(void (*func)(void));
+static void PrintFlyTargetName(void);
+static void CreateFlyTargetGraphics(void);
+static void CreateCityTownFlyTargetIcons(void);
+static void CreateSpecialAreaFlyTargetIcons(void);
+static void SpriteCB_FlyTargetIcons(struct Sprite *);
+static void sub_80FC5B4(void);
+static void sub_80FC600(void);
+static void sub_80FC69C(void);
+
+void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed)
+{
+ sub_80FA904(regionMap, zoomed);
+ while (sub_80FA940())
+ ;
+}
+
+void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed)
+{
+ gRegionMap = regionMap;
+ gRegionMap->initStep = 0;
+ gRegionMap->zoomed = zoomed;
+ gRegionMap->inputCallback = (zoomed == 0) ? sub_80FAB78 : sub_80FAD04;
+}
+
+bool8 sub_80FA940(void)
+{
+ switch (gRegionMap->initStep)
+ {
+ case 0:
+ LZ77UnCompVram(sRegionMapBkgnd_ImageLZ, (void *)(VRAM + 0x8000));
+ break;
+ case 1:
+ LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (void *)(VRAM + 0xE000));
+ break;
+ case 2:
+ LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60); // Why isn't this the right size?
+ break;
+ case 3:
+ LZ77UnCompWram(sRegionMapCursorSmall_ImageLZ, gRegionMap->cursorSmallImage);
+ break;
+ case 4:
+ LZ77UnCompWram(sRegionMapCursorLarge_ImageLZ, gRegionMap->cursorLargeImage);
+ break;
+ case 5:
+ InitializeCursorPosition();
+ gRegionMap->unk74 = gRegionMap->cursorPosX;
+ gRegionMap->unk76 = gRegionMap->cursorPosY;
+ gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSecId);
+ gRegionMap->mapSecId = sub_80FB9C0(gRegionMap->mapSecId);
+ GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ break;
+ case 6:
+ if (gRegionMap->zoomed == FALSE)
+ {
+ CalcZoomScrollParams(0, 0, 0, 0, 0x100, 0x100, 0);
+ }
+ else
+ {
+ gRegionMap->scrollX = gRegionMap->cursorPosX * 8 - 52;
+ gRegionMap->scrollY = gRegionMap->cursorPosY * 8 - 68;
+ gRegionMap->unk64 = gRegionMap->cursorPosX;
+ gRegionMap->unk66 = gRegionMap->cursorPosY;
+ CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, 0x80, 0x80, 0);
+ }
+ break;
+ case 7:
+ sub_80FBA18();
+ UpdateRegionMapVideoRegs();
+ gRegionMap->cursorSprite = NULL;
+ gRegionMap->playerIconSprite = NULL;
+ gRegionMap->unk7A = 0;
+ gRegionMap->blinkPlayerIcon = FALSE;
+ REG_BG2CNT = 0xBC8A;
+ gRegionMap->initStep++;
+ default:
+ return FALSE;
+ }
+ gRegionMap->initStep++;
+ return TRUE;
+}
+
+void FreeRegionMapIconResources(void)
+{
+ if (gRegionMap->cursorSprite != NULL)
+ {
+ DestroySprite(gRegionMap->cursorSprite);
+ FreeSpriteTilesByTag(gRegionMap->cursorTileTag);
+ FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag);
+ }
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ DestroySprite(gRegionMap->playerIconSprite);
+ FreeSpriteTilesByTag(gRegionMap->playerIconTileTag);
+ FreeSpritePaletteByTag(gRegionMap->playerIconPaletteTag);
+ }
+}
+
+u8 sub_80FAB60(void)
+{
+ return gRegionMap->inputCallback();
+}
+
+static u8 sub_80FAB78(void)
+{
+ u8 event = INPUT_EVENT_NONE;
+
+ gRegionMap->cursorDeltaX = 0;
+ gRegionMap->cursorDeltaY = 0;
+ if ((gMain.heldKeys & DPAD_UP) && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN)
+ {
+ gRegionMap->cursorDeltaY = -1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_DOWN) && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX)
+ {
+ gRegionMap->cursorDeltaY = 1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_LEFT) && gRegionMap->cursorPosX > MAPCURSOR_X_MIN)
+ {
+ gRegionMap->cursorDeltaX = -1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_RIGHT) && gRegionMap->cursorPosX < MAPCURSOR_X_MAX)
+ {
+ gRegionMap->cursorDeltaX = 1;
+ event = INPUT_EVENT_DPAD;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ event = INPUT_EVENT_A_BUTTON;
+ else if (gMain.newKeys & B_BUTTON)
+ event = INPUT_EVENT_B_BUTTON;
+
+ if (event == INPUT_EVENT_DPAD)
+ {
+ gRegionMap->unk7A = 4;
+ gRegionMap->inputCallback = _swiopen;
+ }
+ return event;
+}
+
+static u8 _swiopen(void)
+{
+ u16 mapSecId;
+
+ if (gRegionMap->unk7A != 0)
+ return INPUT_EVENT_2;
+
+ if (gRegionMap->cursorDeltaX > 0)
+ gRegionMap->cursorPosX++;
+
+ if (gRegionMap->cursorDeltaX < 0)
+ gRegionMap->cursorPosX--;
+
+ if (gRegionMap->cursorDeltaY > 0)
+ gRegionMap->cursorPosY++;
+
+ if (gRegionMap->cursorDeltaY < 0)
+ gRegionMap->cursorPosY--;
+
+ mapSecId = GetRegionMapSectionAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
+ gRegionMap->unk16 = sub_80FB758(mapSecId);
+ if (mapSecId != gRegionMap->mapSecId)
+ {
+ gRegionMap->mapSecId = mapSecId;
+ GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ }
+ sub_80FBA18();
+ gRegionMap->inputCallback = sub_80FAB78;
+ return INPUT_EVENT_3;
+}
+
+static u8 sub_80FAD04(void)
+{
+ u8 event = INPUT_EVENT_NONE;
+
+ gRegionMap->unk6A = 0;
+ gRegionMap->unk68 = 0;
+ if ((gMain.heldKeys & DPAD_UP) && gRegionMap->scrollY > -52)
+ {
+ gRegionMap->unk68 = -1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_DOWN) && gRegionMap->scrollY < 60)
+ {
+ gRegionMap->unk68 = 1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_LEFT) && gRegionMap->scrollX > -44)
+ {
+ gRegionMap->unk6A = -1;
+ event = INPUT_EVENT_DPAD;
+ }
+ if ((gMain.heldKeys & DPAD_RIGHT) && gRegionMap->scrollX < 172)
+ {
+ gRegionMap->unk6A = 1;
+ event = INPUT_EVENT_DPAD;
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ event = INPUT_EVENT_A_BUTTON;
+ if (gMain.newKeys & B_BUTTON)
+ event = INPUT_EVENT_B_BUTTON;
+
+ if (event == INPUT_EVENT_DPAD)
+ {
+ gRegionMap->inputCallback = sub_80FADE4;
+ gRegionMap->unk6C = 0;
+ }
+ return event;
+}
+
+static u8 sub_80FADE4(void)
+{
+ gRegionMap->scrollY += gRegionMap->unk68;
+ gRegionMap->scrollX += gRegionMap->unk6A;
+ sub_80FB238(gRegionMap->scrollX, gRegionMap->scrollY);
+ gRegionMap->unk6C++;
+ if (gRegionMap->unk6C == 8)
+ {
+ u16 r3 = (gRegionMap->scrollX + 44) / 8 + 1;
+ u16 r1 = (gRegionMap->scrollY + 52) / 8 + 2;
+
+ if (r3 != gRegionMap->unk64 || r1 != gRegionMap->unk66)
+ {
+ u16 mapSecId;
+
+ gRegionMap->unk64 = r3;
+ gRegionMap->unk66 = r1;
+ mapSecId = GetRegionMapSectionAt(r3, r1);
+ gRegionMap->unk16 = sub_80FB758(mapSecId);
+ if (mapSecId != gRegionMap->mapSecId)
+ {
+ gRegionMap->mapSecId = mapSecId;
+ GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ }
+ sub_80FBA18();
+ }
+ gRegionMap->unk6C = 0;
+ gRegionMap->inputCallback = sub_80FAD04;
+ return INPUT_EVENT_3;
+ }
+ return INPUT_EVENT_2;
+}
+
+void sub_80FAEC4(void)
+{
+ if (gRegionMap->zoomed == FALSE)
+ {
+ gRegionMap->scrollY = 0;
+ gRegionMap->scrollX = 0;
+ gRegionMap->unk40 = 0;
+ gRegionMap->unk3C = 0;
+ gRegionMap->unk60 = gRegionMap->cursorPosX * 8 - 52;
+ gRegionMap->unk62 = gRegionMap->cursorPosY * 8 - 68;
+ gRegionMap->unk44 = (gRegionMap->unk60 << 8) / 16;
+ gRegionMap->unk48 = (gRegionMap->unk62 << 8) / 16;
+ gRegionMap->unk64 = gRegionMap->cursorPosX;
+ gRegionMap->unk66 = gRegionMap->cursorPosY;
+ gRegionMap->unk4C = (256 << 8);
+ gRegionMap->unk50 = -0x800;
+ }
+ else
+ {
+ gRegionMap->unk3C = gRegionMap->scrollX * 256;
+ gRegionMap->unk40 = gRegionMap->scrollY * 256;
+ gRegionMap->unk60 = 0;
+ gRegionMap->unk62 = 0;
+ gRegionMap->unk44 = -(gRegionMap->unk3C / 16);
+ gRegionMap->unk48 = -(gRegionMap->unk40 / 16);
+ gRegionMap->cursorPosX = gRegionMap->unk64;
+ gRegionMap->cursorPosY = gRegionMap->unk66;
+ gRegionMap->unk4C = (128 << 8);
+ gRegionMap->unk50 = 0x800;
+ }
+ gRegionMap->unk6E = 0;
+ sub_80FBCA0();
+ sub_80FBDF8();
+}
+
+u8 sub_80FAFC0(void)
+{
+ u8 r4;
+
+ if (gRegionMap->unk6E >= 16)
+ return 0;
+ gRegionMap->unk6E++;
+ if (gRegionMap->unk6E == 16)
+ {
+ gRegionMap->unk44 = 0;
+ gRegionMap->unk48 = 0;
+ gRegionMap->scrollX = gRegionMap->unk60;
+ gRegionMap->scrollY = gRegionMap->unk62;
+ gRegionMap->unk4C = (gRegionMap->zoomed == FALSE) ? (128 << 8) : (256 << 8);
+ gRegionMap->zoomed = !gRegionMap->zoomed;
+ gRegionMap->inputCallback = (gRegionMap->zoomed == FALSE) ? sub_80FAB78 : sub_80FAD04;
+ CreateRegionMapCursor(gRegionMap->cursorTileTag, gRegionMap->cursorPaletteTag);
+ sub_80FBE24();
+ r4 = 0;
+ }
+ else
+ {
+ gRegionMap->unk3C += gRegionMap->unk44;
+ gRegionMap->unk40 += gRegionMap->unk48;
+ gRegionMap->scrollX = gRegionMap->unk3C >> 8;
+ gRegionMap->scrollY = gRegionMap->unk40 >> 8;
+ gRegionMap->unk4C += gRegionMap->unk50;
+ if ((gRegionMap->unk44 < 0 && gRegionMap->scrollX < gRegionMap->unk60)
+ || (gRegionMap->unk44 > 0 && gRegionMap->scrollX > gRegionMap->unk60))
+ {
+ gRegionMap->scrollX = gRegionMap->unk60;
+ gRegionMap->unk44 = 0;
+ }
+ if ((gRegionMap->unk48 < 0 && gRegionMap->scrollY < gRegionMap->unk62)
+ || (gRegionMap->unk48 > 0 && gRegionMap->scrollY > gRegionMap->unk62))
+ {
+ gRegionMap->scrollY = gRegionMap->unk62;
+ gRegionMap->unk48 = 0;
+ }
+ if (gRegionMap->zoomed == FALSE)
+ {
+ if (gRegionMap->unk4C < (128 << 8))
+ {
+ gRegionMap->unk4C = (128 << 8);
+ gRegionMap->unk50 = 0;
+ }
+ }
+ else
+ {
+ if (gRegionMap->unk4C > (256 << 8))
+ {
+ gRegionMap->unk4C = (256 << 8);
+ gRegionMap->unk50 = 0;
+ }
+ }
+ r4 = 1;
+ }
+ CalcZoomScrollParams(gRegionMap->scrollX, gRegionMap->scrollY, 0x38, 0x48, gRegionMap->unk4C >> 8, gRegionMap->unk4C >> 8, 0);
+ return r4;
+}
+
+static void CalcZoomScrollParams(s16 a, s16 b, s16 c, s16 d, u16 e, u16 f, u8 rotation)
+{
+ s32 var1;
+ s32 var2;
+ s32 var3;
+ s32 var4;
+
+ gRegionMap->unk2C = e * gSineTable[rotation + 64] >> 8;
+ gRegionMap->unk30 = e * -gSineTable[rotation] >> 8;
+ gRegionMap->unk34 = f * gSineTable[rotation] >> 8;
+ gRegionMap->unk38 = f * gSineTable[rotation + 64] >> 8;
+
+ var1 = (a << 8) + (c << 8);
+ var2 = d * gRegionMap->unk34 + gRegionMap->unk2C * c;
+ gRegionMap->bg2x = var1 - var2;
+
+ var3 = (b << 8) + (d << 8);
+ var4 = gRegionMap->unk38 * d + gRegionMap->unk30 * c;
+ gRegionMap->bg2y = var3 - var4;
+
+ gRegionMap->needUpdateVideoRegs = TRUE;
+}
+
+static void sub_80FB238(s16 x, s16 y)
+{
+ gRegionMap->bg2x = (0x1C << 8) + (x << 8);
+ gRegionMap->bg2y = (0x24 << 8) + (y << 8);
+ gRegionMap->needUpdateVideoRegs = TRUE;
+}
+
+void UpdateRegionMapVideoRegs(void)
+{
+ if (gRegionMap->needUpdateVideoRegs)
+ {
+ REG_BG2PA = gRegionMap->unk2C;
+ REG_BG2PB = gRegionMap->unk34;
+ REG_BG2PC = gRegionMap->unk30;
+ REG_BG2PD = gRegionMap->unk38;
+ REG_BG2X = gRegionMap->bg2x;
+ REG_BG2Y = gRegionMap->bg2y;
+ gRegionMap->needUpdateVideoRegs = FALSE;
+ }
+}
+
+void sub_80FB2A4(s16 a, s16 b)
+{
+ CalcZoomScrollParams(a, b, 0x38, 0x48, 0x100, 0x100, 0);
+ UpdateRegionMapVideoRegs();
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ gRegionMap->playerIconSprite->pos2.x = -a;
+ gRegionMap->playerIconSprite->pos2.y = -b;
+ }
+}
+
+static u16 GetRegionMapSectionAt(u16 x, u16 y)
+{
+ if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX)
+ return MAPSEC_NONE;
+ y -= MAPCURSOR_Y_MIN;
+ x -= MAPCURSOR_X_MIN;
+ return sRegionMapLayout[x + y * 28];
+}
+
+static void InitializeCursorPosition(void)
+{
+ struct MapHeader *mapHeader;
+ u16 mapWidth;
+ u16 mapHeight;
+ u16 x;
+ u16 y;
+ u16 r1;
+ u16 r9;
+
+ if (gSaveBlock1.location.mapGroup == 25
+ && (gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR
+ || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK
+ || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_ROOMS))
+ {
+ sub_80FB600();
+ return;
+ }
+
+ switch (get_map_light_level_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1)
+ {
+ default:
+ case 0:
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ gRegionMap->playerIsInCave = FALSE;
+ mapWidth = gMapHeader.mapData->width;
+ mapHeight = gMapHeader.mapData->height;
+ x = gSaveBlock1.pos.x;
+ y = gSaveBlock1.pos.y;
+ if (gRegionMap->mapSecId == MAPSEC_UNDERWATER6)
+ gRegionMap->playerIsInCave = TRUE;
+ break;
+ case 3:
+ case 6:
+ mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = gSaveBlock1.warp4.x;
+ y = gSaveBlock1.warp4.y;
+ break;
+ case 8:
+ mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = gSaveBlock1.warp2.x;
+ y = gSaveBlock1.warp2.y;
+ break;
+ case 7:
+ {
+ struct WarpData *r4;
+
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ if (gRegionMap->mapSecId != MAPSEC_UNK_0x57)
+ {
+ r4 = &gSaveBlock1.warp4;
+ mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ }
+ else
+ {
+ r4 = &gSaveBlock1.warp2;
+ mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ }
+ gRegionMap->playerIsInCave = FALSE;
+ mapWidth = mapHeader->mapData->width;
+ mapHeight = mapHeader->mapData->height;
+ x = r4->x;
+ y = r4->y;
+ }
+ break;
+ }
+
+ r9 = x;
+
+ r1 = mapWidth / gRegionMapLocations[gRegionMap->mapSecId].width;
+ if (r1 == 0)
+ r1 = 1;
+ x /= r1;
+ if (x >= gRegionMapLocations[gRegionMap->mapSecId].width)
+ x = gRegionMapLocations[gRegionMap->mapSecId].width - 1;
+
+ r1 = mapHeight / gRegionMapLocations[gRegionMap->mapSecId].height;
+ if (r1 == 0)
+ r1 = 1;
+ y /= r1;
+ if (y >= gRegionMapLocations[gRegionMap->mapSecId].height)
+ y = gRegionMapLocations[gRegionMap->mapSecId].height - 1;
+
+ switch (gRegionMap->mapSecId)
+ {
+ case MAPSEC_ROUTE_114:
+ if (y != 0)
+ x = 0;
+ break;
+ case MAPSEC_ROUTE_126:
+ case MAPSEC_UNDERWATER2:
+ x = 0;
+ if (gSaveBlock1.pos.x > 32)
+ x = 1;
+ if (gSaveBlock1.pos.x > 0x33)
+ x++;
+ y = 0;
+ if (gSaveBlock1.pos.y > 0x25)
+ y = 1;
+ if (gSaveBlock1.pos.y > 0x38)
+ y++;
+ break;
+ case MAPSEC_ROUTE_121:
+ x = 0;
+ if (r9 > 14)
+ x = 1;
+ if (r9 > 0x1C)
+ x++;
+ if (r9 > 0x36)
+ x++;
+ break;
+ }
+ gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+}
+
+static void sub_80FB600(void)
+{
+ u16 y = 0;
+ u16 x = 0;
+ u8 mapGroup;
+ u8 mapNum;
+ s16 sp2;
+ s16 sp4;
+
+ switch (GetSSTidalLocation(&mapGroup, &mapNum, &sp2, &sp4))
+ {
+ case 1:
+ gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY;
+ break;
+ case 2:
+ gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY;
+ break;
+ case 3:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_124;
+ break;
+ case 4:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_131;
+ break;
+ default:
+ case 0:
+ {
+ struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
+ u16 r1;
+
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ r1 = mapHeader->mapData->width / gRegionMapLocations[gRegionMap->mapSecId].width;
+ if (r1 == 0)
+ r1 = 1;
+ x = sp2 / r1;
+ if (x >= gRegionMapLocations[gRegionMap->mapSecId].width)
+ x = gRegionMapLocations[gRegionMap->mapSecId].width - 1;
+
+ r1 = mapHeader->mapData->height / gRegionMapLocations[gRegionMap->mapSecId].height;
+ if (r1 == 0)
+ r1 = 1;
+ y = sp4 / r1;
+ if (y >= gRegionMapLocations[gRegionMap->mapSecId].height)
+ y = gRegionMapLocations[gRegionMap->mapSecId].height - 1;
+ }
+ break;
+ }
+ gRegionMap->playerIsInCave = FALSE;
+ gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
+ gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
+}
+
+static u16 sub_80FB758(u16 mapSecId)
+{
+ switch (mapSecId)
+ {
+ case MAPSEC_NONE:
+ return 0;
+ case MAPSEC_LITTLEROOT_TOWN:
+ return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? 2 : 3;
+ case MAPSEC_OLDALE_TOWN:
+ return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? 2 : 3;
+ case MAPSEC_DEWFORD_TOWN:
+ return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? 2 : 3;
+ case MAPSEC_LAVARIDGE_TOWN:
+ return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? 2 : 3;
+ case MAPSEC_FALLARBOR_TOWN:
+ return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? 2 : 3;
+ case MAPSEC_VERDANTURF_TOWN:
+ return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? 2 : 3;
+ case MAPSEC_PACIFIDLOG_TOWN:
+ return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? 2 : 3;
+ case MAPSEC_PETALBURG_CITY:
+ return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? 2 : 3;
+ case MAPSEC_SLATEPORT_CITY:
+ return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? 2 : 3;
+ case MAPSEC_MAUVILLE_CITY:
+ return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? 2 : 3;
+ case MAPSEC_RUSTBORO_CITY:
+ return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? 2 : 3;
+ case MAPSEC_FORTREE_CITY:
+ return FlagGet(FLAG_VISITED_FORTREE_CITY) ? 2 : 3;
+ case MAPSEC_LILYCOVE_CITY:
+ return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? 2 : 3;
+ case MAPSEC_MOSSDEEP_CITY:
+ return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? 2 : 3;
+ case MAPSEC_SOOTOPOLIS_CITY:
+ return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? 2 : 3;
+ case MAPSEC_EVER_GRANDE_CITY:
+ return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? 2 : 3;
+
+ case MAPSEC_BATTLE_TOWER:
+ return FlagGet(FLAG_UNLOCK_BATTLE_TOWER) ? 4 : 0;
+ case MAPSEC_SOUTHERN_ISLAND:
+ return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? 1 : 0;
+ default:
+ return 1;
+ }
+}
+
+u16 GetRegionMapSectionAt_(u16 x, u16 y)
+{
+ return GetRegionMapSectionAt(x, y);
+}
+
+static u16 sub_80FB9C0(u16 mapSecId)
+{
+ u16 i;
+
+ for (i = 0; gUnknown_083E7684[i][0] != MAPSEC_NONE; i++)
+ {
+ if (gUnknown_083E7684[i][0] == mapSecId)
+ return gUnknown_083E7684[i][1];
+ }
+ return mapSecId;
+}
+
+u16 sub_80FBA04(u16 mapSecId)
+{
+ return sub_80FB9C0(mapSecId);
+}
+
+static void sub_80FBA18(void)
+{
+ u16 x;
+ u16 y;
+ u16 i;
+
+ if (gRegionMap->mapSecId == MAPSEC_NONE)
+ {
+ gRegionMap->everGrandeCityArea = 0;
+ return;
+ }
+
+ if (gRegionMap->zoomed == FALSE)
+ {
+ x = gRegionMap->cursorPosX;
+ y = gRegionMap->cursorPosY;
+ }
+ else
+ {
+ x = gRegionMap->unk64;
+ y = gRegionMap->unk66;
+ }
+
+ i = 0;
+ while (1)
+ {
+ if (x <= 1)
+ {
+ if (sub_80FBAA0(y))
+ {
+ y--;
+ x = 0x1D;
+ }
+ else
+ {
+ break;
+ }
+ }
+ else
+ {
+ x--;
+ if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId)
+ i++;
+ }
+ }
+
+ gRegionMap->everGrandeCityArea = i;
+}
+
+static bool8 sub_80FBAA0(u16 a)
+{
+ u16 x;
+ u16 y;
+
+ y = a - 1;
+ if (y == 0xFFFF)
+ return FALSE;
+
+ for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++)
+ {
+ if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static const struct OamData sCursorOamData =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sCursorAnimSeq0[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_FRAME(4, 20),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sCursorAnimSeq1[] =
+{
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_FRAME(32, 10),
+ ANIMCMD_FRAME(16, 10),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd *const sCursorAnimTable[] =
+{
+ sCursorAnimSeq0,
+ sCursorAnimSeq1,
+};
+
+static void SpriteCB_Cursor(struct Sprite *sprite)
+{
+ if (gRegionMap->unk7A != 0)
+ {
+ sprite->pos1.x += gRegionMap->cursorDeltaX * 2;
+ sprite->pos1.y += gRegionMap->cursorDeltaY * 2;
+ gRegionMap->unk7A--;
+ }
+}
+
+static void nullsub_66(struct Sprite *sprite)
+{
+}
+
+void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
+{
+ u8 spriteId;
+ struct SpriteSheet spriteSheet;
+ struct SpritePalette spritePalette =
+ {
+ .data = sRegionMapCursor_Pal,
+ };
+ struct SpriteTemplate spriteTemplate =
+ {
+ .oam = &sCursorOamData,
+ .anims = sCursorAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_Cursor,
+ };
+
+ spriteSheet.tag = tileTag;
+ spriteTemplate.tileTag = tileTag;
+ gRegionMap->cursorTileTag = tileTag;
+
+ spritePalette.tag = paletteTag;
+ spriteTemplate.paletteTag = paletteTag;
+ gRegionMap->cursorPaletteTag = paletteTag;
+
+ if (gRegionMap->zoomed == FALSE)
+ {
+ spriteSheet.data = gRegionMap->cursorSmallImage;
+ spriteSheet.size = 0x100;
+ spriteTemplate.callback = SpriteCB_Cursor;
+ }
+ else
+ {
+ spriteSheet.data = gRegionMap->cursorLargeImage;
+ spriteSheet.size = 0x600;
+ spriteTemplate.callback = nullsub_66;
+ }
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&spritePalette);
+ spriteId = CreateSprite(&spriteTemplate, 0x38, 0x48, 0);
+ if (spriteId != 64)
+ {
+ gRegionMap->cursorSprite = &gSprites[spriteId];
+ if (gRegionMap->zoomed == TRUE)
+ {
+ gRegionMap->cursorSprite->oam.size = 2;
+ gRegionMap->cursorSprite->pos1.x -= 8;
+ gRegionMap->cursorSprite->pos1.y -= 8;
+ StartSpriteAnim(gRegionMap->cursorSprite, 1);
+ }
+ else
+ {
+ gRegionMap->cursorSprite->oam.size = 1;
+ gRegionMap->cursorSprite->pos1.x = gRegionMap->cursorPosX * 8 + 4;
+ gRegionMap->cursorSprite->pos1.y = gRegionMap->cursorPosY * 8 + 4;
+ }
+ gRegionMap->cursorSprite->data1 = 2;
+ gRegionMap->cursorSprite->data2 = IndexOfSpritePaletteTag(paletteTag) * 16 + 0x0101;
+ gRegionMap->cursorSprite->data3 = 1;
+ }
+}
+
+static void sub_80FBCA0(void)
+{
+ if (gRegionMap->cursorSprite != NULL)
+ {
+ DestroySprite(gRegionMap->cursorSprite);
+ FreeSpriteTilesByTag(gRegionMap->cursorTileTag);
+ FreeSpritePaletteByTag(gRegionMap->cursorPaletteTag);
+ }
+}
+
+void unref_sub_80FBCD0(void)
+{
+ gRegionMap->cursorSprite->data3 = 1;
+}
+
+void unref_sub_80FBCE0(void)
+{
+ gRegionMap->cursorSprite->data3 = 0;
+}
+
+static const struct OamData sPlayerIconOamData =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sPlayerIconAnimSeq0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sPlayerIconAnimTable[] =
+{
+ sPlayerIconAnimSeq0,
+};
+
+void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag)
+{
+ u8 spriteId;
+ struct SpriteSheet playerIconSpriteSheet =
+ {
+ .data = sRegionMapBrendanIcon_Image,
+ .size = 128,
+ .tag = tileTag,
+ };
+ struct SpritePalette playerIconSpritePalette =
+ {
+ .data = sRegionMapBrendanIcon_Pal,
+ .tag = paletteTag,
+ };
+ struct SpriteTemplate playerIconSpriteTemplate =
+ {
+ .tileTag = tileTag,
+ .paletteTag = paletteTag,
+ .oam = &sPlayerIconOamData,
+ .anims = sPlayerIconAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+ };
+
+ if (gSaveBlock2.playerGender == FEMALE)
+ {
+ playerIconSpriteSheet.data = sRegionMapMayIcon_Image;
+ playerIconSpritePalette.data = sRegionMapMayIcon_Pal;
+ }
+ LoadSpriteSheet(&playerIconSpriteSheet);
+ LoadSpritePalette(&playerIconSpritePalette);
+ spriteId = CreateSprite(&playerIconSpriteTemplate, 0, 0, 1);
+ gRegionMap->playerIconSprite = &gSprites[spriteId];
+ if (gRegionMap->zoomed == FALSE)
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut;
+ }
+ else
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn;
+ }
+}
+
+static void sub_80FBDF8(void)
+{
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ gRegionMap->playerIconSprite->invisible = TRUE;
+ gRegionMap->playerIconSprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void sub_80FBE24(void)
+{
+ if (gRegionMap->playerIconSprite != NULL)
+ {
+ if (gRegionMap->zoomed == TRUE)
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 16 - 48;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 16 - 66;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedIn;
+ gRegionMap->playerIconSprite->invisible = FALSE;
+ }
+ else
+ {
+ gRegionMap->playerIconSprite->pos1.x = gRegionMap->unk74 * 8 + 4;
+ gRegionMap->playerIconSprite->pos1.y = gRegionMap->unk76 * 8 + 4;
+ gRegionMap->playerIconSprite->pos2.x = 0;
+ gRegionMap->playerIconSprite->pos2.y = 0;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconZoomedOut;
+ gRegionMap->playerIconSprite->invisible = FALSE;
+ }
+ }
+}
+
+static void SpriteCB_PlayerIconZoomedIn(struct Sprite *sprite)
+{
+ sprite->pos2.x = -(gRegionMap->scrollX * 2);
+ sprite->pos2.y = -(gRegionMap->scrollY * 2);
+ sprite->data0 = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ sprite->data1 = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+
+ // Determine if sprite is on screen
+ if (sprite->data0 < -8 || sprite->data0 > 0xA8 || sprite->data1 < -8 || sprite->data1 > 0xF8)
+ sprite->data2 = FALSE;
+ else
+ sprite->data2 = TRUE;
+
+ if (sprite->data2 == TRUE)
+ UpdateIconBlink(sprite);
+ else
+ sprite->invisible = TRUE;
+}
+
+static void SpriteCB_PlayerIconZoomedOut(struct Sprite *sprite)
+{
+ UpdateIconBlink(sprite);
+}
+
+static void UpdateIconBlink(struct Sprite *sprite)
+{
+ if (gRegionMap->blinkPlayerIcon)
+ {
+ // Toggle visibility every 16 frames
+ sprite->data7++;
+ if (sprite->data7 > 16)
+ {
+ sprite->data7 = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ }
+}
+
+void sub_80FBF94(void)
+{
+ if (gRegionMap->playerIsInCave)
+ gRegionMap->blinkPlayerIcon = TRUE;
+}
+
+const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length)
+{
+ if (mapSecId == MAPSEC_SECRET_BASE)
+ return GetSecretBaseMapName(dest);
+ if (mapSecId < MAPSEC_NONE)
+ return StringCopy(dest, gRegionMapLocations[mapSecId].regionMapSectionId);
+ if (length == 0)
+ length = 18;
+ return StringFill(dest, CHAR_SPACE, length);
+}
+
+const u8 *CopyMapName(u8 *dest, u16 mapSecId)
+{
+ switch (mapSecId)
+ {
+ case MAPSEC_UNK_0x57:
+ return StringCopy(dest, gOtherText_Ferry);
+ case MAPSEC_SECRET_BASE:
+ return StringCopy(dest, gOtherText_SecretBase);
+ default:
+ return GetMapSectionName(dest, mapSecId, 0);
+ }
+}
+
+const u8 *CopyLocationName(u8 *dest, u16 mapSecId)
+{
+ if (mapSecId == MAPSEC_EVIL_TEAM_HIDEOUT)
+ return StringCopy(dest, gOtherText_Hideout);
+ else
+ return CopyMapName(dest, mapSecId);
+}
+
+static void GetRegionMapLocationPosition(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height)
+{
+ *x = gRegionMapLocations[mapSecId].x;
+ *y = gRegionMapLocations[mapSecId].y;
+ *width = gRegionMapLocations[mapSecId].width;
+ *height = gRegionMapLocations[mapSecId].height;
+}
+
+struct UnknownStruct3
+{
+ void (*unk0)(void);
+ u16 unk4;
+ u16 unk6;
+ struct RegionMap regionMap;
+};
+
+extern u8 ewram[];
+#define ewram0 (*(struct UnknownStruct3 *)(ewram + 0))
+#define ewram888 (ewram + 0x888)
+#define ewramA6E (ewram[0xA6E])
+#define ewramBlankMapName (ewram + 0xA48)
+
+static const u16 sFlyRegionMapFrame_Pal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal");
+static const u8 sFlyRegionMapFrame_ImageLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz");
+static const u8 sFlyRegionMapFrame_TilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz");
+static const u16 sFlyTargetIcons_Pal[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal");
+static const u8 sFlyTargetIcons_ImageLZ[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz");
+
+static const u8 sUnknown_083E7920[][3] =
+{
+ {0, 9, 1},
+ {0, 10, 14},
+ {0, 11, 15},
+ {0, 12, 16},
+ {0, 13, 17},
+ {0, 14, 18},
+ {0, 15, 19},
+ {0, 0, 3},
+ {0, 1, 4},
+ {0, 2, 5},
+ {0, 3, 6},
+ {0, 4, 7},
+ {0, 5, 8},
+ {0, 6, 9},
+ {0, 7, 10},
+ {0, 8, 11},
+ {0, 16, 0},
+ {0, 17, 0},
+ {0, 18, 0},
+ {0, 19, 0},
+ {0, 20, 0},
+ {0, 21, 0},
+ {0, 22, 0},
+ {0, 23, 0},
+ {0, 24, 0},
+ {0, 25, 0},
+ {0, 26, 0},
+ {0, 27, 0},
+ {0, 28, 0},
+ {0, 29, 0},
+ {0, 30, 0},
+ {0, 31, 0},
+ {0, 32, 0},
+ {0, 33, 0},
+ {0, 34, 0},
+ {0, 35, 0},
+ {0, 36, 0},
+ {0, 37, 0},
+ {0, 38, 0},
+ {0, 39, 0},
+ {0, 40, 0},
+ {0, 41, 0},
+ {0, 42, 0},
+ {0, 43, 0},
+ {0, 44, 0},
+ {0, 45, 0},
+ {0, 46, 0},
+ {0, 47, 0},
+ {0, 48, 0},
+ {0, 49, 0},
+};
+
+struct UnknownStruct4
+{
+ const u8 *const *unk0;
+ u16 mapSecId;
+ u16 flag;
+};
+
+static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter};
+
+static const struct UnknownStruct4 sUnknown_083E79C0[1] =
+{
+ {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, SYS_POKEMON_LEAGUE_FLY},
+};
+
+// XXX: what is this?
+static u8 *const ewram_ = ewram;
+
+static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2};
+
+// Fly targets that are not cities or towns
+static const u16 sSpecialFlyAreas[][2] =
+{
+ // flag, mapSecId
+ {0x848, MAPSEC_BATTLE_TOWER},
+ {0xFFFF, MAPSEC_NONE},
+};
+
+static const struct OamData sFlyTargetOamData =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq0[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq1[] =
+{
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq2[] =
+{
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq3[] =
+{
+ ANIMCMD_FRAME(5, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq4[] =
+{
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq5[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sFlyTargetAnimSeq6[] =
+{
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sFlyTargetAnimTable[] =
+{
+ sFlyTargetAnimSeq0,
+ sFlyTargetAnimSeq1,
+ sFlyTargetAnimSeq2,
+ sFlyTargetAnimSeq3,
+ sFlyTargetAnimSeq4,
+ sFlyTargetAnimSeq5,
+ sFlyTargetAnimSeq6,
+};
+
+static const struct SpriteTemplate gFlyTargetSpriteTemplate =
+{
+ .tileTag = 2,
+ .paletteTag = 2,
+ .oam = &sFlyTargetOamData,
+ .anims = sFlyTargetAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+void CB2_InitFlyRegionMap(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeSpriteTileRanges();
+ FreeAllSpritePalettes();
+ break;
+ case 1:
+ SetUpWindowConfig(&gWindowConfig_81E7224);
+ break;
+ case 2:
+ InitMenuWindow(&gWindowConfig_81E7224);
+ MenuZeroFillScreen();
+ break;
+ case 3:
+ InitRegionMap(&ewram0.regionMap, 0);
+ CreateRegionMapCursor(0, 0);
+ CreateRegionMapPlayerIcon(1, 1);
+ ewram0.unk6 = ewram0.regionMap.mapSecId;
+ StringFill(ewramBlankMapName, CHAR_SPACE, 12);
+ PrintFlyTargetName();
+ break;
+ case 4:
+ LZ77UnCompVram(sFlyRegionMapFrame_ImageLZ, (void *)(VRAM + 0xC000));
+ break;
+ case 5:
+ LZ77UnCompVram(sFlyRegionMapFrame_TilemapLZ, (void *)(VRAM + 0xF000));
+ break;
+ case 6:
+ LoadPalette(sFlyRegionMapFrame_Pal, 16, 32);
+ MenuPrint_PixelCoords(gOtherText_FlyToWhere, 1, 0x90, 1);
+ break;
+ case 7:
+ CreateFlyTargetGraphics();
+ break;
+ case 8:
+ BlendPalettes(0xFFFFFFFF, 16, 0);
+ SetVBlankCallback(VBlankCB_FlyRegionMap);
+ break;
+ case 9:
+ REG_BLDCNT = 0;
+ REG_BG1CNT = 0x1E0D;
+ REG_DISPCNT = 0x1741;
+ sub_80FC244(sub_80FC5B4);
+ SetMainCallback2(CB2_FlyRegionMap);
+ break;
+ default:
+ return;
+ }
+ gMain.state++;
+}
+
+static void VBlankCB_FlyRegionMap(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_FlyRegionMap(void)
+{
+ ewram0.unk0();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+static void sub_80FC244(void (*func)(void))
+{
+ ewram0.unk0 = func;
+ ewram0.unk4 = 0;
+}
+
+static void PrintFlyTargetName(void)
+{
+ if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4)
+ {
+ u16 i = 0;
+ int zero;
+
+ for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++)
+ {
+ const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i];
+
+ if (ewram0.regionMap.mapSecId == r4->mapSecId)
+ {
+ if (FlagGet(r4->flag))
+ {
+ MenuDrawTextWindow(16, 14, 29, 19);
+ MenuPrint(ewram0.regionMap.mapSecName, 17, 15);
+ MenuPrint_RightAligned(r4->unk0[ewram0.regionMap.everGrandeCityArea], 29, 17);
+ return;
+ }
+ break;
+ }
+ }
+ // This check is always true, but somehow the compiler still performed it.
+ asm("mov %0, #0\n":"=r"(zero)); // zero = 0
+ if (zero == 0)
+ {
+ MenuDrawTextWindow(16, 16, 29, 19);
+ MenuPrint(ewram0.regionMap.mapSecName, 17, 17);
+ MenuZeroFillWindowRect(16, 14, 29, 15);
+ }
+ }
+ else
+ {
+ MenuDrawTextWindow(16, 16, 29, 19);
+ MenuPrint(ewramBlankMapName, 17, 17);
+ MenuZeroFillWindowRect(16, 14, 29, 15);
+ }
+}
+
+static void CreateFlyTargetGraphics(void)
+{
+ struct SpriteSheet spriteSheet;
+
+ LZ77UnCompWram(sFlyTargetIcons_ImageLZ, ewram888);
+ spriteSheet.data = ewram888;
+ spriteSheet.size = 0x1C0;
+ spriteSheet.tag = 2;
+ LoadSpriteSheet(&spriteSheet);
+ LoadSpritePalette(&sFlyTargetIconSpritePalette);
+ CreateCityTownFlyTargetIcons();
+ CreateSpecialAreaFlyTargetIcons();
+}
+
+// Draws a light overlay on cities and towns that the player can fly to
+static void CreateCityTownFlyTargetIcons(void)
+{
+ u16 canFlyFlag = 0x80F;
+ u16 i;
+
+ for (i = 0; i < 16; i++)
+ {
+ u16 x;
+ u16 y;
+ u16 width;
+ u16 height;
+ u16 r7;
+ u8 spriteId;
+
+ GetRegionMapLocationPosition(i, &x, &y, &width, &height);
+ x = (x + 1) * 8 + 4;
+ y = (y + 2) * 8 + 4;
+ if (width == 2)
+ r7 = 1;
+ else if (height == 2)
+ r7 = 2;
+ else
+ r7 = 0;
+ spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10);
+ if (spriteId != 64)
+ {
+ gSprites[spriteId].oam.shape = r7;
+ if (FlagGet(canFlyFlag))
+ gSprites[spriteId].callback = SpriteCB_FlyTargetIcons;
+ else
+ r7 += 3;
+ StartSpriteAnim(&gSprites[spriteId], r7);
+ gSprites[spriteId].data0 = i;
+ }
+ canFlyFlag++;
+ }
+}
+
+// Draws a red box on other fly targets
+// The Battle Tower is the only one of these
+static void CreateSpecialAreaFlyTargetIcons(void)
+{
+ u16 i;
+
+ for (i = 0; sSpecialFlyAreas[i][1] != MAPSEC_NONE; i++)
+ {
+ u16 x;
+ u16 y;
+ u16 width;
+ u16 height;
+
+ if (FlagGet(sSpecialFlyAreas[i][0]))
+ {
+ u16 mapSecId = sSpecialFlyAreas[i][1];
+ u8 spriteId;
+
+ GetRegionMapLocationPosition(mapSecId, &x, &y, &width, &height);
+ x = (x + 1) * 8;
+ y = (y + 2) * 8;
+ spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10);
+ if (spriteId != 64)
+ {
+ gSprites[spriteId].oam.size = 1;
+ gSprites[spriteId].callback = SpriteCB_FlyTargetIcons;
+ StartSpriteAnim(&gSprites[spriteId], 6);
+ gSprites[spriteId].data0 = mapSecId;
+ }
+ }
+ }
+}
+
+static void SpriteCB_FlyTargetIcons(struct Sprite *sprite)
+{
+ // Blink if our mapSecId is the one selected on the map
+ if (ewram0.regionMap.mapSecId == sprite->data0)
+ {
+ // Toggle visibility every 16 frames
+ sprite->data1++;
+ if (sprite->data1 > 16)
+ {
+ sprite->data1 = 0;
+ sprite->invisible = !sprite->invisible;
+ }
+ }
+ else
+ {
+ sprite->data1 = 16;
+ sprite->invisible = FALSE;
+ }
+}
+
+static void sub_80FC5B4(void)
+{
+ switch (ewram0.unk4)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ ewram0.unk4++;
+ break;
+ case 1:
+ if (UpdatePaletteFade() != 0)
+ break;
+ sub_80FC244(sub_80FC600);
+ break;
+ }
+}
+
+static void sub_80FC600(void)
+{
+ if (ewram0.unk4 == 0)
+ {
+ switch (sub_80FAB60())
+ {
+ case INPUT_EVENT_NONE:
+ case INPUT_EVENT_DPAD:
+ case INPUT_EVENT_2:
+ break;
+ case INPUT_EVENT_3:
+ PrintFlyTargetName();
+ break;
+ case INPUT_EVENT_A_BUTTON:
+ if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4)
+ {
+ m4aSongNumStart(SE_SELECT);
+ ewramA6E = 1;
+ sub_80FC244(sub_80FC69C);
+ }
+ break;
+ case INPUT_EVENT_B_BUTTON:
+ m4aSongNumStart(SE_SELECT);
+ ewramA6E = 0;
+ sub_80FC244(sub_80FC69C);
+ break;
+ }
+ }
+}
+
+static void sub_80FC69C(void)
+{
+ switch (ewram0.unk4)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ ewram0.unk4++;
+ break;
+ case 1:
+ if (UpdatePaletteFade() != 0)
+ break;
+ FreeRegionMapIconResources();
+ if (ewramA6E != 0)
+ {
+ switch (ewram0.regionMap.mapSecId)
+ {
+ case MAPSEC_SOUTHERN_ISLAND:
+ sub_8053538(22);
+ break;
+ case MAPSEC_BATTLE_TOWER:
+ sub_8053538(21);
+ break;
+ case MAPSEC_LITTLEROOT_TOWN:
+ sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13);
+ break;
+ case MAPSEC_EVER_GRANDE_CITY:
+ sub_8053538((FlagGet(0x854) && ewram0.regionMap.everGrandeCityArea == 0) ? 20 : 11);
+ break;
+ default:
+ if (sUnknown_083E7920[ewram0.regionMap.mapSecId][2] != 0)
+ sub_8053538(sUnknown_083E7920[ewram0.regionMap.mapSecId][2]);
+ else
+ warp1_set_2(sUnknown_083E7920[ewram0.regionMap.mapSecId][0], sUnknown_083E7920[ewram0.regionMap.mapSecId][1], -1);
+ break;
+ }
+ sub_80865BC();
+ }
+ else
+ {
+ SetMainCallback2(sub_808AD58);
+ }
+ break;
+ }
+}
diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c
new file mode 100644
index 000000000..d052992ad
--- /dev/null
+++ b/src/reset_rtc_screen.c
@@ -0,0 +1,496 @@
+#include "global.h"
+#include "event_data.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "rtc.h"
+#include "save.h"
+#include "sprite.h"
+#include "songs.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "strings2.h"
+#include "task.h"
+#include "text.h"
+#include "unknown_task.h"
+
+struct ResetRtcStruct
+{
+ /*0x0*/ u8 dataIndex;
+ /*0x2*/ u16 minVal;
+ /*0x4*/ u16 maxVal;
+ /*0x6*/ u8 left;
+ /*0x7*/ u8 right;
+ /*0x8*/ u8 unk8;
+};
+
+extern u16 gSaveFileStatus;
+
+extern struct ResetRtcStruct gUnknown_08376420[];
+extern struct SpritePalette gUnknown_083764BC;
+extern struct SpriteTemplate gSpriteTemplate_83764E8;
+extern u8 gUnknown_08376500[];
+
+void CB2_ResetRtcScreen(void);
+void VBlankCB_ResetRtcScreen(void);
+void Task_ResetRtcScreen(u8);
+
+void SpriteCB_ResetRtcCusor0(struct Sprite *sprite)
+{
+ int state = gTasks[sprite->data0].data[2];
+ if (state != sprite->data1)
+ {
+ sprite->data1 = state;
+ switch (state)
+ {
+ case 1:
+ sprite->invisible = FALSE;
+ sprite->animNum = 1;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 53;
+ sprite->pos1.y = 68;
+ break;
+ case 2:
+ sprite->invisible = FALSE;
+ sprite->animNum = 1;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 86;
+ sprite->pos1.y = 68;
+ break;
+ case 3:
+ sprite->invisible = FALSE;
+ sprite->animNum = 1;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 107;
+ sprite->pos1.y = 68;
+ break;
+ case 4:
+ sprite->invisible = FALSE;
+ sprite->animNum = 1;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 128;
+ sprite->pos1.y = 68;
+ break;
+ case 5:
+ sprite->invisible = FALSE;
+ sprite->animNum = 2;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 155;
+ sprite->pos1.y = 80;
+ break;
+ case 6:
+ DestroySprite(sprite);
+ break;
+ }
+ }
+}
+
+void SpriteCB_ResetRtcCusor1(struct Sprite *sprite)
+{
+ int state = gTasks[sprite->data0].data[2];
+ if (state != sprite->data1)
+ {
+ sprite->data1 = state;
+ switch (state)
+ {
+ case 1:
+ sprite->invisible = FALSE;
+ sprite->animNum = 0;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 53;
+ sprite->pos1.y = 92;
+ break;
+ case 2:
+ sprite->invisible = FALSE;
+ sprite->animNum = 0;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 86;
+ sprite->pos1.y = 92;
+ break;
+ case 3:
+ sprite->invisible = FALSE;
+ sprite->animNum = 0;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 107;
+ sprite->pos1.y = 92;
+ break;
+ case 4:
+ sprite->invisible = FALSE;
+ sprite->animNum = 0;
+ sprite->animDelayCounter = 0;
+ sprite->pos1.x = 128;
+ sprite->pos1.y = 92;
+ break;
+ case 5:
+ sprite->invisible = TRUE;
+ break;
+ case 6:
+ DestroySprite(sprite);
+ break;
+ }
+ }
+}
+
+void ResetRtcScreen_CreateCursor(u8 taskId)
+{
+ int spriteId;
+
+ LoadSpritePalette(&gUnknown_083764BC);
+
+ spriteId = CreateSpriteAtEnd(&gSpriteTemplate_83764E8, 53, 68, 0);
+ gSprites[spriteId].callback = SpriteCB_ResetRtcCusor0;
+ gSprites[spriteId].data0 = taskId;
+ gSprites[spriteId].data1 = -1;
+
+ spriteId = CreateSpriteAtEnd(&gSpriteTemplate_83764E8, 53, 68, 0);
+ gSprites[spriteId].callback = SpriteCB_ResetRtcCusor1;
+ gSprites[spriteId].data0 = taskId;
+ gSprites[spriteId].data1 = -1;
+}
+
+void ResetRtcScreen_FreeCursorPalette(void)
+{
+ FreeSpritePaletteByTag(gUnknown_083764BC.tag);
+}
+
+void ResetRtcScreen_HideChooseTimeWindow(void)
+{
+ MenuZeroFillWindowRect(3, 8, 25, 11);
+}
+
+void ResetRtcScreen_PrintTime(u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 seconds)
+{
+ u8 *dest = gStringVar4;
+ days %= 10000;
+ hours %= 24;
+ minutes %= 60;
+ seconds %= 60;
+ sub_8072C44(gStringVar1, days, 24, 1);
+ dest = StringCopy(dest, gStringVar1);
+ dest = StringCopy(dest, gOtherText_Day);
+ sub_8072C44(gStringVar1, hours, 18, 1);
+ dest = StringCopy(dest, gStringVar1);
+ dest = StringCopy(dest, gUnknown_08376500);
+ dest = ConvertIntToDecimalStringN(dest, minutes, STR_CONV_MODE_LEADING_ZEROS, 2);
+ dest = StringCopy(dest, gUnknown_08376500);
+ ConvertIntToDecimalStringN(dest, seconds, STR_CONV_MODE_LEADING_ZEROS, 2);
+ MenuPrint(gStringVar4, x, y);
+}
+
+void ResetRtcScreen_ShowChooseTimeWindow(u16 days, u8 hours, u8 minutes, u8 seconds)
+{
+ MenuDrawTextWindow(3, 8, 25, 11);
+ MenuPrint(gOtherText_OK, 20, 9);
+ ResetRtcScreen_PrintTime(4, 9, days, hours, minutes, seconds);
+}
+
+bool32 ResetRtcScreen_MoveTimeUpDown(s16 *val, int minVal, int maxVal, u16 keys)
+{
+ if (keys & DPAD_DOWN)
+ {
+ (*val)--;
+ if (*val < minVal)
+ *val = maxVal;
+ }
+ else if (keys & DPAD_UP)
+ {
+ (*val)++;
+ if (*val > maxVal)
+ *val = minVal;
+ }
+ else if (keys & DPAD_LEFT)
+ {
+ *val -= 10;
+ if (*val < minVal)
+ *val = maxVal;
+ }
+ else if (keys & DPAD_RIGHT)
+ {
+ *val += 10;
+ if (*val > maxVal)
+ *val = minVal;
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void Task_ResetRtc_3(u8 taskId)
+{
+ gTasks[taskId].data[0] = 1;
+}
+
+void Task_ResetRtc_2(u8 taskId)
+{
+ ResetRtcScreen_HideChooseTimeWindow();
+ ResetRtcScreen_FreeCursorPalette();
+ gTasks[taskId].func = Task_ResetRtc_3;
+}
+
+void Task_ResetRtc_1(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u8 selection = data[2];
+ struct ResetRtcStruct *selectionInfo = &gUnknown_08376420[selection - 1];
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = Task_ResetRtc_2;
+ data[1] = 0;
+ data[2] = 6;
+ PlaySE(SE_SELECT);
+ return;
+ }
+
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (selectionInfo->right)
+ {
+ data[2] = selectionInfo->right;
+ PlaySE(SE_SELECT);
+ return;
+ }
+ }
+
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (selectionInfo->left)
+ {
+ data[2] = selectionInfo->left;
+ PlaySE(SE_SELECT);
+ return;
+ }
+ }
+
+ if (selection == 5)
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gLocalTime.days = data[3];
+ gLocalTime.hours = data[4];
+ gLocalTime.minutes = data[5];
+ gLocalTime.seconds = data[6];
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = Task_ResetRtc_2;
+ data[1] = 1;
+ data[2] = 6;
+ }
+ }
+ else if (ResetRtcScreen_MoveTimeUpDown(&data[selectionInfo->dataIndex], selectionInfo->minVal, selectionInfo->maxVal, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN)))
+ {
+ PlaySE(SE_SELECT);
+ ResetRtcScreen_PrintTime(4, 9, data[3], data[4], data[5], data[6]);
+ }
+}
+
+void Task_ResetRtc_0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[0] = 0;
+ data[3] = gLocalTime.days;
+ data[4] = gLocalTime.hours;
+ data[5] = gLocalTime.minutes;
+ data[6] = gLocalTime.seconds;
+ ResetRtcScreen_ShowChooseTimeWindow(data[3], data[4], data[5], data[6]);
+ ResetRtcScreen_CreateCursor(taskId);
+ data[2] = 2;
+ gTasks[taskId].func = Task_ResetRtc_1;
+}
+
+void CB2_InitResetRtcScreen(void)
+{
+ u8 *addr;
+ u32 size;
+
+ REG_DISPCNT = 0;
+ SetVBlankCallback(NULL);
+
+ DmaClear16(3, PLTT, PLTT_SIZE);
+
+ addr = (u8 *)VRAM;
+ size = 0x18000;
+ while (1)
+ {
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill16(3, 0, addr, size);
+ break;
+ }
+ }
+
+ ResetOamRange(0, 128);
+ LoadOam();
+ remove_some_task();
+ dp12_8087EA4();
+ ResetSpriteData();
+ ResetTasks();
+ ResetPaletteFade();
+ SetUpWindowConfig(&gWindowConfig_81E6CE4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ REG_DISPCNT = 4352;
+ SetVBlankCallback(VBlankCB_ResetRtcScreen);
+ SetMainCallback2(CB2_ResetRtcScreen);
+ CreateTask(Task_ResetRtcScreen, 80);
+}
+
+void CB2_ResetRtcScreen(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void VBlankCB_ResetRtcScreen(void)
+{
+ ProcessSpriteCopyRequests();
+ LoadOam();
+ TransferPlttBuffer();
+}
+
+void ResetRtcScreen_ShowMessage(const u8 *str)
+{
+ MenuDisplayMessageBox();
+ MenuPrint(str, 2, 15);
+}
+
+void Task_ShowResetRtcPrompt(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ MenuZeroFillScreen();
+ MenuDrawTextWindow(0, 0, 20, 10);
+ MenuPrint(gSystemText_PresentTime, 1, 1);
+ ResetRtcScreen_PrintTime(
+ 1,
+ 3,
+ gLocalTime.days,
+ gLocalTime.hours,
+ gLocalTime.minutes,
+ gLocalTime.seconds);
+ MenuPrint(gSystemText_PreviousTime, 1, 5);
+ ResetRtcScreen_PrintTime(
+ 1,
+ 7,
+ gSaveBlock2.lastBerryTreeUpdate.days,
+ gSaveBlock2.lastBerryTreeUpdate.hours,
+ gSaveBlock2.lastBerryTreeUpdate.minutes,
+ gSaveBlock2.lastBerryTreeUpdate.seconds);
+ ResetRtcScreen_ShowMessage(gSystemText_ResetRTCPrompt);
+ data[0]++;
+ case 1:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyTask(taskId);
+ DoSoftReset();
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void Task_ResetRtcScreen(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 1, 0x10, 0, 0xFFFF);
+ data[0] = 1;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
+ {
+ ResetRtcScreen_ShowMessage(gSystemText_NoSaveFileNoTime);
+ data[0] = 5;
+ }
+ else
+ {
+ RtcCalcLocalTime();
+ data[1] = CreateTask(Task_ShowResetRtcPrompt, 80);
+ data[0] = 2;
+ }
+ }
+ break;
+ case 2:
+ if (gTasks[data[1]].isActive != TRUE)
+ {
+ MenuZeroFillScreen();
+ ResetRtcScreen_ShowMessage(gSystemText_PleaseResetTime);
+ gLocalTime = gSaveBlock2.lastBerryTreeUpdate;
+ data[1] = CreateTask(Task_ResetRtc_0, 80);
+ data[0] = 3;
+ }
+ break;
+ case 3:
+ if (gTasks[data[1]].data[0])
+ {
+ if (!gTasks[data[1]].data[1])
+ {
+ DestroyTask(data[1]);
+ data[0] = 2;
+ }
+ else
+ {
+ DestroyTask(data[1]);
+ RtcReset();
+ RtcCalcLocalTimeOffset(
+ gLocalTime.days,
+ gLocalTime.hours,
+ gLocalTime.minutes,
+ gLocalTime.seconds);
+ gSaveBlock2.lastBerryTreeUpdate = gLocalTime;
+ VarSet(VAR_DAYS, gLocalTime.days);
+ DisableResetRTC();
+ ResetRtcScreen_ShowMessage(gSystemText_ClockResetDataSave);
+ data[0] = 4;
+ }
+ }
+ break;
+ case 4:
+ if (TrySavingData(0) == TRUE)
+ {
+ ResetRtcScreen_ShowMessage(gSystemText_SaveCompleted);
+ PlaySE(SE_PINPON);
+ }
+ else
+ {
+ ResetRtcScreen_ShowMessage(gSystemText_SaveFailed);
+ PlaySE(SE_BOO);
+ }
+ data[0] = 5;
+ case 5:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 0x10, 0xFFFF);
+ data[0] = 6;
+ }
+ else
+ {
+ break;
+ }
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ DoSoftReset();
+ }
+ }
+}
diff --git a/src/rom3.c b/src/rom3.c
index 9d8d39f91..803bbf943 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "rom3.h"
#include "battle.h"
#include "battle_811DA74.h"
#include "battle_ai.h"
@@ -10,6 +9,7 @@
#include "items.h"
#include "link.h"
#include "pokemon.h"
+#include "rom3.h"
#include "rom_8094928.h"
#include "species.h"
#include "task.h"
@@ -24,9 +24,10 @@ extern u16 gBattleTypeFlags;
extern u16 gBattleWeather;
extern struct BattlePokemon gBattleMons[];
-extern u8 gUnknown_020238C4;
-extern u8 gUnknown_020238C5;
-extern u8 gUnknown_020238C6;
+static EWRAM_DATA u8 gUnknown_020238C4 = 0;
+static EWRAM_DATA u8 gUnknown_020238C5 = 0;
+static EWRAM_DATA u8 gUnknown_020238C6 = 0;
+
extern u32 gUnknown_020239FC;
extern u8 gBattleBufferA[][0x200];
extern u8 gBattleBufferB[][0x200];
@@ -49,13 +50,14 @@ extern u8 gUnknown_02024C78;
extern u8 gBattleOutcome;
extern u8 gActionSelectionCursor[];
extern u8 gMoveSelectionCursor[];
-extern u8 gBattleBuffersTransferData[];
extern u8 gBattleTextBuff1[];
extern u8 gBattleTextBuff2[];
extern u8 gBattleTextBuff3[];
extern void (*gBattleMainFunc)(void);
extern void (*gBattleBankFunc[])(void);
+u8 gBattleBuffersTransferData[0x170];
+
void sub_800B858(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -580,7 +582,7 @@ void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c)
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
-void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e)
+void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, void *e)
{
int i;
@@ -588,7 +590,7 @@ void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
for (i = 0; i < d; i++)
- gBattleBuffersTransferData[3 + i] = *(e++);
+ gBattleBuffersTransferData[3 + i] = *(u8*)(e++);
dp01_prepare_buffer(a, gBattleBuffersTransferData, d + 3);
}
@@ -613,7 +615,7 @@ void dp01_build_cmdbuf_x04_4_4_4(u8 a)
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
-void sub_800C704(u8 a, u8 b, u8 c)
+void EmitSwitchInAnim(u8 a, u8 b, u8 c)
{
gBattleBuffersTransferData[0] = 5;
gBattleBuffersTransferData[1] = b;
@@ -622,7 +624,7 @@ void sub_800C704(u8 a, u8 b, u8 c)
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x06_a(u8 a, u8 b)
+void EmitReturnPokeToBall(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 6;
gBattleBuffersTransferData[1] = b;
@@ -638,7 +640,7 @@ void dp01_build_cmdbuf_x07_7_7_7(u8 a)
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x08_8_8_8(u8 a)
+void EmitTrainerSlide(u8 a)
{
gBattleBuffersTransferData[0] = 8;
gBattleBuffersTransferData[1] = 8;
@@ -683,7 +685,7 @@ void dp01_build_cmdbuf_x0C_C_C_C(u8 a)
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x0D_a(u8 a, u8 b)
+void EmitBallThrowAnim(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 13;
gBattleBuffersTransferData[1] = b;
@@ -701,7 +703,7 @@ void unref_sub_800C828(u8 a, u8 b, u8 *c)
dp01_prepare_buffer(a, gBattleBuffersTransferData, b * 3 + 2);
}
-void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g)
+void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g)
{
gBattleBuffersTransferData[0] = 15;
gBattleBuffersTransferData[1] = b;
@@ -727,7 +729,7 @@ void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g)
}
gBattleBuffersTransferData[14] = 0;
gBattleBuffersTransferData[15] = 0;
- memcpy(&gBattleBuffersTransferData[16], g, 0x1C);
+ memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g));
dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x2C);
}
@@ -904,7 +906,7 @@ _0800CA64: .4byte gBattleTextBuff1\n\
#endif
__attribute__((naked))
-void EmitPrintStringPlayerOnly()
+void EmitPrintStringPlayerOnly(u8 a, u16 stringID)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -1058,7 +1060,7 @@ void sub_800CBE0(u8 a, u8 *b)
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e)
+void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e)
{
int i;
@@ -1080,21 +1082,25 @@ void dp01_build_cmdbuf_x17_17_17_17(u8 a)
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
-void EmitHealthBarUpdate(u8 a, s16 b)
+// FIXME: I think this function is supposed to take s16 as its second argument,
+// but battle_4.c expects u16
+void EmitHealthBarUpdate(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 24;
gBattleBuffersTransferData[1] = 0;
- gBattleBuffersTransferData[2] = b;
- gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8;
+ gBattleBuffersTransferData[2] = (s16)b;
+ gBattleBuffersTransferData[3] = ((s16)b & 0xFF00) >> 8;
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
-void EmitExpBarUpdate(u8 a, u8 b, s16 c)
+// FIXME: I think this function is supposed to take s16 as its third argument,
+// but battle_4.c expects u16
+void EmitExpBarUpdate(u8 a, u8 b, u16 c)
{
gBattleBuffersTransferData[0] = 25;
gBattleBuffersTransferData[1] = b;
- gBattleBuffersTransferData[2] = c;
- gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
+ gBattleBuffersTransferData[2] = (s16)c;
+ gBattleBuffersTransferData[3] = ((s16)c & 0xFF00) >> 8;
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
@@ -1282,7 +1288,7 @@ void EmitEffectivenessSound(u8 a, u16 b)
dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
}
-void sub_800D074(u8 a, u16 b)
+void EmitPlaySound(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 44;
gBattleBuffersTransferData[1] = b;
diff --git a/src/rom4.c b/src/rom4.c
index bfc8e0e44..f9006efba 100644
--- a/src/rom4.c
+++ b/src/rom4.c
@@ -60,23 +60,23 @@ struct UnkTVStruct
u32 tv_field_4;
};
-extern struct WarpData gUnknown_020297F0;
-extern struct WarpData gUnknown_020297F8;
-extern struct WarpData gUnknown_02029800;
-extern struct WarpData gUnknown_02029808;
-extern struct UnkPlayerStruct gUnknown_02029810;
-extern u16 gUnknown_02029814;
-extern bool8 gUnknown_02029816;
-extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
-
-extern u8 gUnknown_03000580[];
-extern u16 (*gUnknown_03000584)(u32);
-extern u8 gUnknown_03000588;
-
-extern u16 word_3004858;
-extern void (*gFieldCallback)(void);
-extern u8 gUnknown_03004860;
-extern u8 gFieldLinkPlayerCount;
+EWRAM_DATA struct WarpData gUnknown_020297F0 = {0};
+EWRAM_DATA struct WarpData gUnknown_020297F8 = {0};
+EWRAM_DATA struct WarpData gUnknown_02029800 = {0};
+EWRAM_DATA struct WarpData gUnknown_02029808 = {0};
+EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0};
+EWRAM_DATA u16 gUnknown_02029814 = 0;
+EWRAM_DATA bool8 gUnknown_02029816 = FALSE;
+EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
+
+static u8 gUnknown_03000580[4];
+static u16 (*gUnknown_03000584)(u32);
+static u8 gUnknown_03000588;
+
+u16 word_3004858;
+void (*gFieldCallback)(void);
+u8 gUnknown_03004860;
+u8 gFieldLinkPlayerCount;
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
@@ -993,12 +993,12 @@ bool8 is_light_level_8_or_9(u8 a1)
u8 unref_sub_8054260(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->name;
+ return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId;
}
u8 sav1_map_get_name(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->name;
+ return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId;
}
u8 sav1_map_get_battletype(void)
diff --git a/src/rom6.c b/src/rom6.c
index 759aed93f..ff032b6c2 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -14,13 +14,13 @@
#include "task.h"
extern u16 gScriptLastTalked;
-extern u32 gUnknown_0202FF84[];
-extern struct MapPosition gUnknown_0203923C;
extern void (*gFieldCallback)(void);
extern u8 gLastFieldPokeMenuOpened;
extern void (*gUnknown_03005CE4)(void);
extern u8 UseRockSmashScript[];
+EWRAM_DATA struct MapPosition gUnknown_0203923C = {0};
+
static void task08_080C9820(u8);
static void sub_810B3DC(u8);
static void sub_810B428(u8);
diff --git a/src/rotating_gate.c b/src/rotating_gate.c
index d12a21240..bb3c31dfc 100644
--- a/src/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -565,9 +565,9 @@ static const u8 sRotatingGate_ArmLayout[][GATE_ARM_WEST + 1][GATE_ARM_MAX_LENGTH
},
};
-extern u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX];
-extern const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig;
-extern u8 gRotatingGate_PuzzleCount;
+static EWRAM_DATA u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX] = {0};
+static EWRAM_DATA const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig = NULL;
+static EWRAM_DATA u8 gRotatingGate_PuzzleCount = 0;
static int GetCurrentMapRotatingGatePuzzleType(void)
{
diff --git a/src/save.c b/src/save.c
index 570210fb0..adf39268e 100644
--- a/src/save.c
+++ b/src/save.c
@@ -11,21 +11,23 @@
#define GETBLOCKOFFSET(n) (0xF80 * (n - 1))
#define TOTALNUMSECTORS ((ARRAY_COUNT(gSaveSectionLocations) * 2) + (ARRAY_COUNT(gHallOfFameSaveSectionLocations) * 2)) // there are 2 slots, so double each array count and get the sum.
-extern u32 gLastSaveSectorStatus; // used but in an unferenced function, so unused
-extern u16 gLastWrittenSector;
-extern u32 gLastSaveCounter;
-extern u16 gLastKnownGoodSector;
-extern u32 gDamagedSaveSectors;
-extern u32 gSaveCounter;
extern struct SaveSection unk_2000000; // slow save RAM
-extern struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM.
-extern u16 gUnknown_03005EB4;
-extern u16 gSaveFileStatus;
-extern u32 gGameContinueCallback;
+
+u16 gLastWrittenSector;
+u32 gLastSaveCounter;
+u16 gLastKnownGoodSector;
+u32 gDamagedSaveSectors;
+u32 gSaveCounter;
+struct SaveSection *gFastSaveSection; // the pointer is in fast IWRAM but may sometimes point to the slower EWRAM.
+u16 gUnknown_03005EB4;
+u16 gSaveFileStatus;
+u32 gGameContinueCallback;
extern struct PokemonStorage gPokemonStorage;
extern struct HallOfFame gHallOfFame;
+static EWRAM_DATA u32 gLastSaveSectorStatus = 0; // used but in an unferenced function, so unused
+
const struct SaveSectionLocation gSaveSectionLocations[] =
{
{((u8 *) &gSaveBlock2) + GETBLOCKOFFSET(1), GETCHUNKSIZE(gSaveBlock2, 1)},
@@ -672,9 +674,9 @@ u8 sub_8125E2C(void)
return 0;
}
-u8 sub_8125E6C(void)
+bool8 sub_8125E6C(void)
{
- u8 retVal = 0;
+ u8 retVal = FALSE;
u16 val = ++gUnknown_03005EB4;
if (val <= 4)
{
@@ -684,7 +686,7 @@ u8 sub_8125E6C(void)
else
{
sub_81257F0(val, gSaveSectionLocations);
- retVal = 1;
+ retVal = TRUE;
}
if (gDamagedSaveSectors)
DoSaveFailedScreen(1);
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index a64b3eb5f..b91e8b5bf 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -22,17 +22,11 @@
#define CLOCK_WIN_TOP (MSG_WIN_TOP - 4)
-struct SaveFailedClockStruct
-{
- bool16 clockRunning;
- u16 timer; // appears to be unused, the only case its "used" cannot be reached normally
- u8 unused[0xE]; // appears to be unused space. alternatively, there could have been multiple clock structs. however, neither of these cases are fulfilled, so the purpose of this space is unknown. one theory is that there is room for 3 more clock structs (2 16-bit values), so its possible GF intended there to be support for link-based save failed screens in case the synchronization failed, or it in fact was present in an earlier build but taken out for reasons.
-};
-
extern u8 unk_2000000[];
-extern u16 gSaveFailedType;
-extern struct SaveFailedClockStruct gSaveFailedClockInfo;
+static EWRAM_DATA u16 gSaveFailedType = 0;
+static EWRAM_DATA u16 gSaveFailedClockInfo[9] = {0};
+
extern u32 gDamagedSaveSectors;
extern u32 gGameContinueCallback;
@@ -83,7 +77,7 @@ void DoSaveFailedScreen(u8 saveType)
{
SetMainCallback2(CB2_SaveFailedScreen);
gSaveFailedType = saveType;
- gSaveFailedClockInfo.clockRunning = FALSE;
+ gSaveFailedClockInfo[0] = FALSE;
}
static void VBlankCB(void)
@@ -159,7 +153,7 @@ static void CB2_WipeSave(void)
{
u8 wipeTries = 0;
- gSaveFailedClockInfo.clockRunning = TRUE;
+ gSaveFailedClockInfo[0] = TRUE;
while (gDamagedSaveSectors != 0 && wipeTries < 3) // while there are still attempts left, keep trying to fix the save sectors.
{
@@ -208,7 +202,7 @@ static void CB2_WipeSave(void)
static void CB2_GameplayCannotBeContinued(void)
{
- gSaveFailedClockInfo.clockRunning = FALSE;
+ gSaveFailedClockInfo[0] = FALSE;
if (gMain.newKeys & A_BUTTON)
{
@@ -221,7 +215,7 @@ static void CB2_GameplayCannotBeContinued(void)
static void CB2_FadeAndReturnToTitleScreen(void)
{
- gSaveFailedClockInfo.clockRunning = FALSE;
+ gSaveFailedClockInfo[0] = FALSE;
if (gMain.newKeys & A_BUTTON)
{
@@ -255,7 +249,7 @@ static void VBlankCB_UpdateClockGraphics(void)
gMain.oamBuffer[0].x = 112;
gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8;
- if (gSaveFailedClockInfo.clockRunning != FALSE)
+ if (gSaveFailedClockInfo[0] != FALSE)
{
gMain.oamBuffer[0].tileNum = sClockFrames[n][0];
gMain.oamBuffer[0].matrixNum = (sClockFrames[n][2] << 4) | (sClockFrames[n][1] << 3);
@@ -267,8 +261,8 @@ static void VBlankCB_UpdateClockGraphics(void)
CpuFastCopy(gMain.oamBuffer, (void *)OAM, 4);
- if (gSaveFailedClockInfo.timer) // maybe was used for debugging?
- gSaveFailedClockInfo.timer--;
+ if (gSaveFailedClockInfo[1]) // maybe was used for debugging?
+ gSaveFailedClockInfo[1]--;
}
static bool8 VerifySectorWipe(u16 sector)
diff --git a/src/save_menu_util.c b/src/save_menu_util.c
index b2dd662d6..a2d17bd36 100644
--- a/src/save_menu_util.c
+++ b/src/save_menu_util.c
@@ -70,7 +70,7 @@ void PrintSaveMapName(s16 x, s16 y)
{
char name[32];
- CopyMapName(name, gMapHeader.name);
+ CopyMapName(name, gMapHeader.regionMapSectionId);
MenuPrint(name, x, y);
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 45552f2fa..66578f350 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -48,12 +48,14 @@ typedef u16 (*SpecialFunc)(void);
typedef void (*NativeFunc)(void);
extern u32 gUnknown_0202E8AC;
-extern u32 gUnknown_0202E8B0;
-extern u16 gUnknown_0202E8B4;
-extern u16 gUnknown_0202E8B6;
-extern u16 gUnknown_0202E8B8;
-extern u16 gUnknown_0202E8BA;
-extern u16 gUnknown_0202E8BC;
+
+static EWRAM_DATA u32 gUnknown_0202E8B0 = 0;
+static EWRAM_DATA u16 gUnknown_0202E8B4 = 0;
+static EWRAM_DATA u16 gUnknown_0202E8B6 = 0;
+static EWRAM_DATA u16 gUnknown_0202E8B8 = 0;
+static EWRAM_DATA u16 gUnknown_0202E8BA = 0;
+static EWRAM_DATA u16 gUnknown_0202E8BC = 0;
+
extern u16 gSpecialVar_0x8000;
extern u16 gSpecialVar_0x8001;
extern u16 gSpecialVar_0x8002;
@@ -61,8 +63,6 @@ extern u16 gSpecialVar_0x8004;
extern u16 gScriptResult;
-extern u32 gUnknown_0202FF84[];
-
extern u16 gScriptContestCategory;
extern SpecialFunc gSpecials[];
@@ -280,7 +280,7 @@ bool8 ScrCmd_die(struct ScriptContext *ctx)
bool8 ScrCmd_setbyte(struct ScriptContext *ctx)
{
u8 value = ScriptReadByte(ctx);
- sub_8126160(value);
+ SetMysteryEventScriptStatus(value);
return FALSE;
}
diff --git a/src/script.c b/src/script.c
index c27eb22fe..8f12da437 100644
--- a/src/script.c
+++ b/src/script.c
@@ -4,8 +4,7 @@
#define RAM_SCRIPT_MAGIC 51
-extern u8 *gUnknown_0202E8AC;
-extern u32 gUnknown_0202E8B0;
+EWRAM_DATA u8 *gUnknown_0202E8AC = NULL;
static u8 sScriptContext1Status;
static struct ScriptContext sScriptContext1;
@@ -53,7 +52,7 @@ void StopScript(struct ScriptContext *ctx)
ctx->scriptPtr = 0;
}
-u8 RunScript(struct ScriptContext *ctx)
+u8 RunScriptCommand(struct ScriptContext *ctx)
{
if (ctx->mode == 0)
return 0;
@@ -192,7 +191,7 @@ bool8 ScriptContext2_RunScript(void)
ScriptContext2_Enable();
- if (!RunScript(&sScriptContext1))
+ if (!RunScriptCommand(&sScriptContext1))
{
sScriptContext1Status = 2;
ScriptContext2_Disable();
@@ -225,7 +224,7 @@ void ScriptContext2_RunNewScript(const u8 *ptr)
{
InitScriptContext(&sScriptContext2, &gScriptCmdTable, &gScriptCmdTableEnd);
SetupBytecodeScript(&sScriptContext2, ptr);
- while (RunScript(&sScriptContext2) == 1)
+ while (RunScriptCommand(&sScriptContext2) == 1)
;
}
diff --git a/src/script_movement.c b/src/script_movement.c
index 31143ed6f..e25b60a3c 100644
--- a/src/script_movement.c
+++ b/src/script_movement.c
@@ -5,7 +5,7 @@
#include "task.h"
#include "util.h"
-extern u8 *gUnknown_020384F8[];
+static EWRAM_DATA u8 *gUnknown_020384F8[16] = {0};
static void sub_80A2198(u8);
static u8 sub_80A21E0(void);
diff --git a/src/secret_base.c b/src/secret_base.c
index d88d2c66a..4e8331f5c 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -205,7 +205,7 @@ void sub_80BB8CC(void)
memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7);
StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength);
gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender;
- VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name);
+ VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId);
}
void sub_80BB970(struct MapEvents *events)
diff --git a/src/sound.c b/src/sound.c
index c9c4916b0..8d23b7d7a 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -17,8 +17,9 @@ struct Fanfare
u32 SpeciesToCryId(u32);
extern u16 gBattleTypeFlags;
-extern struct MusicPlayerInfo *gMPlay_PokemonCry;
-extern u8 gPokemonCryBGMDuckingCounter;
+
+static EWRAM_DATA struct MusicPlayerInfo *gMPlay_PokemonCry = NULL;
+static EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0;
static u16 sCurrentMapMusic;
static u16 sNextMapMusic;
@@ -26,7 +27,8 @@ static u8 sMapMusicState;
static u8 sMapMusicFadeInSpeed;
static u16 sFanfareCounter;
-extern bool8 gDisableMusic;
+bool8 gDisableMusic;
+
extern struct MusicPlayerInfo gMPlay_BGM;
extern struct MusicPlayerInfo gMPlay_SE1;
extern struct MusicPlayerInfo gMPlay_SE2;
diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c
index 13a6f6f3e..d97ae6d86 100755..100644
--- a/src/sound_check_menu.c
+++ b/src/sound_check_menu.c
@@ -57,18 +57,19 @@ extern struct ToneData voicegroup_8453190[];
extern struct ToneData voicegroup_84549C0[];
extern struct ToneData voicegroup_8453790[];
-extern int gUnknown_020387B4[9];
-
-extern s8 gUnknown_020387B3;
-extern u8 gUnknown_020387B1;
-extern u8 gUnknown_020387B2;
-extern u8 gUnknown_020387D8;
-extern u8 gUnknown_020387D9;
-extern u8 gUnknown_020387B0;
+static EWRAM_DATA u8 gUnknown_020387B0 = 0;
+static EWRAM_DATA u8 gUnknown_020387B1 = 0;
+static EWRAM_DATA u8 gUnknown_020387B2 = 0;
+static EWRAM_DATA s8 gUnknown_020387B3 = 0;
+static EWRAM_DATA int gUnknown_020387B4[9] = {0};
+static EWRAM_DATA u8 gUnknown_020387D8 = 0;
+static EWRAM_DATA u8 gUnknown_020387D9 = 0;
+
extern u16 gUnknown_03005D34;
extern u8 gUnknown_03005E98;
-extern struct MusicPlayerInfo *gUnknown_03005D30;
+struct MusicPlayerInfo *gUnknown_03005D30;
+
extern struct MusicPlayerInfo gMPlay_BGM;
void sub_80BA258(u8);
diff --git a/src/start_menu.c b/src/start_menu.c
index e05f3a999..411690aff 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -51,9 +51,11 @@ static bool8 savingComplete;
extern bool8 gDifferentSaveFile;
extern u16 gSaveFileStatus;
extern u16 gScriptResult;
-extern u8 (*gCallback_03004AE8)(void);
+
extern u8 gUnknown_03004860;
+u8 (*gCallback_03004AE8)(void);
+
EWRAM_DATA static u8 sStartMenuCursorPos = 0;
EWRAM_DATA static u8 sNumStartMenuActions = 0;
EWRAM_DATA static u8 sCurrentStartMenuActions[10] = {0};
diff --git a/src/task.c b/src/task.c
index 3c28a66d9..7bd2b5937 100644
--- a/src/task.c
+++ b/src/task.c
@@ -11,6 +11,9 @@ struct Task gTasks[ACTIVE_SENTINEL];
static void InsertTask(u8 newTaskId);
static u8 FindFirstActiveTask();
+// Unused string
+const u8 sTaskOverString[] = _("TASK OVER\nタスクがオーバーしました");
+
void ResetTasks()
{
u8 taskId;
diff --git a/src/title_screen.c b/src/title_screen.c
index 664e07978..ab0f1d505 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -30,14 +30,17 @@
#define VERSION_BANNER_BYTES 0x2000
#define VERSION_BANNER_LEFT_X 108
#define VERSION_BANNER_RIGHT_X 172
-#define VERSION_BANNER_Y 44
+#ifdef SAPPHIRE
+#define VERSION_BANNER_Y_GOAL 83
+#else
#define VERSION_BANNER_Y_GOAL 84
+#endif
+#define VERSION_BANNER_Y (VERSION_BANNER_Y_GOAL - 40)
#define START_BANNER_X DISPLAY_WIDTH / 2 - 2
#endif
extern u8 gReservedSpritePaletteCount;
extern struct MusicPlayerInfo gMPlay_BGM;
-extern u8 gUnknown_0202F7E4;
extern u16 gUnknown_030041B4;
extern u16 gUnknown_030042C0;
extern const u8 gUnknown_08E9D8CC[];
@@ -47,6 +50,8 @@ extern const u8 gVersionTiles[];
extern const u8 gTitleScreenPressStart_Gfx[];
extern const u16 gTitleScreenLogoShinePalette[];
+static EWRAM_DATA u8 gUnknown_0202F7E4 = 0;
+
#ifdef SAPPHIRE
static const u16 sLegendaryMonPalettes[][16] =
{
@@ -331,7 +336,9 @@ static const struct CompressedSpriteSheet sPokemonLogoShineSpriteSheet[] =
#define LEGENDARY_MARKING_COLOR(c) RGB(0, 0, (c))
#endif
-#ifdef SAPPHIRE
+#if defined(GERMAN) && defined(SAPPHIRE)
+#define PLTT_BUFFER_INDEX 9
+#elif defined(SAPPHIRE)
#define PLTT_BUFFER_INDEX 26
#else
#define PLTT_BUFFER_INDEX 21
diff --git a/src/trader.c b/src/trader.c
new file mode 100644
index 000000000..ea06058e9
--- /dev/null
+++ b/src/trader.c
@@ -0,0 +1,261 @@
+#include "global.h"
+#include "decoration.h"
+#include "decoration_inventory.h"
+#include "event_data.h"
+#include "main.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+
+static const u8 * const gUnknown_083F62D8[] =
+{
+ SecretBaseText_Tristan,
+ SecretBaseText_Philip,
+ SecretBaseText_Dennis,
+ SecretBaseText_Roberto,
+};
+
+static const u8 gTraderDecorations[] =
+{
+ DECOR_DUSKULL_DOLL,
+ DECOR_BALL_CUSHION,
+ DECOR_TIRE,
+ DECOR_PRETTY_FLOWERS,
+};
+
+void sub_810993C(void)
+{
+ u8 i, j;
+ u8 buffer[12];
+ struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+
+ for (i = 0; i < 3; i++)
+ {
+ for (j = i + 1; j < 4; j++)
+ {
+ if (trader->unk1[i] == 0)
+ {
+ u8 temp = trader->unk1[i];
+ trader->unk1[i] = trader->unk1[j];
+ trader->unk1[j] = temp;
+ StringCopy(buffer, trader->unk5[i]);
+ StringCopy(trader->unk5[i], trader->unk5[j]);
+ StringCopy(trader->unk5[j], buffer);
+ }
+ }
+ }
+}
+
+void sub_81099CC(void)
+{
+ u8 i;
+ struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+
+ trader->unk0 = 2;
+ trader->unk31 = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ StringCopy(trader->unk5[i], gUnknown_083F62D8[i]);
+ trader->unk1[i] = gTraderDecorations[i];
+ }
+
+ sub_810993C();
+}
+
+void sub_8109A20(void)
+{
+ struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ trader->unk31 = 0;
+}
+
+void sub_8109A30(u8 value)
+{
+ VarSet(VAR_RECYCLE_GOODS, value);
+}
+
+void sub_8109A48(u8 taskId)
+{
+ u8 i;
+ u8 numChoices = 1;
+ u8 numDecorations = 0;
+ struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (trader->unk1[i])
+ {
+ numChoices++;
+ }
+ }
+
+ MenuDrawTextWindow(0, 1, 12, numChoices * 2 + 2);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (trader->unk1[i])
+ {
+ if (trader->unk1[i] > DECOR_REGISTEEL_DOLL)
+ {
+ MenuPrint(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2);
+ }
+ else
+ {
+ MenuPrint(gDecorations[trader->unk1[i]].name, 1, numDecorations * 2 + 2);
+ }
+
+ numDecorations++;
+ }
+ }
+
+ MenuPrint(gOtherText_CancelNoTerminator, 1, numDecorations * 2 + 2);
+ InitMenu(0, 1, 2, numChoices, 0, 11);
+ gTasks[taskId].data[1] = numDecorations;
+}
+
+void sub_8109B34(u8 taskId, u8 decorationId)
+{
+ if (decorationId > DECOR_REGISTEEL_DOLL)
+ {
+ gSpecialVar_0x8004 = 0xFFFF;
+ }
+ else
+ {
+ gSpecialVar_0x8004 = decorationId;
+ }
+
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(0, 1, 12, 12);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+void sub_8109B7C(u8 taskId)
+{
+ struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(-1);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ MoveMenuCursor(1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gSpecialVar_0x8005 = GetMenuCursorPos();
+ if (gTasks[taskId].data[1] == gSpecialVar_0x8005)
+ {
+ sub_8109B34(taskId, 0);
+ }
+ else
+ {
+ StringCopy(gStringVar1, trader->unk5[gSpecialVar_0x8005]);
+ sub_8109B34(taskId, trader->unk1[gSpecialVar_0x8005]);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8109B34(taskId, 0);
+ }
+}
+
+void sub_8109C44(void)
+{
+ struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ gScriptResult = trader->unk31;
+}
+
+void sub_8109C58(void)
+{
+ u8 i;
+
+ for (i = 0; i < 8; i++)
+ {
+ if (sub_8134194(i))
+ {
+ gScriptResult = FALSE;
+ return;
+ }
+ }
+ gScriptResult = TRUE;
+}
+
+void sub_8109C90(void)
+{
+ gScriptResult = FALSE;
+ if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category
+ && sub_8133F9C(gDecorations[gSpecialVar_0x8004].category) == -1)
+ {
+ sub_80FE7D4(gStringVar2, gDecorations[gSpecialVar_0x8004].category);
+ gScriptResult = TRUE;
+ }
+}
+
+void sub_8109CF0(void)
+{
+ CreateTask(sub_80FE7A8, 0);
+}
+
+void sub_8109D04(u8 taskId)
+{
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(0, 0, 29, 19);
+ DestroyVerticalScrollIndicator(0);
+ DestroyVerticalScrollIndicator(1);
+ sub_80F9520(gUnknown_020388F7, 8);
+ BuyMenuFreeMemory();
+ if (sub_80FEFA4() == TRUE)
+ {
+ gSpecialVar_0x8006 = gUnknown_020388D0[gUnknown_020388F5];
+ StringCopy(gStringVar3, gDecorations[gSpecialVar_0x8004].name);
+ StringCopy(gStringVar2, gDecorations[gSpecialVar_0x8006].name);
+ }
+ else
+ {
+ gSpecialVar_0x8006 = 0xFFFF;
+ }
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+void sub_8109DAC(u8 taskId)
+{
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(0, 0, 29, 19);
+ gSpecialVar_0x8006 = 0;
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+void sub_8109DE0(void)
+{
+ struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+
+ sub_81340A8(gSpecialVar_0x8006);
+ IsThereStorageSpaceForDecoration(gSpecialVar_0x8004);
+ StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName);
+ trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006;
+ sub_810993C();
+ trader->unk31 = 1;
+}
+
+void sub_8109E34(void)
+{
+ u8 taskId = CreateTask(sub_8109B7C, 0);
+ sub_8109A48(taskId);
+}
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 876a3b426..626c5a7bf 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -3,6 +3,7 @@
#include "easy_chat.h"
#include "event_data.h"
#include "field_effect.h"
+#include "graphics.h"
#include "link.h"
#include "main.h"
#include "menu.h"
@@ -50,26 +51,60 @@ extern u8 ewram[];
#define ewram0 (*(struct Struct2000000 *)(ewram))
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
-extern struct TrainerCard gTrainerCards[4];
+
+EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0};
struct UnknownStruct1
{
- u8 filler0[0x780];
+ u16 filler0[0x3C0];
u16 unk780[160];
};
extern struct UnknownStruct1 gUnknown_03004DE0;
-extern u8 gUnknown_083B5EF4[];
-extern u16 *gUnknown_083B5EF8[5];
-extern u16 gUnknown_083B5F0C[];
-extern u16 gBadgesPalette[];
-extern u16 gUnknown_083B5F4C[];
+extern const u8 gBadgesTiles[];
+extern const u16 gUnknown_083B5F0C[];
+extern const u16 gBadgesPalette[];
+extern const u16 gUnknown_083B5F4C[];
+extern const u16 gUnknown_083B5F6C[];
+extern const u16 gUnknown_083B5F8C[][4];
+
+const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp");
+// XXX: what is this?
+u8 *const ewram_ = ewram;
+
+bool8 sub_8093864(struct Task *);
+bool8 sub_80938A8(struct Task *);
+bool8 sub_80938CC(struct Task *);
+bool8 sub_8093918(struct Task *);
+bool8 sub_8093938(struct Task *);
+bool8 sub_8093954(struct Task *);
+bool8 sub_8093980(struct Task *);
+
+bool8 (*const gUnknown_083B5EBC[])(struct Task *) =
+{
+ sub_8093864,
+ sub_80938A8,
+ sub_80938CC,
+ sub_8093918,
+ sub_8093938,
+ sub_8093954,
+ sub_8093980,
+};
-extern u16 gUnknown_08E8CFC0[];
-extern u16 gUnknown_08E8D9C0[];
+bool8 sub_8093AA0(struct Task *);
+bool8 sub_8093AF0(struct Task *);
+bool8 sub_8093C0C(struct Task *);
+bool8 sub_8093C38(struct Task *);
+bool8 sub_8093D50(struct Task *);
-extern bool8 (*const gUnknown_083B5EBC[])(struct Task *);
-extern bool8 (*const gUnknown_083B5ED8[])(struct Task *);
+bool8 (*const gUnknown_083B5ED8[])(struct Task *) =
+{
+ sub_8093AA0,
+ sub_8093AF0,
+ sub_8093C0C,
+ sub_8093C38,
+ sub_8093D50,
+};
// FIXME: Other signature than on save_menu_util.h
void FormatPlayTime(u8 *playtime, u16 hours, u16 minutes, s16 colon);
@@ -171,38 +206,35 @@ static void sub_8093174(void)
case 0:
sub_8093534();
sub_8093688();
- gMain.state += 1;
+ gMain.state++;
break;
case 1:
sub_8093598();
- gMain.state += 1;
+ gMain.state++;
break;
case 2:
sub_80935EC();
- gMain.state += 1;
+ gMain.state++;
break;
case 3:
sub_8093610();
sub_80937A4();
- gMain.state += 1;
+ gMain.state++;
break;
case 4:
sub_80937BC();
- gMain.state += 1;
+ gMain.state++;
case 5:
- if (MultistepInitMenuWindowContinue() == FALSE)
- {
- return;
- }
- gMain.state += 1;
+ if (MultistepInitMenuWindowContinue())
+ gMain.state++;
break;
case 6:
sub_80937F0();
- gMain.state += 1;
+ gMain.state++;
break;
case 7:
sub_80937D8();
- gMain.state += 1;
+ gMain.state++;
break;
case 8:
nullsub_15();
@@ -376,22 +408,22 @@ static u8 sub_80934F4(struct TrainerCard *trainerCard)
if (trainerCard->firstHallOfFameA != 0 || trainerCard->firstHallOfFameB != 0 || trainerCard->firstHallOfFameC != 0)
{
- value += 1;
+ value++;
}
if (trainerCard->var_3)
{
- value += 1;
+ value++;
}
if (trainerCard->battleTowerLosses > 49)
{
- value += 1;
+ value++;
}
if (trainerCard->var_4)
{
- value += 1;
+ value++;
}
return value;
@@ -470,21 +502,14 @@ static void sub_8093688(void)
u8 i;
sub_8093324();
-
- ewram0.var_0 = FALSE;
- ewram0.var_3 = FALSE;
+ ewram0.var_0 = 0;
+ ewram0.var_3 = 0;
ewram0.var_4 = FALSE;
-
ewram0.var_2 = ewram0.var_64.stars;
-
- ewram0.var_5 = FALSE;
- ewram0.var_6 = FALSE;
-
+ ewram0.var_5 = 0;
+ ewram0.var_6 = 0;
for (i = 0; i < 4; i++)
- {
sub_80EB3FC(ewram0.var_20[i], ewram0.var_64.var_28[i]);
- }
-
sub_80936D4();
}
@@ -497,61 +522,43 @@ void sub_80936D4(void)
ewram0.var_b = 0;
ewram0.var_c = 0;
ewram0.var_d = 0;
-
memset(ewram0.var_e, 0, sizeof(ewram0.var_e));
if (ewram0.var_64.hasPokedex)
- {
- ewram0.var_7 += 1;
- }
+ ewram0.var_7++;
- if (ewram0.var_64.firstHallOfFameA != 0 || ewram0.var_64.firstHallOfFameB != 0 ||
- ewram0.var_64.firstHallOfFameC != 0)
- {
- ewram0.var_8 += 1;
- }
+ if (ewram0.var_64.firstHallOfFameA != 0
+ || ewram0.var_64.firstHallOfFameB != 0
+ || ewram0.var_64.firstHallOfFameC != 0)
+ ewram0.var_8++;
if (ewram0.var_64.linkBattleWins != 0 || ewram0.var_64.linkBattleLosses != 0)
- {
- ewram0.var_9 += 1;
- }
+ ewram0.var_9++;
if (ewram0.var_64.battleTowerWins != 0 || ewram0.var_64.battleTowerLosses != 0)
- {
- ewram0.var_a += 1;
- }
+ ewram0.var_a++;
if (ewram0.var_64.contestsWithFriends != 0)
- {
- ewram0.var_b += 1;
- }
+ ewram0.var_b++;
if (ewram0.var_64.pokeblocksWithFriends != 0)
- {
- ewram0.var_c += 1;
- }
+ ewram0.var_c++;
if (ewram0.var_64.pokemonTrades != 0)
- {
- ewram0.var_d += 1;
- }
+ ewram0.var_d++;
if (!ewram0.var_1)
{
u32 badgeFlag;
- int i;
+ int i = 0;
- i = 0;
badgeFlag = BADGE01_GET;
while (1)
{
if (FlagGet(badgeFlag))
- {
- ewram0.var_e[i] += 1;
- }
-
- badgeFlag += 1;
- i += 1;
+ ewram0.var_e[i]++;
+ badgeFlag++;
+ i++;
if (badgeFlag > BADGE08_GET)
{
break;
@@ -616,14 +623,14 @@ bool8 sub_8093864(struct Task *task)
ewram0.var_6 = gSaveBlock2.playTimeVBlanks;
sub_80939A4();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- ewram0.var_0 += 1;
+ ewram0.var_0++;
return FALSE;
}
bool8 sub_80938A8(struct Task *task)
{
if (!gPaletteFade.active)
- ewram0.var_0 += 1;
+ ewram0.var_0++;
return FALSE;
}
@@ -639,16 +646,14 @@ bool8 sub_80938CC(struct Task *task)
if (ewram0.var_3 != 0)
{
ewram0.var_0 = 5;
- return TRUE;
}
else
{
ewram0.var_3 ^= 1;
ewram0.var_0 = 3;
- return TRUE;
}
+ return TRUE;
}
-
return FALSE;
}
@@ -656,19 +661,14 @@ bool8 sub_8093918(struct Task *task)
{
sub_8093A28();
PlaySE(SE_CARD);
-
- ewram0.var_0 += 1;
-
+ ewram0.var_0++;
return FALSE;
}
bool8 sub_8093938(struct Task *task)
{
if (sub_8093A48())
- {
ewram0.var_0 = 2;
- }
-
return FALSE;
}
@@ -676,17 +676,14 @@ bool8 sub_8093954(struct Task *task)
{
sub_80939C0();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- ewram0.var_0 += 1;
+ ewram0.var_0++;
return FALSE;
}
bool8 sub_8093980(struct Task *task)
{
if (!gPaletteFade.active)
- {
SetMainCallback2((MainCallback)ewram0.var_60);
- }
-
return FALSE;
}
@@ -698,28 +695,22 @@ static void sub_80939A4(void)
static void sub_80939C0(void)
{
- u8 taskId;
-
- taskId = FindTaskIdByFunc(sub_80939DC);
+ u8 taskId = FindTaskIdByFunc(sub_80939DC);
if (taskId != 0xFF)
- {
DestroyTask(taskId);
- }
}
static void sub_80939DC(u8 taskId)
{
u8 buffer[32];
- struct Task *task;
- task = &gTasks[taskId];
+ struct Task *task = &gTasks[taskId];
if (ewram0.var_5 != task->data[TD_1])
{
task->data[TD_1] = ewram0.var_5;
task->data[TD_0] ^= TRUE;
}
-
TrainerCard_Front_PrintPlayTime(buffer, task->data[TD_0]);
MenuPrint(buffer, 10, 12);
}
@@ -750,18 +741,66 @@ bool8 sub_8093AA0(struct Task *task)
{
s32 i;
- ewram0.var_4 = 0;
+ ewram0.var_4 = FALSE;
dp12_8087EA4();
for (i = 0; i < ARRAY_COUNT(gUnknown_03004DE0.unk780); i++)
gUnknown_03004DE0.unk780[i] = -4;
SetHBlankCallback(sub_8093D7C);
- ewram0.var_4 = 1;
+ ewram0.var_4 = TRUE;
task->data[0]++;
return FALSE;
}
+/*
+bool8 sub_8093AF0(struct Task *task)
+{
+ u32 r7;
+ u16 r9;
+ u32 r6;
+ u32 r5;
+ u32 r4;
+ u32 r10;
+ u32 sp0;
+ s16 i;
+
+ ewram0.var_4 = 0;
+ task->data[1] += 3;
+ if (task->data[1] > 79)
+ task->data[1] = 79;
+
+ r7 = task->data[1];
+ r9 = 160 - r7;
+ r4 = r9 - r7;
+ r6 = -r7 << 16;
+ r5 = (160 << 16) / r4;
+ r5 -= 1 << 16;
+ r10 = r5 * r4 + r6;
+ sp0 = r5 / r4;
+ r5 *= 2;
+
+ for (i = 0; i < r7; i++)
+ {
+ gUnknown_03004DE0.filler0[i] = -4 - (u32)i;
+ }
+ //_08093B74
+ for (; i < r9; i++)
+ {
+ u16 var = r6 >> 16;
+ r6 += r5;
+ r5 -= sp0;
+ gUnknown_03004DE0.filler0[i] = -4 + var;
+ }
+ for (; i < 160; i++)
+ gUnknown_03004DE0.filler0[i] = -4 + (u16)(r10 >> 16);
+ ewram0.var_4 = 1;
+ if (task->data[1] > 0x4A)
+ task->data[0]++;
+ return FALSE;
+}
+*/
+
__attribute__((naked))
-bool8 sub_8093AF0()
+bool8 sub_8093AF0(struct Task *task)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -912,23 +951,18 @@ _08093C08: .4byte 0x0000fffc\n\
.syntax divided\n");
}
-bool8 sub_8093C0C(struct TrainerCard *trainerCard)
+bool8 sub_8093C0C(struct Task *task)
{
sub_80939C0();
sub_8093DAC();
-
if (!ewram0.var_3)
- {
sub_80939A4();
- }
-
- trainerCard->firstHallOfFameB += 1;
-
+ task->data[0]++;
return TRUE;
}
__attribute__((naked))
-bool8 sub_8093C38()
+bool8 sub_8093C38(struct Task *task)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -1077,59 +1111,33 @@ _08093D4C: .4byte 0x0000fffc\n\
.syntax divided\n");
}
-bool8 sub_8093D50(void)
+bool8 sub_8093D50(struct Task *task)
{
u8 taskId;
ewram0.var_4 = FALSE;
SetHBlankCallback(NULL);
sub_8093E04();
-
taskId = FindTaskIdByFunc(sub_8093A68);
DestroyTask(taskId);
-
return FALSE;
}
-__attribute__((naked))
void sub_8093D7C(void)
{
- asm(".syntax unified\n\
- ldr r1, _08093DA0 @ =gUnknown_03004DE0\n\
- ldr r0, _08093DA4 @ =REG_VCOUNT\n\
- ldrh r2, [r0]\n\
- movs r0, 0xFF\n\
- ands r0, r2\n\
- lsls r0, 1\n\
- movs r2, 0xF0\n\
- lsls r2, 3\n\
- adds r1, r2\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- ldr r0, _08093DA8 @ =REG_BG0VOFS\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- adds r0, 0x4\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
-_08093DA0: .4byte gUnknown_03004DE0\n\
-_08093DA4: .4byte 0x4000006 @ REG_VCOUNT\n\
-_08093DA8: .4byte 0x4000012 @ REG_BG0VOFS\n\
- .syntax divided\n");
+ u16 bgVOffset = gUnknown_03004DE0.unk780[REG_VCOUNT & 0xFF];
+
+ REG_BG0VOFS = bgVOffset;
+ REG_BG1VOFS = bgVOffset;
+ REG_BG2VOFS = bgVOffset;
}
static void sub_8093DAC(void)
{
if (ewram0.var_3)
- {
sub_8093DEC();
- }
else
- {
sub_8093DC8();
- }
}
static void sub_8093DC8(void)
@@ -1151,99 +1159,55 @@ static void sub_8093DEC(void)
sub_8094188();
}
-__attribute__((naked))
-static void sub_8093E04()
+static void sub_8093E04(void)
{
- asm(".syntax unified\n\
- ldr r0, _08093E20 @ =REG_BG0VOFS\n\
- ldr r2, _08093E24 @ =0x0000fffc\n\
- adds r1, r2, 0\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- movs r2, 0\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- bx lr\n\
- .align 2, 0\n\
-_08093E20: .4byte 0x4000012 @ REG_BG0VOFS\n\
-_08093E24: .4byte 0x0000fffc\n\
- .syntax divided\n");
+ REG_BG0VOFS = -4;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = -4;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = -4;
}
-__attribute__((naked))
static void sub_8093E28(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- bl sub_8093EA0\n\
- ldr r0, _08093E84 @ =gUnknown_083B5F6C\n\
- movs r1, 0xE0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- ldr r3, _08093E88 @ =gMenuTrainerCard_Gfx\n\
- movs r4, 0xC0\n\
- lsls r4, 19\n\
- movs r5, 0xA4\n\
- lsls r5, 5\n\
- ldr r1, _08093E8C @ =0x040000d4\n\
- ldr r6, _08093E90 @ =0x80000800\n\
- movs r2, 0x80\n\
- lsls r2, 5\n\
- movs r7, 0x80\n\
- lsls r7, 24\n\
-_08093E4E:\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- str r6, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- adds r3, r2\n\
- adds r4, r2\n\
- subs r5, r2\n\
- cmp r5, r2\n\
- bhi _08093E4E\n\
- str r3, [r1]\n\
- str r4, [r1, 0x4]\n\
- lsrs r0, r5, 1\n\
- orrs r0, r7\n\
- str r0, [r1, 0x8]\n\
- ldr r0, [r1, 0x8]\n\
- ldr r1, _08093E94 @ =gBadgesTiles\n\
- ldr r2, _08093E98 @ =0x06001480\n\
- ldr r0, _08093E8C @ =0x040000d4\n\
- str r1, [r0]\n\
- str r2, [r0, 0x4]\n\
- ldr r1, _08093E9C @ =0x80000200\n\
- str r1, [r0, 0x8]\n\
- ldr r0, [r0, 0x8]\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08093E84: .4byte gUnknown_083B5F6C\n\
-_08093E88: .4byte gMenuTrainerCard_Gfx\n\
-_08093E8C: .4byte 0x040000d4\n\
-_08093E90: .4byte 0x80000800\n\
-_08093E94: .4byte gBadgesTiles\n\
-_08093E98: .4byte 0x06001480\n\
-_08093E9C: .4byte 0x80000200\n\
- .syntax divided\n");
+ const u8 *src;
+ u8 *dst;
+ u32 size;
+
+ sub_8093EA0();
+ LoadPalette(gUnknown_083B5F6C, 0xE0, 32);
+ src = gMenuTrainerCard_Gfx;
+ dst = (void *)VRAM;
+ size = 0x1480;
+ while (1)
+ {
+ DmaCopy16(3, src, dst, 0x1000);
+ src += 0x1000;
+ dst += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaCopy16(3, src, dst, size);
+ break;
+ }
+ }
+ {
+ const void *src = gBadgesTiles;
+ void *dst = (void *)(VRAM + 0x1480);
+
+ DmaCopy16(3, src, dst, 0x400);
+ }
}
+extern const u16 *const gUnknown_083B5EF8[];
+
void sub_8093EA0(void)
{
LoadPalette(gUnknown_083B5EF8[ewram0.var_2], 0, 48 * 2);
LoadPalette(gBadgesPalette, 48, 16 * 2);
LoadPalette(gUnknown_083B5F4C, 64, 16 * 2);
-
if (ewram0.var_64.gender != MALE)
- {
LoadPalette(gUnknown_083B5F0C, 16, 16 * 2);
- }
}
static void sub_8093EF8(void)
@@ -1251,36 +1215,32 @@ static void sub_8093EF8(void)
LoadTrainerGfx_TrainerCard(ewram0.var_64.gender, 80, (void *)(VRAM + 0x1880));
}
-__attribute__((naked))
static void sub_8093F14(void)
{
- asm(".syntax unified\n\
- push {lr}\n\
- sub sp, 0x8\n\
- ldr r0, _08093F3C @ =gUnknown_083B5EEC\n\
- ldr r1, [r0, 0x4]\n\
- ldr r0, [r0]\n\
- str r0, [sp]\n\
- str r1, [sp, 0x4]\n\
- ldr r0, _08093F40 @ =0x02000000\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r0, [r0]\n\
- ldr r1, _08093F44 @ =0x06004800\n\
- movs r2, 0xA0\n\
- lsls r2, 1\n\
- bl CpuFastSet\n\
- add sp, 0x8\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08093F3C: .4byte gUnknown_083B5EEC\n\
-_08093F40: .4byte 0x02000000\n\
-_08093F44: .4byte 0x06004800\n\
- .syntax divided\n");
+ const void *arr[] = {gUnknown_08E8CAC0, gUnknown_08E8D4C0};
+
+ CpuFastSet(arr[ewram0.var_1], (void *)(VRAM + 0x4800), 0x140);
}
+// I don't really know where to put the data. It's in such a weird order.
+
+const u8 gUnknown_083B5EF4[] = _(" : ");
+
+const u16 *const gUnknown_083B5EF8[] =
+{
+ gMenuTrainerCard0Star_Pal,
+ gMenuTrainerCard1Star_Pal,
+ gMenuTrainerCard2Star_Pal,
+ gMenuTrainerCard3Star_Pal,
+ gMenuTrainerCard4Star_Pal,
+};
+
+const u16 gUnknown_083B5F0C[] = INCBIN_U16("graphics/trainer_card/83B5F0C.gbapal");
+const u16 gBadgesPalette[] = INCBIN_U16("graphics/trainer_card/badges.gbapal");
+const u16 gUnknown_083B5F4C[] = INCBIN_U16("graphics/trainer_card/83B5F4C.gbapal");
+const u16 gUnknown_083B5F6C[] = INCBIN_U16("graphics/trainer_card/83B5F6C.gbapal");
+const u16 gUnknown_083B5F8C[][4] = INCBIN_U16("graphics/trainer_card/83B5F8C_map.bin");
+
static void sub_8093F48(void)
{
CpuFastSet(gUnknown_08E8CFC0, (void *)(VRAM + 0x4800), 320);
@@ -1291,266 +1251,79 @@ static void sub_8093F64(void)
CpuFastSet(gUnknown_08E8D9C0, (void *)(VRAM + 0x5000), 320);
}
-__attribute__((naked))
static void sub_8093F80(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- movs r5, 0xC4\n\
- ldr r7, _08093FCC @ =0x06004000\n\
- movs r1, 0x5\n\
- movs r0, 0xA0\n\
- lsls r0, 7\n\
- adds r6, r0, 0\n\
-_08093F8E:\n\
- movs r0, 0x13\n\
- lsls r3, r1, 16\n\
- asrs r4, r3, 11\n\
-_08093F94:\n\
- lsls r2, r0, 16\n\
- asrs r2, 16\n\
- adds r1, r4, r2\n\
- lsls r1, 1\n\
- adds r1, r7\n\
- adds r0, r5, 0\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
- adds r2, 0x1\n\
- lsls r2, 16\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- lsrs r0, r2, 16\n\
- asrs r2, 16\n\
- cmp r2, 0x1A\n\
- ble _08093F94\n\
- movs r1, 0x80\n\
- lsls r1, 9\n\
- adds r0, r3, r1\n\
- lsrs r1, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0xC\n\
- ble _08093F8E\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08093FCC: .4byte 0x06004000\n\
- .syntax divided\n");
+ u16 r5 = 0xC4;
+ u16 *ptr = (u16 *)(VRAM + 0x4000);
+ s16 i;
+ s16 j;
+
+ for (i = 5; i < 13; i++)
+ {
+ for (j = 19; j < 27; j++, r5++)
+ ptr[i * 32 + j] = r5 | 0x5000;
+ }
}
-__attribute__((naked))
static void sub_8093FD0(void)
{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r4, _0809402C @ =0x06004000\n\
- movs r2, 0xF\n\
- ldr r0, _08094030 @ =0x02000000\n\
- ldrb r0, [r0, 0x2]\n\
- adds r0, 0xF\n\
- cmp r2, r0\n\
- bge _08094002\n\
- movs r6, 0xC0\n\
- lsls r6, 1\n\
- ldr r1, _08094034 @ =0x0000408f\n\
- adds r5, r1, 0\n\
- adds r3, r0, 0\n\
-_08093FEA:\n\
- lsls r1, r2, 16\n\
- asrs r1, 16\n\
- lsls r0, r1, 1\n\
- adds r0, r4\n\
- adds r0, r6\n\
- strh r5, [r0]\n\
- adds r1, 0x1\n\
- lsls r1, 16\n\
- lsrs r2, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, r3\n\
- blt _08093FEA\n\
-_08094002:\n\
- lsls r1, r2, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- bgt _08094024\n\
- movs r3, 0xC0\n\
- lsls r3, 1\n\
- movs r2, 0\n\
-_08094010:\n\
- asrs r0, r1, 16\n\
- lsls r1, r0, 1\n\
- adds r1, r4\n\
- adds r1, r3\n\
- strh r2, [r1]\n\
- adds r0, 0x1\n\
- lsls r1, r0, 16\n\
- asrs r0, r1, 16\n\
- cmp r0, 0x12\n\
- ble _08094010\n\
-_08094024:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0809402C: .4byte 0x06004000\n\
-_08094030: .4byte 0x02000000\n\
-_08094034: .4byte 0x0000408f\n\
- .syntax divided\n");
+ u16 *ptr = (u16 *)(VRAM + 0x4000);
+ s16 i = 15;
+ s16 var = 15 + ewram0.var_2;
+
+ while (i < var)
+ {
+ ptr[6 * 32 + i] = 0x408F;
+ i++;
+ }
+ while (i < 0x13)
+ {
+ ptr[6 * 32 + i] = 0;
+ i++;
+ }
}
-__attribute__((naked))
static void sub_8094038(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- ldr r1, _080940D0 @ =0x02000000\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _080940C2\n\
- ldr r0, _080940D4 @ =0x06004000\n\
- mov r9, r0\n\
- movs r0, 0\n\
- movs r2, 0x4\n\
- adds r1, 0xE\n\
- mov r8, r1\n\
- ldr r7, _080940D8 @ =gUnknown_083B5F8C\n\
- movs r1, 0xC0\n\
- lsls r1, 6\n\
- adds r6, r1, 0\n\
- adds r1, r7, 0x6\n\
- mov r12, r1\n\
-_08094060:\n\
- lsls r0, 16\n\
- asrs r4, r0, 16\n\
- mov r1, r8\n\
- adds r0, r4, r1\n\
- ldrb r0, [r0]\n\
- lsls r5, r2, 16\n\
- cmp r0, 0\n\
- beq _080940AE\n\
- asrs r1, r5, 15\n\
- add r1, r9\n\
- movs r2, 0xF0\n\
- lsls r2, 2\n\
- adds r3, r1, r2\n\
- lsls r2, r4, 3\n\
- adds r0, r2, r7\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940DC @ =0x000003c2\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x2\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- adds r3, r1, r0\n\
- adds r0, r7, 0x4\n\
- adds r0, r2, r0\n\
- ldrh r0, [r0]\n\
- orrs r0, r6\n\
- strh r0, [r3]\n\
- ldr r0, _080940E0 @ =0x00000402\n\
- adds r1, r0\n\
- add r2, r12\n\
- ldrh r0, [r2]\n\
- orrs r0, r6\n\
- strh r0, [r1]\n\
-_080940AE:\n\
- adds r1, r4, 0x1\n\
- lsls r1, 16\n\
- movs r2, 0xC0\n\
- lsls r2, 10\n\
- adds r0, r5, r2\n\
- lsrs r2, r0, 16\n\
- lsrs r0, r1, 16\n\
- asrs r1, 16\n\
- cmp r1, 0x7\n\
- ble _08094060\n\
-_080940C2:\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080940D0: .4byte 0x02000000\n\
-_080940D4: .4byte 0x06004000\n\
-_080940D8: .4byte gUnknown_083B5F8C\n\
-_080940DC: .4byte 0x000003c2\n\
-_080940E0: .4byte 0x00000402\n\
- .syntax divided\n");
+ if (ewram0.var_1 == 0)
+ {
+ u16 *ptr = (u16 *)(VRAM + 0x4000);
+ s16 i;
+ s16 r2;
+
+ for (i = 0, r2 = 4; i < 8; i++, r2 += 3)
+ {
+ if (ewram0.var_e[i] != 0)
+ {
+ ptr[15 * 32 + r2 + 0] = gUnknown_083B5F8C[i][0] | 0x3000;
+ ptr[15 * 32 + r2 + 1] = gUnknown_083B5F8C[i][1] | 0x3000;
+ ptr[16 * 32 + r2 + 0] = gUnknown_083B5F8C[i][2] | 0x3000;
+ ptr[16 * 32 + r2 + 1] = gUnknown_083B5F8C[i][3] | 0x3000;
+ }
+ }
+ }
}
-__attribute__((naked))
-static void sub_80940E4()
+static void sub_80940E4(void)
{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- movs r2, 0\n\
- ldr r1, _08094108 @ =0x06004000\n\
- movs r4, 0\n\
- ldr r3, _0809410C @ =0x000003ff\n\
-_080940EE:\n\
- strh r4, [r1]\n\
- lsls r0, r2, 16\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r0, r2\n\
- adds r1, 0x2\n\
- lsrs r2, r0, 16\n\
- asrs r0, 16\n\
- cmp r0, r3\n\
- ble _080940EE\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08094108: .4byte 0x06004000\n\
-_0809410C: .4byte 0x000003ff\n\
- .syntax divided\n");
+ s16 i;
+ u16 *ptr;
+
+ for (i = 0, ptr = (u16 *)(VRAM + 0x4000); i < 0x400; i++, ptr++)
+ *ptr = 0;
}
-__attribute__((naked))
-static void sub_8094110()
+static void sub_8094110(void)
{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r6, _0809413C @ =0x06004800\n\
- movs r2, 0x3\n\
- movs r5, 0xA0\n\
- lsls r5, 2\n\
- movs r3, 0x1\n\
- movs r4, 0xB0\n\
- lsls r4, 2\n\
-_08094120:\n\
- lsls r0, r2, 1\n\
- adds r0, r6\n\
- adds r1, r0, r5\n\
- strh r3, [r1]\n\
- adds r0, r4\n\
- strh r3, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x10\n\
- bls _08094120\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0809413C: .4byte 0x06004800\n\
- .syntax divided\n");
-}
+ u16 *ptr = (u16 *)(VRAM + 0x4800);
+ u16 i;
+ for (i = 3; i < 17; i++)
+ {
+ ptr[10 * 32 + i] = 1;
+ ptr[11 * 32 + i] = 1;
+ }
+}
static void sub_8094140(void)
{
@@ -1609,11 +1382,12 @@ static void TrainerCard_Front_PrintPokedexCount(void)
if (ewram0.var_7 == FALSE)
{
sub_8094110();
- return;
}
-
- ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
- MenuPrint_RightAligned(buffer, 16, 10);
+ else
+ {
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokedexSeen, STR_CONV_MODE_LEFT_ALIGN, 3);
+ MenuPrint_RightAligned(buffer, 16, 10);
+ }
}
static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon)
@@ -1624,13 +1398,11 @@ static void TrainerCard_Front_PrintPlayTime(u8 *arg1, s16 colon)
playTimeHours = gSaveBlock2.playTimeHours;
playTimeMinutes = gSaveBlock2.playTimeMinutes;
-
if (ewram0.var_1 != 0)
{
playTimeHours = ewram0.var_64.playTimeHours;
playTimeMinutes = ewram0.var_64.playTimeMinutes;
}
-
FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon);
sub_8072C74(arg1, buffer, 48, 1);
}
@@ -1639,24 +1411,22 @@ static void sub_809429C(void)
{
u8 *str;
- if (ewram0.var_1 == FALSE)
+ if (ewram0.var_1 != 0)
{
- return;
+ str = gStringVar1;
+ str = StringCopy(str, ewram0.var_20[0]);
+ str[0] = 00;
+ str++;
+ str = StringCopy(str, ewram0.var_20[1]);
+ MenuPrint(gStringVar1, 2, 14);
+
+ str = gStringVar1;
+ str = StringCopy(str, ewram0.var_20[2]);
+ str[0] = 00;
+ str++;
+ str = StringCopy(str, ewram0.var_20[3]);
+ MenuPrint(gStringVar1, 2, 16);
}
-
- str = gStringVar1;
- str = StringCopy(str, ewram0.var_20[0]);
- str[0] = 00;
- str++;
- str = StringCopy(str, ewram0.var_20[1]);
- MenuPrint(gStringVar1, 2, 14);
-
- str = gStringVar1;
- str = StringCopy(str, ewram0.var_20[2]);
- str[0] = 00;
- str++;
- str = StringCopy(str, ewram0.var_20[3]);
- MenuPrint(gStringVar1, 2, 16);
}
static void TrainerCard_Back_PrintName(void)
@@ -1678,152 +1448,115 @@ static void TrainerCard_Back_PrintName(void)
static void TrainerCard_Back_PrintHallOfFameTime_Label(void)
{
- if (ewram0.var_8 == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_FirstHOF, 3, 5);
+ if (ewram0.var_8 != 0)
+ MenuPrint(gOtherText_FirstHOF, 3, 5);
}
static void TrainerCard_Back_PrintHallOfFameTime(void)
{
u8 *str;
- if (ewram0.var_8 == FALSE)
+ if (ewram0.var_8 != 0)
{
- return;
+ str = gStringVar1;
+ str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ str = StringCopy(str, gUnknown_083B5EF4);
+ str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
+ str = StringCopy(str, gUnknown_083B5EF4);
+ str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
+ MenuPrint_RightAligned(gStringVar1, 28, 5);
}
-
- str = gStringVar1;
- str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameA, STR_CONV_MODE_RIGHT_ALIGN, 3);
- str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameB, STR_CONV_MODE_LEADING_ZEROS, 2);
- str = StringCopy(str, gUnknown_083B5EF4);
- str = ConvertIntToDecimalStringN(str, ewram0.var_64.firstHallOfFameC, STR_CONV_MODE_LEADING_ZEROS, 2);
-
- MenuPrint_RightAligned(gStringVar1, 28, 5);
}
static void TrainerCard_Back_PrintLinkBattlesLabel(void)
{
- if (ewram0.var_9 == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_LinkCableBattles, 3, 7);
+ if (ewram0.var_9 != 0)
+ MenuPrint(gOtherText_LinkCableBattles, 3, 7);
}
static void TrainerCard_Back_PrintLinkBattles(void)
{
u8 buffer[16];
- if (ewram0.var_9 == FALSE)
+ if (ewram0.var_9 != 0)
{
- return;
- }
+ ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleWins);
+ MenuPrint_RightAligned(buffer, 22, 7);
- ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleWins);
- MenuPrint_RightAligned(buffer, 22, 7);
-
- ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleLosses);
- MenuPrint_RightAligned(buffer, 28, 7);
+ ConvertIntToDecimalString(buffer, ewram0.var_64.linkBattleLosses);
+ MenuPrint_RightAligned(buffer, 28, 7);
+ }
}
static void TrainerCard_Back_PrintBattleTower_Label(void)
{
- if (ewram0.var_a == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15);
+ if (ewram0.var_a != 0)
+ MenuPrint(gOtherText_BattleTowerWinRecord, 3, 15);
}
static void TrainerCard_Back_PrintBattleTower(void)
{
u8 buffer[16];
- if (ewram0.var_a == FALSE)
+ if (ewram0.var_a != 0)
{
- return;
- }
+ sub_8072C44(buffer, ewram0.var_64.battleTowerWins, 24, 1);
+ MenuPrint_PixelCoords(buffer, 112, 120, 0);
- sub_8072C44(buffer, ewram0.var_64.battleTowerWins, 24, 1);
- MenuPrint_PixelCoords(buffer, 112, 120, 0);
-
- sub_8072C44(buffer, ewram0.var_64.battleTowerLosses, 24, 1);
- MenuPrint_PixelCoords(buffer, 149, 120, 0);
+ sub_8072C44(buffer, ewram0.var_64.battleTowerLosses, 24, 1);
+ MenuPrint_PixelCoords(buffer, 149, 120, 0);
+ }
}
static void TrainerCard_Back_PrintLinkContests_Label(void)
{
- if (ewram0.var_b == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_ContestRecord, 3, 13);
+ if (ewram0.var_b != 0)
+ MenuPrint(gOtherText_ContestRecord, 3, 13);
}
static void TrainerCard_Back_PrintLinkContests(void)
{
u8 buffer[8];
- if (ewram0.var_b == FALSE)
+ if (ewram0.var_b != 0)
{
- return;
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ MenuPrint_RightAligned(buffer, 28, 13);
}
-
- ConvertIntToDecimalStringN(buffer, ewram0.var_64.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 3);
- MenuPrint_RightAligned(buffer, 28, 13);
}
static void TrainerCard_Back_PrintLinkPokeblocks_Label(void)
{
- if (ewram0.var_c == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_MixingRecord, 3, 11);
+ if (ewram0.var_c != 0)
+ MenuPrint(gOtherText_MixingRecord, 3, 11);
}
static void TrainerCard_Back_PrintLinkPokeblocks(void)
{
u8 buffer[8];
- if (ewram0.var_c == FALSE)
+ if (ewram0.var_c != 0)
{
- return;
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ MenuPrint_RightAligned(buffer, 28, 11);
}
-
- ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5);
- MenuPrint_RightAligned(buffer, 28, 11);
}
static void TrainerCard_Back_PrintPokemonTrades_Label(void)
{
- if (ewram0.var_d == FALSE)
- {
- return;
- }
-
- MenuPrint(gOtherText_TradeRecord, 3, 9);
+ if (ewram0.var_d != 0)
+ MenuPrint(gOtherText_TradeRecord, 3, 9);
}
static void TrainerCard_Back_PrintPokemonTrades(void)
{
u8 buffer[8];
- if (ewram0.var_d == FALSE)
+ if (ewram0.var_d != 0)
{
- return;
+ ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
+ MenuPrint_RightAligned(buffer, 28, 9);
}
-
- ConvertIntToDecimalStringN(buffer, ewram0.var_64.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5);
- MenuPrint_RightAligned(buffer, 28, 9);
}
void unref_sub_8094588(u16 left, u16 top)
@@ -1831,9 +1564,6 @@ void unref_sub_8094588(u16 left, u16 top)
const u8 *text = gOtherText_Boy;
if (gSaveBlock2.playerGender == FEMALE)
- {
text = gOtherText_Girl;
- }
-
- MenuPrint(text, (u8)left, (u8)top);
+ MenuPrint(text, left, top);
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 9b7a47f6b..feb35c67c 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -13,8 +13,6 @@ extern bool8 (*gIsTrainerInRange[])(struct MapObject *, u16, s16, s16);
extern bool8 (*gTrainerSeeFuncList[])(u8, struct Task *, struct MapObject *);
extern bool8 (*gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *);
-extern u32 gUnknown_0202FF84[];
-
extern struct SpriteTemplate gSpriteTemplate_839B510;
extern struct SpriteTemplate gSpriteTemplate_839B528;
diff --git a/src/tv.c b/src/tv.c
index 4701c7b8e..a254bcd5f 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -63,14 +63,7 @@ extern u8 gUnknown_02038694;
extern struct TVSaleItem gUnknown_02038724[3];
-extern u16 gSpecialVar_0x8004;
-extern u16 gSpecialVar_0x8005;
-extern u16 gSpecialVar_0x8006;
-extern u8 gSpecialVar_0x8007;
-extern u16 gScriptResult;
-extern u8 gUnknown_020387E8;
-
-extern struct UnkTvStruct gUnknown_03005D38;
+struct UnkTvStruct gUnknown_03005D38;
extern u8 *gTVBravoTrainerTextGroup[];
extern u8 *gTVBravoTrainerBattleTowerTextGroup[];
@@ -87,8 +80,7 @@ extern u8 *gTVFishingGuruAdviceTextGroup[];
extern u8 *gTVWorldOfMastersTextGroup[];
extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5];
-extern u16 gUnknown_020387E0;
-extern u16 gUnknown_020387E2;
+
extern const u8 *gTVNewsTextGroup1[];
extern const u8 *gTVNewsTextGroup2[];
@@ -96,7 +88,6 @@ extern const u8 *gTVNewsTextGroup3[];
extern u16 gScriptLastTalked;
-
extern u8 gScriptContestCategory;
extern u8 gScriptContestRank;
extern u8 gUnknown_03004316[11];
@@ -106,10 +97,15 @@ extern u16 gLastUsedItem;
extern u8 ewram[];
#define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000))
-extern u8 gUnknown_020387E4;
-extern u8 gUnknown_03000720;
-extern s8 gUnknown_03000722;
+static EWRAM_DATA u16 gUnknown_020387E0 = 0;
+static EWRAM_DATA u16 gUnknown_020387E2 = 0;
+static EWRAM_DATA u8 gUnknown_020387E4 = 0;
+static EWRAM_DATA ALIGNED(4) u8 gUnknown_020387E8 = 0; // why is this aligned to a 4-byte boundary?
+
+static u8 gUnknown_03000720;
+static u8 gUnknown_03000721;
+static s8 gUnknown_03000722;
void ClearTVShowData(void)
{
@@ -164,19 +160,19 @@ void nullsub_21(void);
void sub_80BE188(void);
void sub_80BE320(void);
-#ifdef NONMATCHING
u8 special_0x44(void)
{
u8 i;
u8 j;
- u8 var01;
- TVShow *tvShow;
- for (i=5; i<24; i++)
+
+#ifndef NONMATCHING
+ asm("":::"r5");
+#endif
+
+ for (i = 5; i < 24; i++)
{
if (gSaveBlock1.tvShows[i].common.var00 == 0)
- {
break;
- }
}
i = Random() % i;
j = i;
@@ -184,140 +180,35 @@ u8 special_0x44(void)
{
if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) != 4)
{
- var01 = gSaveBlock1.tvShows[i].common.var01;
- } else
- {
- tvShow = &gSaveBlock1.tvShows[i];
- if (tvShow->massOutbreak.var16 != 0) {
- continue;
- } else {
- var01 = tvShow->common.var01;
- }
+ if (gSaveBlock1.tvShows[i].common.var01 == 1)
+ return i;
}
- if (var01 == 1)
+ else
{
- return i;
+ struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[i].massOutbreak;
+
+ if (massOutbreak->var16 == 0 && massOutbreak->var01 == 1)
+ return i;
}
- } while (i == 0 ? i = 23 : i --, i != j);
- return 0xff;
-}
-#else
-__attribute__((naked))
-u8 special_0x44(void)
-{
- asm(".syntax unified\n"
- " push {r4-r7,lr}\n"
- " mov r7, r9\n"
- " mov r6, r8\n"
- " push {r6,r7}\n"
- " movs r4, 0x5\n"
- " ldr r1, _080BD874 @ =gSaveBlock1\n"
- " ldr r2, _080BD878 @ =0x000027ec\n"
- " adds r0, r1, r2\n"
- " ldrb r0, [r0]\n"
- " cmp r0, 0\n"
- " beq _080BD834\n"
- " adds r2, r1, 0\n"
- " ldr r1, _080BD87C @ =0x00002738\n"
- "_080BD81A:\n"
- " adds r0, r4, 0x1\n"
- " lsls r0, 24\n"
- " lsrs r4, r0, 24\n"
- " cmp r4, 0x17\n"
- " bhi _080BD834\n"
- " lsls r0, r4, 3\n"
- " adds r0, r4\n"
- " lsls r0, 2\n"
- " adds r0, r2\n"
- " adds r0, r1\n"
- " ldrb r0, [r0]\n"
- " cmp r0, 0\n"
- " bne _080BD81A\n"
- "_080BD834:\n"
- " bl Random\n"
- " lsls r0, 16\n"
- " lsrs r0, 16\n"
- " adds r1, r4, 0\n"
- " bl __modsi3\n"
- " lsls r0, 24\n"
- " lsrs r4, r0, 24\n"
- " mov r8, r4\n"
- " ldr r7, _080BD874 @ =gSaveBlock1\n"
- " ldr r0, _080BD87C @ =0x00002738\n"
- " adds r0, r7\n"
- " mov r9, r0\n"
- "_080BD850:\n"
- " lsls r0, r4, 3\n"
- " adds r0, r4\n"
- " lsls r6, r0, 2\n"
- " adds r5, r6, r7\n"
- " ldr r1, _080BD87C @ =0x00002738\n"
- " adds r0, r5, r1\n"
- " ldrb r0, [r0]\n"
- " bl sub_80BFB54\n"
- " lsls r0, 24\n"
- " lsrs r0, 24\n"
- " cmp r0, 0x4\n"
- " beq _080BD884\n"
- " ldr r2, _080BD880 @ =0x00002739\n"
- " adds r0, r5, r2\n"
- " ldrb r0, [r0]\n"
- " b _080BD890\n"
- " .align 2, 0\n"
- "_080BD874: .4byte gSaveBlock1\n"
- "_080BD878: .4byte 0x000027ec\n"
- "_080BD87C: .4byte 0x00002738\n"
- "_080BD880: .4byte 0x00002739\n"
- "_080BD884:\n"
- " mov r0, r9\n"
- " adds r1, r6, r0\n"
- " ldrh r0, [r1, 0x16]\n"
- " cmp r0, 0\n"
- " bne _080BD898\n"
- " ldrb r0, [r1, 0x1]\n"
- "_080BD890:\n"
- " cmp r0, 0x1\n"
- " bne _080BD898\n"
- " adds r0, r4, 0\n"
- " b _080BD8AC\n"
- "_080BD898:\n"
- " cmp r4, 0\n"
- " bne _080BD8A0\n"
- " movs r4, 0x17\n"
- " b _080BD8A6\n"
- "_080BD8A0:\n"
- " subs r0, r4, 0x1\n"
- " lsls r0, 24\n"
- " lsrs r4, r0, 24\n"
- "_080BD8A6:\n"
- " cmp r4, r8\n"
- " bne _080BD850\n"
- " movs r0, 0xFF\n"
- "_080BD8AC:\n"
- " pop {r3,r4}\n"
- " mov r8, r3\n"
- " mov r9, r4\n"
- " pop {r4-r7}\n"
- " pop {r1}\n"
- " bx r1\n"
- ".syntax divided\n");
+
+ if (i == 0)
+ i = 23;
+ else
+ i--;
+ } while (i != j);
+ return 0xFF;
}
-#endif
u8 sub_80BDA30(void);
u8 sub_80BD8B8(void)
{
- u8 retval;
- retval = special_0x44();
+ u8 retval = special_0x44();
+
if (retval == 0xff)
- {
return 0xff;
- }
if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.var00 == TVSHOW_MASS_OUTBREAK)
- {
return sub_80BDA30();
- }
return retval;
}
@@ -328,26 +219,26 @@ bool8 IsTVShowInSearchOfTrainersAiring(void);
void UpdateTVScreensOnMap(int width, int height)
{
- u8 bigMovieOrEmergencyNewsOnTv;
FlagSet(SYS_TV_WATCH);
- bigMovieOrEmergencyNewsOnTv = CheckForBigMovieOrEmergencyNewsOnTV();
- switch (bigMovieOrEmergencyNewsOnTv)
+ switch (CheckForBigMovieOrEmergencyNewsOnTV())
{
- case 1:
+ case 1:
+ SetTVMetatilesOnMap(width, height, 0x3);
+ break;
+ case 2:
+ break;
+ default:
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F
+ && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F)
+ {
SetTVMetatilesOnMap(width, height, 0x3);
- break;
- case 2:
- break;
- default:
- if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F)
- {
- SetTVMetatilesOnMap(width, height, 0x3);
- }
- else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring()))
- {
- FlagReset(SYS_TV_WATCH);
- SetTVMetatilesOnMap(width, height, 0x3);
- }
+ }
+ else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring()))
+ {
+ FlagReset(SYS_TV_WATCH);
+ SetTVMetatilesOnMap(width, height, 0x3);
+ }
+ break;
}
}
@@ -355,14 +246,13 @@ void SetTVMetatilesOnMap(int width, int height, u16 tileId)
{
int x;
int y;
+
for (y=0; y<height; y++)
{
for (x=0; x<width; x++)
{
if (MapGridGetMetatileBehaviorAt(x, y) == 0x86)
- {
MapGridSetMetatileIdAt(x, y, tileId | 0xc00);
- }
}
}
}
@@ -384,9 +274,7 @@ u8 sub_80BDA30(void)
for (showIdx=0; showIdx<24; showIdx++)
{
if (gSaveBlock1.tvShows[showIdx].common.var00 != 0 && gSaveBlock1.tvShows[showIdx].common.var00 != TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showIdx].common.var01 == 1)
- {
return showIdx;
- }
}
return 0xff;
}
@@ -396,9 +284,7 @@ u8 special_0x4a(void)
TVShow *tvShow;
tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
if (tvShow->common.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies)
- {
return sub_80BDA30();
- }
return gSpecialVar_0x8004;
}
@@ -429,28 +315,24 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void);
void GabbyAndTyBeforeInterview(void)
{
u8 i;
- gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.Poke1Species;
- gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.OpponentSpecies;
- gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.LastUsedMove;
+
+ gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.poke1Species;
+ gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.opponentSpecies;
+ gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.lastUsedMove;
if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff)
- {
gSaveBlock1.gabbyAndTyData.battleNum ++;
- }
gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0;
- if (gBattleResults.PlayerFaintCounter)
- {
+
+ if (gBattleResults.playerFaintCounter)
gSaveBlock1.gabbyAndTyData.valA_1 = 1;
- } else
- {
+ else
gSaveBlock1.gabbyAndTyData.valA_1 = 0;
- }
+
if (gBattleResults.unk3)
- {
gSaveBlock1.gabbyAndTyData.valA_2 = 1;
- } else
- {
+ else
gSaveBlock1.gabbyAndTyData.valA_2 = 0;
- }
+
if (!gBattleResults.unk5_1)
{
for (i=0; i<11; i++)
@@ -461,15 +343,15 @@ void GabbyAndTyBeforeInterview(void)
break;
}
}
- } else
+ }
+ else
{
gSaveBlock1.gabbyAndTyData.valA_3 = 1;
}
+
TakeTVShowInSearchOfTrainersOffTheAir();
if (gSaveBlock1.gabbyAndTyData.lastMove == 0)
- {
FlagSet(1);
- }
}
void sub_80BDC14(void)
@@ -479,7 +361,7 @@ void sub_80BDC14(void)
gSaveBlock1.gabbyAndTyData.valB_2 = gSaveBlock1.gabbyAndTyData.valA_2;
gSaveBlock1.gabbyAndTyData.valB_3 = gSaveBlock1.gabbyAndTyData.valA_3;
gSaveBlock1.gabbyAndTyData.valA_4 = 1;
- gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.name;
+ gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.regionMapSectionId;
IncrementGameStat(GAME_STAT_GOT_INTERVIEWED);
}
@@ -491,10 +373,9 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void)
u8 GabbyAndTyGetBattleNum(void)
{
if (gSaveBlock1.gabbyAndTyData.battleNum >= 6)
- {
return (gSaveBlock1.gabbyAndTyData.battleNum % 3) + 6;
- }
- return gSaveBlock1.gabbyAndTyData.battleNum;
+ else
+ return gSaveBlock1.gabbyAndTyData.battleNum;
}
bool8 IsTVShowInSearchOfTrainersAiring(void)
@@ -505,9 +386,8 @@ bool8 IsTVShowInSearchOfTrainersAiring(void)
bool8 GabbyAndTyGetLastQuote(void)
{
if (gSaveBlock1.gabbyAndTyData.quote == 0xffff)
- {
return FALSE;
- }
+
sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
gSaveBlock1.gabbyAndTyData.quote |= 0xffff;
return TRUE;
@@ -516,26 +396,20 @@ bool8 GabbyAndTyGetLastQuote(void)
u8 sub_80BDD18(void)
{
if (!gSaveBlock1.gabbyAndTyData.valB_0)
- {
return 1;
- }
if (gSaveBlock1.gabbyAndTyData.valB_3)
- {
return 2;
- }
if (gSaveBlock1.gabbyAndTyData.valB_2)
- {
return 3;
- }
if (gSaveBlock1.gabbyAndTyData.valB_1)
- {
return 4;
- }
return 0;
}
-void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) {
- switch (GabbyAndTyGetBattleNum()) {
+void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void)
+{
+ switch (GabbyAndTyGetBattleNum())
+ {
case 1:
gSpecialVar_0x8004 = 0xE;
gSpecialVar_0x8005 = 0xD;
@@ -571,8 +445,10 @@ void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) {
}
}
-void sub_80BDE48(void) {
- switch (gSpecialVar_0x8005) {
+void sub_80BDE48(void)
+{
+ switch (gSpecialVar_0x8005)
+ {
case TVSHOW_FAN_CLUB_LETTER:
sub_80BE5FC();
break;
@@ -594,217 +470,131 @@ void sub_80BDE48(void) {
}
}
-u8 sub_80BDEAC(u8 *a0) {
- u8 lang;
- lang = GAME_LANGUAGE;
- if (a0[0] == 0xFC && a0[1] == 0x15) {
+u8 sub_80BDEAC(u8 *a0)
+{
+ u8 lang = GAME_LANGUAGE;
+
+ if (a0[0] == EXT_CTRL_CODE_BEGIN && a0[1] == 0x15)
lang = LANGUAGE_JAPANESE;
- }
return lang;
}
-void sub_80BDEC8(void) {
- TVShow *show;
+void sub_80BDEC8(void)
+{
u8 i;
u16 total;
u16 item;
+
total = 0;
sub_80BEB20();
sub_80BE778();
- if (gBattleResults.CaughtPoke == 0) {
+
+ if (gBattleResults.caughtPoke == 0)
+ {
sub_80BE074();
- } else {
+ }
+ else
+ {
sub_80BE028();
- if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.CaughtPoke], gBattleResults.CaughtNick) != 0) {
+ if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.caughtPoke], gBattleResults.caughtNick) != 0)
+ {
gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
- if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) {
- for (i=0; i<11; i++) {
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1)
+ {
+ for (i = 0; i < 11; i++)
total += gBattleResults.unk36[i];
- }
- if (total != 0 || gBattleResults.unk5_1 != 0) {
- total = FALSE;
- show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- show->pokemonToday.var00 = TVSHOW_POKEMON_TODAY_CAUGHT;
- show->pokemonToday.var01 = total;
- if (gBattleResults.unk5_1 != 0) {
+ if (total != 0 || gBattleResults.unk5_1 != 0)
+ {
+ struct TVShowPokemonToday *pokemonToday;
+
+ total = 0;
+ pokemonToday = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonToday;
+ pokemonToday->var00 = TVSHOW_POKEMON_TODAY_CAUGHT;
+ pokemonToday->var01 = total;
+ if (gBattleResults.unk5_1 != 0)
+ {
total = 1;
item = ITEM_MASTER_BALL;
- } else {
- for (i=0; i<11; i++) {
+ }
+ else
+ {
+ for (i = 0; i < 11; i++)
total += gBattleResults.unk36[i];
- }
- if (total > 0xff) {
+ if (total > 0xff)
total = 0xff;
- }
item = gLastUsedItem;
}
- show->pokemonToday.var12 = total;
- show->pokemonToday.ball = item;
- StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName);
- StringCopy(show->pokemonToday.nickname, gBattleResults.CaughtNick);
- show->pokemonToday.species = gBattleResults.CaughtPoke;
- sub_80BE138(show);
- show->pokemonToday.language = GAME_LANGUAGE;
- show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname);
- StripExtCtrlCodes(show->pokemonToday.nickname);
+ pokemonToday->var12 = total;
+ pokemonToday->ball = item;
+ StringCopy(pokemonToday->playerName, gSaveBlock2.playerName);
+ StringCopy(pokemonToday->nickname, gBattleResults.caughtNick);
+ pokemonToday->species = gBattleResults.caughtPoke;
+ sub_80BE138((TVShow *)pokemonToday);
+ pokemonToday->language = GAME_LANGUAGE;
+ pokemonToday->language2 = sub_80BDEAC(pokemonToday->nickname);
+ StripExtCtrlCodes(pokemonToday->nickname);
}
}
}
}
}
-void sub_80BE028(void) {
- TVShow *buffer;
- buffer = &gSaveBlock1.tvShows[24];
- if (buffer->worldOfMasters.var00 != TVSHOW_WORLD_OF_MASTERS) {
+void sub_80BE028(void)
+{
+ struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters;
+
+ if (worldOfMasters->var00 != TVSHOW_WORLD_OF_MASTERS)
+ {
sub_80BF55C(gSaveBlock1.tvShows, 24);
- buffer->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS);
- buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS;
+ worldOfMasters->var06 = GetGameStat(GAME_STAT_STEPS);
+ worldOfMasters->var00 = TVSHOW_WORLD_OF_MASTERS;
}
- buffer->worldOfMasters.var02++;
- buffer->worldOfMasters.var04 = gBattleResults.CaughtPoke;
- buffer->worldOfMasters.var08 = gBattleResults.Poke1Species;
- buffer->worldOfMasters.var0a = gMapHeader.name;
+ worldOfMasters->var02++;
+ worldOfMasters->var04 = gBattleResults.caughtPoke;
+ worldOfMasters->var08 = gBattleResults.poke1Species;
+ worldOfMasters->var0a = gMapHeader.regionMapSectionId;
}
-#ifdef NONMATCHING
-void sub_80BE074(void) {
+void sub_80BE074(void)
+{
u8 i;
u16 total;
- u8 flag;
- TVShow *show;
- if (sub_80BF77C(0xffff) == 0) {
- for (i=0, total=0; i<ARRAY_COUNT(gUnknown_03004316); i++) {
+ u8 zero = 0;
+
+ if (sub_80BF77C(0xffff) == 0)
+ {
+ for (i = 0, total = 0; i < ARRAY_COUNT(gUnknown_03004316); i++)
total += gUnknown_03004316[i];
- }
- if (total > 0xff) {
+ if (total > 0xff)
total = 0xff;
- }
- if (total > 2 && gBattleOutcome == 1) {
+ if (total > 2 && gBattleOutcome == 1)
+ {
gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
- if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) {
- flag = FALSE;
- show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- asm_comment("Here the wrong registers are used to hold the show ID and flag.");
- show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED;
- show->pokemonTodayFailed.var01 = flag;
- show->pokemonTodayFailed.species = gBattleResults.Poke1Species;
- show->pokemonTodayFailed.species2 = gBattleResults.unk20;
- show->pokemonTodayFailed.var10 = total;
- show->pokemonTodayFailed.var11 = gBattleOutcome;
- show->pokemonTodayFailed.var12 = gMapHeader.name;
- StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2.playerName);
- sub_80BE138(show);
- show->pokemonTodayFailed.language = GAME_LANGUAGE;
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1)
+ {
+ struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonTodayFailed;
+
+ zero = 0;
+ pokemonTodayFailed->var00 = TVSHOW_POKEMON_TODAY_FAILED;
+ pokemonTodayFailed->var01 = zero;
+ pokemonTodayFailed->species = gBattleResults.poke1Species;
+ pokemonTodayFailed->species2 = gBattleResults.lastOpponentSpecies;
+ pokemonTodayFailed->var10 = total;
+ pokemonTodayFailed->var11 = gBattleOutcome;
+ pokemonTodayFailed->var12 = gMapHeader.regionMapSectionId;
+ StringCopy(pokemonTodayFailed->playerName, gSaveBlock2.playerName);
+ sub_80BE138((TVShow *)pokemonTodayFailed);
+ pokemonTodayFailed->language = GAME_LANGUAGE;
}
}
}
}
-#else
-__attribute__((naked))
-void sub_80BE074(void) {
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- ldr r0, _080BE118 @ =0x0000ffff\n\
- bl sub_80BF77C\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080BE112\n\
- movs r1, 0\n\
- movs r5, 0\n\
- ldr r2, _080BE11C @ =gUnknown_03004316\n\
-_080BE088:\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- adds r0, r5, r0\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- adds r0, r1, 0x1\n\
- lsls r0, 24\n\
- lsrs r1, r0, 24\n\
- cmp r1, 0xA\n\
- bls _080BE088\n\
- cmp r5, 0xFF\n\
- bls _080BE0A2\n\
- movs r5, 0xFF\n\
-_080BE0A2:\n\
- cmp r5, 0x2\n\
- bls _080BE112\n\
- ldr r7, _080BE120 @ =gBattleOutcome\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x1\n\
- bne _080BE112\n\
- ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\
- adds r0, r6, 0\n\
- bl sub_80BF74C\n\
- ldr r4, _080BE128 @ =gUnknown_03005D38\n\
- strb r0, [r4]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- movs r1, 0x1\n\
- negs r1, r1\n\
- cmp r0, r1\n\
- beq _080BE112\n\
- movs r0, 0x17\n\
- bl sub_80BF1B4\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- beq _080BE112\n\
- movs r0, 0\n\
- ldrsb r0, [r4, r0]\n\
- lsls r4, r0, 3\n\
- adds r4, r0\n\
- lsls r4, 2\n\
- adds r4, r6\n\
- @ -- Here the compiler puts the status flag in the wrong register. --\n\
- movs r1, 0\n\
- movs r0, 0x17\n\
- strb r0, [r4]\n\
- strb r1, [r4, 0x1]\n\
- ldr r1, _080BE12C @ =gBattleResults\n\
- ldrh r0, [r1, 0x6]\n\
- strh r0, [r4, 0xC]\n\
- ldrh r0, [r1, 0x20]\n\
- strh r0, [r4, 0xE]\n\
- strb r5, [r4, 0x10]\n\
- ldrb r0, [r7]\n\
- strb r0, [r4, 0x11]\n\
- ldr r0, _080BE130 @ =gMapHeader\n\
- ldrb r0, [r0, 0x14]\n\
- strb r0, [r4, 0x12]\n\
- adds r0, r4, 0\n\
- adds r0, 0x13\n\
- ldr r1, _080BE134 @ =gSaveBlock2\n\
- bl StringCopy\n\
- adds r0, r4, 0\n\
- bl sub_80BE138\n");
-#if ENGLISH
- asm("movs r0, 2 @ GAME_LANGUAGE\n");
-#elif GERMAN
- asm("movs r0, 5 @ GAME_LANGUAGE\n");
-#endif
- asm("strb r0, [r4, 0x2]\n\
-_080BE112:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080BE118: .4byte 0x0000ffff\n\
-_080BE11C: .4byte gUnknown_03004316\n\
-_080BE120: .4byte gBattleOutcome\n\
-_080BE124: .4byte gSaveBlock1 + 0x2738\n\
-_080BE128: .4byte gUnknown_03005D38\n\
-_080BE12C: .4byte gBattleResults\n\
-_080BE130: .4byte gMapHeader\n\
-_080BE134: .4byte gSaveBlock2\n\
-.syntax divided\n");
-}
-#endif
-void sub_80BE138(TVShow *show) {
- u32 playerId;
- playerId = GetPlayerTrainerId();
+
+void sub_80BE138(TVShow *show)
+{
+ u32 playerId = GetPlayerTrainerId();
+
show->common.srcTrainerId2Lo = playerId & 0xFF;
show->common.srcTrainerId2Hi = playerId >> 8;
show->common.srcTrainerIdLo = playerId & 0xFF;
@@ -813,107 +603,119 @@ void sub_80BE138(TVShow *show) {
show->common.trainerIdHi = playerId >> 8;
}
-void sub_80BE160(TVShow *show) {
- u32 playerId;
- playerId = GetPlayerTrainerId();
+void sub_80BE160(TVShow *show)
+{
+ u32 playerId = GetPlayerTrainerId();
+
show->common.srcTrainerIdLo = playerId & 0xFF;
show->common.srcTrainerIdHi = playerId >> 8;
show->common.trainerIdLo = playerId & 0xFF;
show->common.trainerIdHi = playerId >> 8;
}
-void sub_80BE188(void) {
- TVShow *show;
- TVShow *buffer;
- buffer = &gSaveBlock1.tvShows[24];
- if (buffer->bravoTrainer.var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) {
- show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
- show->bravoTrainer.var01 = 1;
- show->bravoTrainer.species = buffer->bravoTrainer.species;
- StringCopy(show->bravoTrainer.playerName, gSaveBlock2.playerName);
- StringCopy(show->bravoTrainer.pokemonNickname, buffer->bravoTrainer.pokemonNickname);
- show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory;
- show->bravoTrainer.contestRank = buffer->bravoTrainer.contestRank;
- show->bravoTrainer.var14 = buffer->bravoTrainer.var14;
- show->bravoTrainer.contestResult = buffer->bravoTrainer.contestResult;
- show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory;
- sub_80BE160(show);
- show->bravoTrainer.language = GAME_LANGUAGE;
- show->bravoTrainer.var1f = sub_80BDEAC(show->bravoTrainer.pokemonNickname);
- StripExtCtrlCodes(show->bravoTrainer.pokemonNickname);
- }
-}
-
-void sub_80BE23C(u16 a0) {
- TVShow *show;
- show = &gSaveBlock1.tvShows[24];
+void sub_80BE188(void)
+{
+ struct TVShowBravoTrainerPokemonProfiles *bravoTrainerSrc = &gSaveBlock1.tvShows[24].bravoTrainer;
+
+ if (bravoTrainerSrc->var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE)
+ {
+ struct TVShowBravoTrainerPokemonProfiles *bravoTrainerNew = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer;
+
+ bravoTrainerNew->var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ bravoTrainerNew->var01 = 1;
+ bravoTrainerNew->species = bravoTrainerSrc->species;
+ StringCopy(bravoTrainerNew->playerName, gSaveBlock2.playerName);
+ StringCopy(bravoTrainerNew->pokemonNickname, bravoTrainerSrc->pokemonNickname);
+ bravoTrainerNew->contestCategory = bravoTrainerSrc->contestCategory;
+ bravoTrainerNew->contestRank = bravoTrainerSrc->contestRank;
+ bravoTrainerNew->var14 = bravoTrainerSrc->var14;
+ bravoTrainerNew->contestResult = bravoTrainerSrc->contestResult;
+ bravoTrainerNew->contestCategory = bravoTrainerSrc->contestCategory;
+ sub_80BE160((TVShow *)bravoTrainerNew);
+ bravoTrainerNew->language = GAME_LANGUAGE;
+ bravoTrainerNew->var1f = sub_80BDEAC(bravoTrainerNew->pokemonNickname);
+ StripExtCtrlCodes(bravoTrainerNew->pokemonNickname);
+ }
+}
+
+void sub_80BE23C(u16 a0)
+{
+ struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer;
+
sub_80BF484();
gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows);
- if (gUnknown_03005D38.var0 != -1) {
+ if (gUnknown_03005D38.var0 != -1)
+ {
sub_80BF55C(gSaveBlock1.tvShows, 24);
- show->bravoTrainer.var14 = a0;
- show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ bravoTrainer->var14 = a0;
+ bravoTrainer->var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
}
}
-void sub_80BE284(u8 a0) {
- TVShow *show;
- show = &gSaveBlock1.tvShows[24];
+void sub_80BE284(u8 a0)
+{
+ struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[24].bravoTrainer;
+
gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows);
- if (gUnknown_03005D38.var0 != -1) {
- show->bravoTrainer.contestResult = a0;
- show->bravoTrainer.contestCategory = gScriptContestCategory;
- show->bravoTrainer.contestRank = gScriptContestRank;
- show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL);
- GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname);
- }
-}
-
-void sub_80BE320(void) {
- TVShow *show;
- show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- show->bravoTrainerTower.var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
- show->bravoTrainerTower.var01 = 1;
- StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2.playerName);
- StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2.filler_A8.filler_3DC);
- show->bravoTrainerTower.species = gSaveBlock2.filler_A8.var_480;
- show->bravoTrainerTower.defeatedSpecies = gSaveBlock2.filler_A8.var_482;
- show->bravoTrainerTower.var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0);
- show->bravoTrainerTower.var1c = gSaveBlock2.filler_A8.var_4AD;
- if (gSaveBlock2.filler_A8.var_4D0 == 0) {
- show->bravoTrainerTower.btLevel = 50;
- } else {
- show->bravoTrainerTower.btLevel = 100;
- }
- show->bravoTrainerTower.var1b = gSpecialVar_0x8004;
- sub_80BE160(show);
- show->bravoTrainerTower.language = GAME_LANGUAGE;
-}
-
-void sub_80BE3BC(void) {
+ if (gUnknown_03005D38.var0 != -1)
+ {
+ bravoTrainer->contestResult = a0;
+ bravoTrainer->contestCategory = gScriptContestCategory;
+ bravoTrainer->contestRank = gScriptContestRank;
+ bravoTrainer->species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL);
+ GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, bravoTrainer->pokemonNickname);
+ }
+}
+
+void sub_80BE320(void)
+{
+ struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower;
+
+ bravoTrainerTower->var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
+ bravoTrainerTower->var01 = 1;
+ StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName);
+ StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.filler_A8.filler_3DC);
+ bravoTrainerTower->species = gSaveBlock2.filler_A8.var_480;
+ bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.var_482;
+ bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0);
+ bravoTrainerTower->var1c = gSaveBlock2.filler_A8.var_4AD;
+ if (gSaveBlock2.filler_A8.var_4D0 == 0)
+ bravoTrainerTower->btLevel = 50;
+ else
+ bravoTrainerTower->btLevel = 100;
+ bravoTrainerTower->var1b = gSpecialVar_0x8004;
+ sub_80BE160((TVShow *)bravoTrainerTower);
+ bravoTrainerTower->language = GAME_LANGUAGE;
+}
+
+void sub_80BE3BC(void)
+{
u8 rval;
- TVShow *tvShow;
u8 i;
rval = sub_80BF77C(0x5555);
- if (rval == 0) {
+ if (rval == 0)
+ {
gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
- if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) {
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1)
+ {
sub_80BF20C();
- if (gUnknown_02038724[0].item_amount >= 20) {
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- tvShow->smartshopperShow.var00 = TVSHOW_SMART_SHOPPER;
- tvShow->smartshopperShow.var01 = rval;
- tvShow->smartshopperShow.shopLocation = gMapHeader.name;
- for (i=0; i<3; i++) {
- tvShow->smartshopperShow.itemIds[i] = gUnknown_02038724[i].item_id;
- tvShow->smartshopperShow.itemAmounts[i] = gUnknown_02038724[i].item_amount;
+ if (gUnknown_02038724[0].item_amount >= 20)
+ {
+ struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].smartshopperShow;
+
+ smartShopper->var00 = TVSHOW_SMART_SHOPPER;
+ smartShopper->var01 = rval;
+ smartShopper->shopLocation = gMapHeader.regionMapSectionId;
+ for (i=0; i<3; i++)
+ {
+ smartShopper->itemIds[i] = gUnknown_02038724[i].item_id;
+ smartShopper->itemAmounts[i] = gUnknown_02038724[i].item_amount;
}
- tvShow->smartshopperShow.priceReduced = GetPriceReduction(1);
- StringCopy(tvShow->smartshopperShow.playerName, gSaveBlock2.playerName);
- sub_80BE138(tvShow);
- tvShow->smartshopperShow.language = GAME_LANGUAGE;
+ smartShopper->priceReduced = GetPriceReduction(1);
+ StringCopy(smartShopper->playerName, gSaveBlock2.playerName);
+ sub_80BE138((TVShow *)smartShopper);
+ smartShopper->language = GAME_LANGUAGE;
}
}
}
@@ -921,132 +723,90 @@ void sub_80BE3BC(void) {
void sub_80BE478(void)
{
- u16 playerNameLength;
- u16 pokemonNicknameLength;
- TVShow *tvShow;
-
sub_80BF478();
-
if (gScriptResult == 1)
- {
return;
- }
GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
-
- playerNameLength = StringLength(gSaveBlock2.playerName);
- if (playerNameLength <= 1)
+ if (StringLength(gSaveBlock2.playerName) > 1 && StringLength(gStringVar1) > 1)
{
- return;
- }
+ struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].nameRaterShow;
- pokemonNicknameLength = StringLength(gStringVar1);
- if (pokemonNicknameLength <= 1)
- {
- return;
+ nameRaterShow->var00 = TVSHOW_NAME_RATER_SHOW;
+ nameRaterShow->var01 = 1;
+ nameRaterShow->species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
+ nameRaterShow->random = Random() % 3;
+ nameRaterShow->random2 = Random() % 2;
+ nameRaterShow->var1C = sub_80BF674(nameRaterShow->species);
+ StringCopy(nameRaterShow->trainerName, gSaveBlock2.playerName);
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, nameRaterShow->pokemonName);
+ sub_80BE160((TVShow *)nameRaterShow);
+ nameRaterShow->language = GAME_LANGUAGE;
+ nameRaterShow->pokemonNameLanguage = sub_80BDEAC(nameRaterShow->pokemonName);
+ StripExtCtrlCodes(nameRaterShow->pokemonName);
}
-
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
-
- tvShow->nameRaterShow.var00 = TVSHOW_NAME_RATER_SHOW;
- tvShow->nameRaterShow.var01 = 1;
-
- tvShow->nameRaterShow.species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
- tvShow->nameRaterShow.random = Random() % 3;
- tvShow->nameRaterShow.random2 = Random() % 2;
-
- tvShow->nameRaterShow.var1C = sub_80BF674(tvShow->nameRaterShow.species);
-
- StringCopy(tvShow->nameRaterShow.trainerName, gSaveBlock2.playerName);
-
- GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, tvShow->nameRaterShow.pokemonName);
-
- sub_80BE160(tvShow);
-
- tvShow->nameRaterShow.language = GAME_LANGUAGE;
- tvShow->nameRaterShow.pokemonNameLanguage = sub_80BDEAC(tvShow->nameRaterShow.pokemonName);
-
- StripExtCtrlCodes(tvShow->nameRaterShow.pokemonName);
}
void StartMassOutbreak(void)
{
- TVShow *tvShow;
-
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
-
- gSaveBlock1.outbreakPokemonSpecies = tvShow->massOutbreak.species;
- gSaveBlock1.outbreakLocationMapNum = tvShow->massOutbreak.locationMapNum;
- gSaveBlock1.outbreakLocationMapGroup = tvShow->massOutbreak.locationMapGroup;
- gSaveBlock1.outbreakPokemonLevel = tvShow->massOutbreak.level;
- gSaveBlock1.outbreakUnk1 = tvShow->massOutbreak.var02;
- gSaveBlock1.outbreakUnk2 = tvShow->massOutbreak.var0E;
- gSaveBlock1.outbreakPokemonMoves[0] = tvShow->massOutbreak.moves[0];
- gSaveBlock1.outbreakPokemonMoves[1] = tvShow->massOutbreak.moves[1];
- gSaveBlock1.outbreakPokemonMoves[2] = tvShow->massOutbreak.moves[2];
- gSaveBlock1.outbreakPokemonMoves[3] = tvShow->massOutbreak.moves[3];
- gSaveBlock1.outbreakUnk4 = tvShow->massOutbreak.var03;
- gSaveBlock1.outbreakPokemonProbability = tvShow->massOutbreak.probability;
+ struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak;
+
+ gSaveBlock1.outbreakPokemonSpecies = massOutbreak->species;
+ gSaveBlock1.outbreakLocationMapNum = massOutbreak->locationMapNum;
+ gSaveBlock1.outbreakLocationMapGroup = massOutbreak->locationMapGroup;
+ gSaveBlock1.outbreakPokemonLevel = massOutbreak->level;
+ gSaveBlock1.outbreakUnk1 = massOutbreak->var02;
+ gSaveBlock1.outbreakUnk2 = massOutbreak->var0E;
+ gSaveBlock1.outbreakPokemonMoves[0] = massOutbreak->moves[0];
+ gSaveBlock1.outbreakPokemonMoves[1] = massOutbreak->moves[1];
+ gSaveBlock1.outbreakPokemonMoves[2] = massOutbreak->moves[2];
+ gSaveBlock1.outbreakPokemonMoves[3] = massOutbreak->moves[3];
+ gSaveBlock1.outbreakUnk4 = massOutbreak->var03;
+ gSaveBlock1.outbreakPokemonProbability = massOutbreak->probability;
gSaveBlock1.outbreakUnk5 = 2;
}
void sub_80BE5FC(void)
{
- TVShow *tvShow;
- u16 species;
+ struct TVShowFanClubLetter *fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter;
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
-
- tvShow->fanclubLetter.var00 = TVSHOW_FAN_CLUB_LETTER;
- tvShow->fanclubLetter.var01 = 1;
- StringCopy(tvShow->fanclubLetter.playerName, gSaveBlock2.playerName);
-
- species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
- tvShow->fanclubLetter.species = species;
- sub_80BE160(tvShow);
- tvShow->fanclubLetter.language = GAME_LANGUAGE;
+ fanclubLetter->var00 = TVSHOW_FAN_CLUB_LETTER;
+ fanclubLetter->var01 = 1;
+ StringCopy(fanclubLetter->playerName, gSaveBlock2.playerName);
+ fanclubLetter->species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
+ sub_80BE160((TVShow *)fanclubLetter);
+ fanclubLetter->language = GAME_LANGUAGE;
}
void sub_80BE65C(void)
{
- TVShow *tvShow;
+ struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings;
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
-
- tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS;
- tvShow->recentHappenings.var01 = 1;
- StringCopy(tvShow->recentHappenings.playerName, gSaveBlock2.playerName);
- tvShow->recentHappenings.var02 = 0;
-
- sub_80BE160(tvShow);
- tvShow->recentHappenings.language = GAME_LANGUAGE;
+ recentHappenings->var00 = TVSHOW_RECENT_HAPPENINGS;
+ recentHappenings->var01 = 1;
+ StringCopy(recentHappenings->playerName, gSaveBlock2.playerName);
+ recentHappenings->var02 = 0;
+ sub_80BE160((TVShow *)recentHappenings);
+ recentHappenings->language = GAME_LANGUAGE;
}
void sub_80BE6A0(void)
{
- TVShow *tvShow;
u8 monIndex;
+ struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubOpinions;
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
-
- tvShow->fanclubOpinions.var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS;
- tvShow->fanclubOpinions.var01 = 1;
-
+ fanclubOpinions->var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS;
+ fanclubOpinions->var01 = 1;
monIndex = GetLeadMonIndex();
-
- tvShow->fanclubOpinions.var04A = GetMonData(&gPlayerParty[monIndex], MON_DATA_FRIENDSHIP, NULL) / 16;
- tvShow->fanclubOpinions.var04B = gSpecialVar_0x8007;
-
-
- StringCopy(tvShow->fanclubOpinions.playerName, gSaveBlock2.playerName);
-
- GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, tvShow->fanclubOpinions.var10);
-
- tvShow->fanclubOpinions.var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
- sub_80BE160(tvShow);
- tvShow->fanclubOpinions.language = GAME_LANGUAGE;
- tvShow->fanclubOpinions.var0E = sub_80BDEAC(tvShow->fanclubOpinions.var10);
- StripExtCtrlCodes(tvShow->fanclubOpinions.var10);
+ fanclubOpinions->var04A = GetMonData(&gPlayerParty[monIndex], MON_DATA_FRIENDSHIP, NULL) / 16;
+ fanclubOpinions->var04B = gSpecialVar_0x8007;
+ StringCopy(fanclubOpinions->playerName, gSaveBlock2.playerName);
+ GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, fanclubOpinions->var10);
+ fanclubOpinions->var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
+ sub_80BE160((TVShow *)fanclubOpinions);
+ fanclubOpinions->language = GAME_LANGUAGE;
+ fanclubOpinions->var0E = sub_80BDEAC(fanclubOpinions->var10);
+ StripExtCtrlCodes(fanclubOpinions->var10);
}
void nullsub_21(void)
@@ -1055,66 +815,46 @@ void nullsub_21(void)
void sub_80BE778(void)
{
- u8 i;
-
- if (!FlagGet(SYS_GAME_CLEAR))
+ if (FlagGet(SYS_GAME_CLEAR))
{
- return;
- }
+ u8 i;
-
- for (i = 0; i < 24; i++)
- {
- if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK)
+ for (i = 0; i < 24; i++)
{
- return;
+ if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK)
+ return;
}
- }
-
- if (sub_80BF77C(0x147))
- {
- return;
- }
-
- gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows);
- if (gUnknown_03005D38.var0 == -1)
- {
- return;
- }
- {
- u16 rand;
- u16 val;
- s32 val2;
- TVShow *tvShow;
-
- rand = Random();
- val = rand % 5;
-
- val2 = gUnknown_03005D38.var0;
-
- tvShow = &gSaveBlock1.tvShows[val2];
-
- tvShow->massOutbreak.var00 = TVSHOW_MASS_OUTBREAK;
- tvShow->massOutbreak.var01 = 1;
-
- tvShow->massOutbreak.level = gPokeOutbreakSpeciesList[val].level;
- tvShow->massOutbreak.var02 = 0;
- tvShow->massOutbreak.var03 = 0;
- tvShow->massOutbreak.species = gPokeOutbreakSpeciesList[val].species;
- tvShow->massOutbreak.var0E = 0;
- tvShow->massOutbreak.moves[0] = gPokeOutbreakSpeciesList[val].moves[0];
- tvShow->massOutbreak.moves[1] = gPokeOutbreakSpeciesList[val].moves[1];
- tvShow->massOutbreak.moves[2] = gPokeOutbreakSpeciesList[val].moves[2];
- tvShow->massOutbreak.moves[3] = gPokeOutbreakSpeciesList[val].moves[3];
- tvShow->massOutbreak.locationMapNum = gPokeOutbreakSpeciesList[val].location;
- tvShow->massOutbreak.locationMapGroup = 0;
- tvShow->massOutbreak.var12 = 0;
- tvShow->massOutbreak.probability = 0x32;
- tvShow->massOutbreak.var15 = 0;
- tvShow->massOutbreak.var16 = 0x01;
- sub_80BE160(tvShow);
+ if (sub_80BF77C(0x147))
+ return;
- tvShow->massOutbreak.language = GAME_LANGUAGE;
+ gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows);
+ if (gUnknown_03005D38.var0 != -1)
+ {
+ u16 rand = Random();
+ u16 val = rand % 5;
+ s32 val2 = gUnknown_03005D38.var0;
+ struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[val2].massOutbreak;
+
+ massOutbreak->var00 = TVSHOW_MASS_OUTBREAK;
+ massOutbreak->var01 = 1;
+ massOutbreak->level = gPokeOutbreakSpeciesList[val].level;
+ massOutbreak->var02 = 0;
+ massOutbreak->var03 = 0;
+ massOutbreak->species = gPokeOutbreakSpeciesList[val].species;
+ massOutbreak->var0E = 0;
+ massOutbreak->moves[0] = gPokeOutbreakSpeciesList[val].moves[0];
+ massOutbreak->moves[1] = gPokeOutbreakSpeciesList[val].moves[1];
+ massOutbreak->moves[2] = gPokeOutbreakSpeciesList[val].moves[2];
+ massOutbreak->moves[3] = gPokeOutbreakSpeciesList[val].moves[3];
+ massOutbreak->locationMapNum = gPokeOutbreakSpeciesList[val].location;
+ massOutbreak->locationMapGroup = 0;
+ massOutbreak->var12 = 0;
+ massOutbreak->probability = 0x32;
+ massOutbreak->var15 = 0;
+ massOutbreak->var16 = 0x01;
+ sub_80BE160((TVShow *)massOutbreak);
+ massOutbreak->language = GAME_LANGUAGE;
+ }
}
}
@@ -1146,15 +886,20 @@ void UpdateTVShowsPerDay(u16 arg0)
void sub_80BE8EC(u16 arg0)
{
u8 showidx;
- TVShow *tvShow;
- if (gSaveBlock1.outbreakPokemonSpecies == 0) {
- for (showidx=0; showidx<24; showidx++) {
- if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) {
- tvShow = &(gSaveBlock1.tvShows[showidx]);
- if (tvShow->massOutbreak.var16 < arg0)
- tvShow->massOutbreak.var16 = 0;
+
+ if (gSaveBlock1.outbreakPokemonSpecies == 0)
+ {
+ for (showidx=0; showidx<24; showidx++)
+ {
+ if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK
+ && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01)
+ {
+ struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[showidx].massOutbreak;
+
+ if (massOutbreak->var16 < arg0)
+ massOutbreak->var16 = 0;
else
- tvShow->massOutbreak.var16 -= arg0;
+ massOutbreak->var16 -= arg0;
break;
}
}
@@ -1172,7 +917,9 @@ void UpdateMassOutbreakTimeLeft(u16 arg0)
void sub_80BE97C(bool8 flag)
{
u8 var0, var1;
- if (flag != 0) {
+
+ if (flag)
+ {
var0 = gUnknown_020387E2 >> 8;
if (var0 > 4)
sub_80BE9D4();
@@ -1180,7 +927,9 @@ void sub_80BE97C(bool8 flag)
var1 = gUnknown_020387E2 & 0xFF;
if (var1 != 0xFF)
gUnknown_020387E2++;
- } else {
+ }
+ else
+ {
var0 = gUnknown_020387E2 & 0xFF;
if (var0 > 4)
sub_80BE9D4();
@@ -1191,29 +940,24 @@ void sub_80BE97C(bool8 flag)
}
}
-void sub_80BE9D4()
+void sub_80BE9D4(void)
{
- TVShow *show;
+ //TVShow *show;
gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
- if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) {
- show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]);
-#ifdef NONMATCHING
- show->pokemonAngler.var00 = TVSHOW_FISHING_ADVICE;
- show->pokemonAngler.var01 = 0;
-#else
- asm(".syntax unified\n\
- movs r1, 0\n\
- movs r0, 24\n\
- strb r0, [r4]\n\
- strb r1, [r4, 1]\n\
- .syntax divided\n");
-#endif
- show->pokemonAngler.var02 = gUnknown_020387E2 & 0xFF;
- show->pokemonAngler.var03 = gUnknown_020387E2 >> 8;
- show->pokemonAngler.var04 = gUnknown_020387E0;
- StringCopy(show->pokemonAngler.playerName, gSaveBlock2.playerName);
- sub_80BE138(show);
- show->pokemonAngler.language = GAME_LANGUAGE;
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1)
+ {
+ struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].pokemonAngler;
+ register u8 zero asm("r1") = 0;
+
+ asm(""::"r"(zero));
+ pokemonAngler->var00 = TVSHOW_FISHING_ADVICE;
+ pokemonAngler->var01 = zero;
+ pokemonAngler->var02 = gUnknown_020387E2 & 0xFF;
+ pokemonAngler->var03 = gUnknown_020387E2 >> 8;
+ pokemonAngler->var04 = gUnknown_020387E0;
+ StringCopy(pokemonAngler->playerName, gSaveBlock2.playerName);
+ sub_80BE138((TVShow *)pokemonAngler);
+ pokemonAngler->language = GAME_LANGUAGE;
}
}
@@ -1226,95 +970,100 @@ void sub_80BEA88(void);
void sub_80BEA5C(u16 arg0)
{
- TVShow *unk_2a98;
- unk_2a98 = &gSaveBlock1.tvShows[24];
- if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS)
+ struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[24].worldOfMasters;
+
+ if (worldOfMasters->var00 == TVSHOW_WORLD_OF_MASTERS)
{
- if (unk_2a98->worldOfMasters.var02 < 20)
- {
+ if (worldOfMasters->var02 < 20)
sub_80BF55C(gSaveBlock1.tvShows, 0x18);
- }
else
- {
sub_80BEA88();
- }
}
}
void sub_80BEA88(void)
{
- TVShow *unk_2a98;
- TVShow *tvShow;
- u8 rval;
- unk_2a98 = &gSaveBlock1.tvShows[24];
- rval = sub_80BF77C(0xFFFF);
- if (rval == 0)
+ struct TVShowWorldOfMasters *worldOfMastersSrc = &gSaveBlock1.tvShows[24].worldOfMasters;
+
+ if (sub_80BF77C(0xFFFF) == 0)
{
gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1)
{
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS;
- tvShow->worldOfMasters.var01 = rval;
- tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02;
- tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->worldOfMasters.var06;
- tvShow->worldOfMasters.var04 = unk_2a98->worldOfMasters.var04;
- tvShow->worldOfMasters.var08 = unk_2a98->worldOfMasters.var08;
- tvShow->worldOfMasters.var0a = unk_2a98->worldOfMasters.var0a;
- StringCopy(tvShow->worldOfMasters.playerName, gSaveBlock2.playerName);
- sub_80BE138(tvShow);
- tvShow->worldOfMasters.language = GAME_LANGUAGE;
+ struct TVShowWorldOfMasters *worldOfMastersDst = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].worldOfMasters;
+
+ worldOfMastersDst->var00 = TVSHOW_WORLD_OF_MASTERS;
+ worldOfMastersDst->var01 = 0;
+ worldOfMastersDst->var02 = worldOfMastersSrc->var02;
+ worldOfMastersDst->var06 = GetGameStat(GAME_STAT_STEPS) - worldOfMastersSrc->var06;
+ worldOfMastersDst->var04 = worldOfMastersSrc->var04;
+ worldOfMastersDst->var08 = worldOfMastersSrc->var08;
+ worldOfMastersDst->var0a = worldOfMastersSrc->var0a;
+ StringCopy(worldOfMastersDst->playerName, gSaveBlock2.playerName);
+ sub_80BE138((TVShow *)worldOfMastersDst);
+ worldOfMastersDst->language = GAME_LANGUAGE;
}
}
}
-void sub_80BEB20(void) {
+void sub_80BEB20(void)
+{
u16 rval;
- struct SaveBlock1 *save;
- struct UnknownSaveStruct2ABC *unk2abc;
- if (FlagGet(SYS_GAME_CLEAR) != 0) {
- unk2abc = gSaveBlock1.unknown_2ABC;
- gUnknown_03005D38.var0 = sub_80BEBC8(unk2abc);
- if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) {
+
+ if (FlagGet(SYS_GAME_CLEAR) != 0)
+ {
+ gUnknown_03005D38.var0 = sub_80BEBC8(gSaveBlock1.unknown_2ABC);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1)
+ {
rval = (Random() % 3) + 1;
- if (sub_80BEE48(rval) != 1) {
- save = &gSaveBlock1;
- save->unknown_2ABC[gUnknown_03005D38.var0].val0 = rval;
- save->unknown_2ABC[gUnknown_03005D38.var0].val2 = 4;
- save->unknown_2ABC[gUnknown_03005D38.var0].val1 = 1;
+ if (sub_80BEE48(rval) != 1)
+ {
+ gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val0 = rval;
+ gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val2 = 4;
+ gSaveBlock1.unknown_2ABC[gUnknown_03005D38.var0].val1 = 1;
}
}
}
}
-int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0) {
+int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0)
+{
s8 i;
- for (i=0; i<16; i++) {
- if (arg0[i].val0 == 0) {
+
+ for (i = 0; i < 16; i++)
+ {
+ if (arg0[i].val0 == 0)
return i;
- }
}
return -1;
}
-void sub_80BEBF4(void) {
+void sub_80BEBF4(void)
+{
u8 i;
- for (i=0; i<16; i++) {
+
+ for (i = 0; i < 16; i++)
sub_80BEC10(i);
- }
}
-void sub_80BEC10(u8 arg0) {
+void sub_80BEC10(u8 arg0)
+{
gSaveBlock1.unknown_2ABC[arg0].val0 = 0;
gSaveBlock1.unknown_2ABC[arg0].val1 = 0;
gSaveBlock1.unknown_2ABC[arg0].val2 = 0;
}
-void sub_80BEC40(void) {
+void sub_80BEC40(void)
+{
u8 i, j;
- for (i = 0; i < 15; i++) {
- if (gSaveBlock1.unknown_2ABC[i].val0 == 0) {
- for (j = i + 1; j < 16; j++) {
- if (gSaveBlock1.unknown_2ABC[j].val0 != 0) {
+
+ for (i = 0; i < 15; i++)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val0 == 0)
+ {
+ for (j = i + 1; j < 16; j++)
+ {
+ if (gSaveBlock1.unknown_2ABC[j].val0 != 0)
+ {
gSaveBlock1.unknown_2ABC[i] = gSaveBlock1.unknown_2ABC[j];
sub_80BEC10(j);
break;
@@ -1327,12 +1076,12 @@ void sub_80BEC40(void) {
u8 sub_80BECA0(void)
{
u8 i;
- for (i=0; i<16; i++)
+ for (i = 0; i < 16; i++)
{
- if (gSaveBlock1.unknown_2ABC[i].val0 != 0 && gSaveBlock1.unknown_2ABC[i].val1 == 1 && gSaveBlock1.unknown_2ABC[i].val2 < 3)
- {
+ if (gSaveBlock1.unknown_2ABC[i].val0 != 0
+ && gSaveBlock1.unknown_2ABC[i].val1 == 1
+ && gSaveBlock1.unknown_2ABC[i].val2 < 3)
return i;
- }
}
return 0xFF;
}
@@ -1350,17 +1099,14 @@ void sub_80BECE8(void)
{
gSaveBlock1.unknown_2ABC[arg0].val1 = 2;
if (gLocalTime.hours < 20)
- {
ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.unknown_2ABC[arg0].val0]);
- }
else
- {
ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.unknown_2ABC[arg0].val0]);
- }
}
else
{
u16 value = gSaveBlock1.unknown_2ABC[arg0].val2;
+
ConvertIntToDecimalStringN(gStringVar1, value, 0, 1);
gSaveBlock1.unknown_2ABC[arg0].val1 = 0;
ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]);
@@ -1371,22 +1117,17 @@ void sub_80BECE8(void)
bool8 GetPriceReduction(u8 arg0)
{
u8 i;
+
if (arg0 == 0)
- {
return FALSE;
- }
for (i=0; i<16; i++)
{
if (gSaveBlock1.unknown_2ABC[i].val0 == arg0)
{
if (gSaveBlock1.unknown_2ABC[i].val1 == 2 && IsPriceDiscounted(arg0) != 0)
- {
return TRUE;
- }
else
- {
return FALSE;
- }
}
}
return FALSE;
@@ -1397,24 +1138,19 @@ bool8 IsPriceDiscounted(u8 arg0)
switch (arg0)
{
case 1:
- if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a)
- {
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY
+ && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY
+ && gScriptLastTalked == 0x1a)
return TRUE;
- }
else
- {
return FALSE;
- }
break;
case 3:
- if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
- {
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP
+ && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
return TRUE;
- }
else
- {
return FALSE;
- }
break;
default:
return TRUE;
@@ -1424,19 +1160,13 @@ bool8 IsPriceDiscounted(u8 arg0)
bool8 sub_80BEE48(u8 arg0)
{
u8 i;
+
if (arg0 == 0)
- {
return TRUE;
- }
- else
+ for (i=0; i<16; i++)
{
- for (i=0; i<16; i++)
- {
- if (gSaveBlock1.unknown_2ABC[i].val0 == arg0)
- {
- return TRUE;
- }
- }
+ if (gSaveBlock1.unknown_2ABC[i].val0 == arg0)
+ return TRUE;
}
return FALSE;
}
@@ -1444,6 +1174,7 @@ bool8 sub_80BEE48(u8 arg0)
void sub_80BEE84(u16 var0)
{
u8 i;
+
for (i=0; i<16; i++)
{
if (gSaveBlock1.unknown_2ABC[i].val0)
@@ -1455,9 +1186,7 @@ void sub_80BEE84(u16 var0)
else
{
if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(SYS_GAME_CLEAR) == 1)
- {
gSaveBlock1.unknown_2ABC[i].val1 = 1;
- }
gSaveBlock1.unknown_2ABC[i].val2 -= var0;
}
}
@@ -1508,15 +1237,15 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category)
void SetContestCategoryStringVarForInterview(void)
{
- TVShow *tvShow;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
- CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory);
+ struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer;
+
+ CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory);
}
void sub_80BF088(u8 arg0, s32 price)
{
- size_t log10val;
- log10val = sub_80BF0B8(price);
+ size_t log10val = sub_80BF0B8(price);
+
ConvertIntToDecimalStringN(gUnknown_083D1464[arg0], price, 0, log10val);
}
@@ -1547,38 +1276,31 @@ void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1)
u8 i;
s32 price;
price = 0;
- for (i=0; i<3; i++)
+
+ for (i = 0; i < 3; i++)
{
if (arg1->itemIds[i])
- {
price += ItemId_GetPrice(arg1->itemIds[i]) * arg1->itemAmounts[i];
- }
}
if (arg1->priceReduced == 1)
- {
sub_80BF088(arg0, price >> 1);
- }
else
- {
sub_80BF088(arg0, price);
- }
}
bool8 sub_80BF1B4(u8 showIdx)
{
- TVShow *tvShows;
u8 i;
- u32 trainerId;
- tvShows = gSaveBlock1.tvShows;
- trainerId = GetPlayerTrainerId();
- for (i=5; i<24; i++)
+ //TVShow *tvShows;
+ TVShow *tvShows = gSaveBlock1.tvShows;
+ u32 trainerId = GetPlayerTrainerId();
+
+ for (i = 5; i < 24; i++)
{
if (tvShows[i].common.var00 == showIdx)
{
if ((trainerId & 0xFF) == tvShows[i].common.trainerIdLo && ((trainerId >> 8) & 0xFF) == tvShows[i].common.trainerIdHi)
- {
return TRUE;
- }
}
}
return FALSE;
@@ -1588,9 +1310,10 @@ void sub_80BF20C(void)
{
u8 i, j;
u16 tmpId, tmpAmount;
- for (i=0; i<2; i++)
+
+ for (i = 0; i < 2; i++)
{
- for (j=i+1; j<3; j++)
+ for (j = i + 1; j < 3; j++)
{
if (gUnknown_02038724[i].item_amount < gUnknown_02038724[j].item_amount)
{
@@ -1608,9 +1331,11 @@ void sub_80BF20C(void)
void sub_80BF25C(u8 showType)
{
u8 i;
- for (i=0; i<5; i++)
+
+ for (i = 0; i < 5; i++)
{
- if (gSaveBlock1.tvShows[i].common.var00 == showType) {
+ if (gSaveBlock1.tvShows[i].common.var00 == showType)
+ {
if(gSaveBlock1.tvShows[i].common.var01 == 1)
{
gScriptResult = 1;
@@ -1630,7 +1355,8 @@ void sub_80BF25C(u8 showType)
void sub_80BF2C4(void)
{
gScriptResult = 0;
- switch (gSpecialVar_0x8005) {
+ switch (gSpecialVar_0x8005)
+ {
case TVSHOW_FAN_CLUB_LETTER:
sub_80BF334();
break;
@@ -1657,35 +1383,41 @@ void sub_80BF2C4(void)
void sub_80BF334(void)
{
- TVShow *show;
+ struct TVShowFanClubLetter *fanclubLetter;
+
sub_80BF25C(TVSHOW_FAN_CLUB_LETTER);
- if (gScriptResult == 0) {
+ if (gScriptResult == 0)
+ {
StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]);
- show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- sub_80EB6FC(show->fanclubLetter.pad04, 6);
+ fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter;
+ sub_80EB6FC(fanclubLetter->pad04, 6);
}
}
void sub_80BF3A4(void)
{
- TVShow *show;
+ struct TVShowRecentHappenings *recentHappenings;
+
sub_80BF25C(TVSHOW_RECENT_HAPPENINGS);
- if (gScriptResult == 0) {
- show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- sub_80EB6FC(show->recentHappenings.var04, 6);
+ if (gScriptResult == 0)
+ {
+ recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings;
+ sub_80EB6FC(recentHappenings->var04, 6);
}
}
void sub_80BF3DC(void)
{
- TVShow *show;
+ struct TVShowFanclubOpinions *fanclubOpinions;
+
sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS);
- if (gScriptResult == 0) {
+ if (gScriptResult == 0)
+ {
StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]);
GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2);
StringGetEnd10(gStringVar2);
- show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- sub_80EB6FC(show->fanclubOpinions.var1C, 2);
+ fanclubOpinions = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubOpinions;
+ sub_80EB6FC(fanclubOpinions->var1C, 2);
}
}
@@ -1701,21 +1433,25 @@ void sub_80BF478(void)
void sub_80BF484(void)
{
- TVShow *show;
+ struct TVShowBravoTrainerPokemonProfiles *bravoTrainer;
+
sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE);
- if (gScriptResult == 0) {
- show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- sub_80EB6FC(show->bravoTrainer.var04, 2);
+ if (gScriptResult == 0)
+ {
+ bravoTrainer = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer;
+ sub_80EB6FC(bravoTrainer->var04, 2);
}
}
void sub_80BF4BC(void)
{
- TVShow *show;
+ struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower;
+
sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE);
- if (gScriptResult == 0) {
- show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
- sub_80EB6FC(show->bravoTrainerTower.var18, 1); // wrong struct ident, fix later
+ if (gScriptResult == 0)
+ {
+ bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower;
+ sub_80EB6FC(bravoTrainerTower->var18, 1); // wrong struct ident, fix later
}
}
@@ -1725,13 +1461,9 @@ u8 sub_80BF4F4(u8 arg0)
u32 species;
GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1);
-
species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL);
-
if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1) == FALSE)
- {
return FALSE;
- }
return TRUE;
}
@@ -1740,22 +1472,18 @@ u8 sub_80BF4F4(u8 arg0)
{
u8 langData[4];
u32 species;
-
u8 *tmp;
GetMonData(&gPlayerParty[arg0], MON_DATA_NICKNAME, &gStringVar1);
tmp = langData;
tmp[0] = GetMonData(&gPlayerParty[arg0], MON_DATA_LANGUAGE, &langData);
- if (tmp[0] != GAME_LANGUAGE) {
+ if (tmp[0] != GAME_LANGUAGE)
return TRUE;
- }
species = GetMonData(&gPlayerParty[arg0], MON_DATA_SPECIES, NULL);
-
- if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1)) {
+ if (StringCompareWithoutExtCtrlCodes(gSpeciesNames[species], gStringVar1))
return TRUE;
- }
return FALSE;
}
@@ -1769,21 +1497,26 @@ u8 sub_80BF544(void)
void sub_80BF55C(TVShow tvShow[], u8 showidx)
{
u8 idx;
+
tvShow[showidx].common.var00 = 0;
tvShow[showidx].common.var01 = 0;
- for (idx=0; idx<34; idx++) {
+ for (idx = 0; idx < 34; idx++)
tvShow[showidx].common.pad02[idx] = 0;
- }
}
void sub_80BF588(TVShow tvShow[])
{
u8 showidx;
u8 showidx2;
- for (showidx=0; showidx<4; showidx++) {
- if (tvShow[showidx].common.var00 == 0) {
- for (showidx2=showidx+1; showidx2<5; showidx2++) {
- if (tvShow[showidx2].common.var00 != 0) {
+
+ for (showidx = 0; showidx < 4; showidx++)
+ {
+ if (tvShow[showidx].common.var00 == 0)
+ {
+ for (showidx2 = showidx + 1; showidx2 < 5; showidx2++)
+ {
+ if (tvShow[showidx2].common.var00 != 0)
+ {
tvShow[showidx] = tvShow[showidx2];
sub_80BF55C(tvShow, showidx2);
break;
@@ -1791,10 +1524,14 @@ void sub_80BF588(TVShow tvShow[])
}
}
}
- for (showidx=5; showidx<24; showidx++) {
- if (tvShow[showidx].common.var00 == 0) {
- for (showidx2=showidx+1; showidx2<24; showidx2++) {
- if (tvShow[showidx2].common.var00 != 0) {
+ for (showidx = 5; showidx < 24; showidx++)
+ {
+ if (tvShow[showidx].common.var00 == 0)
+ {
+ for (showidx2 = showidx + 1; showidx2 < 24; showidx2++)
+ {
+ if (tvShow[showidx2].common.var00 != 0)
+ {
tvShow[showidx] = tvShow[showidx2];
sub_80BF55C(gSaveBlock1.tvShows, showidx2);
break;
@@ -1807,6 +1544,7 @@ void sub_80BF588(TVShow tvShow[])
u16 sub_80BF638(u8 arg0, u16 arg1)
{
u16 retval = sub_80BF674(arg1);
+
StringCopy(gUnknown_083D1464[arg0], gSpeciesNames[retval]);
return retval;
}
@@ -1815,14 +1553,17 @@ u16 sub_80BF674(u16 species)
{
u16 rspecies;
u16 cspecies;
+
rspecies = (Random() % (NUM_SPECIES - 1)) + 1;
cspecies = rspecies;
- while ((s8)GetNationalPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) {
+ while (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species)
+ {
if (cspecies == SPECIES_BULBASAUR)
cspecies = NUM_SPECIES - 1;
else
cspecies --;
- if (cspecies == rspecies) {
+ if (cspecies == rspecies)
+ {
cspecies = species;
return cspecies;
}
@@ -1843,7 +1584,9 @@ void sub_80BF6D8(void)
s8 sub_80BF720(TVShow tvShow[])
{
u8 idx;
- for (idx=0; idx<5; idx++) {
+
+ for (idx = 0; idx < 5; idx++)
+ {
if (tvShow[idx].common.var00 == 0)
return idx;
}
@@ -1853,7 +1596,9 @@ s8 sub_80BF720(TVShow tvShow[])
s8 sub_80BF74C(TVShow tvShow[])
{
s8 idx;
- for (idx=5; idx<24; idx++) {
+
+ for (idx = 5; idx < 24; idx++)
+ {
if (tvShow[idx].common.var00 == 0)
return idx;
}
@@ -1870,12 +1615,14 @@ bool8 sub_80BF77C(u16 value)
void sub_80BF79C(TVShow *arg0)
{
u8 i = Random() % 6;
- while (1) {
+
+ while (1)
+ {
if (i == 6)
i = 0;
if (arg0->recentHappenings.var04[i] != 0xFFFF)
break;
- i ++;
+ i++;
}
sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]);
}
@@ -1884,8 +1631,11 @@ u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0)
{
u16 flagsum = 0;
u8 i = 0;
- if (arg0->pokemonName[0] != 0xFF) {
- while (i < 11 && arg0->pokemonName[i] != 0xFF) {
+
+ if (arg0->pokemonName[0] != 0xFF)
+ {
+ while (i < 11 && arg0->pokemonName[i] != 0xFF)
+ {
flagsum += arg0->pokemonName[i];
i++;
}
@@ -1893,49 +1643,77 @@ u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0)
return flagsum & 0x7;
}
+
void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNameRaterShow *tvShow)
{
u8 flags[3];
u16 nameLength;
u8 i;
- for (i=0; i<3; i++)
+
+ for (i = 0; i < 3; i++)
flags[i] = EOS;
- if (arg3 == 0) {
+
+ if (arg3 == 0)
+ {
nameLength = StringLength(tvShow->trainerName);
- if (arg2 == 0) {
+ if (arg2 == 0)
+ {
flags[0] = tvShow->trainerName[arg1];
- } else if (arg2 == 1) {
+ }
+ else if (arg2 == 1)
+ {
flags[0] = tvShow->trainerName[nameLength - arg1];
- } else if (arg2 == 2) {
+ }
+ else if (arg2 == 2) {
flags[0] = tvShow->trainerName[arg1];
flags[1] = tvShow->trainerName[arg1 + 1];
- } else {
+ }
+ else
+ {
flags[0] = tvShow->trainerName[nameLength - (arg1 + 2)];
flags[1] = tvShow->trainerName[nameLength - (arg1 + 1)];
}
- } else if (arg3 == 1) {
+ }
+ else if (arg3 == 1)
+ {
nameLength = StringLength(tvShow->pokemonName);
- if (arg2 == 0) {
+ if (arg2 == 0)
+ {
flags[0] = tvShow->pokemonName[arg1];
- } else if (arg2 == 1) {
+ }
+ else if (arg2 == 1)
+ {
flags[0] = tvShow->pokemonName[nameLength - arg1];
- } else if (arg2 == 2) {
+ }
+ else if (arg2 == 2)
+ {
flags[0] = tvShow->pokemonName[arg1];
flags[1] = tvShow->pokemonName[arg1 + 1];
- } else {
+ }
+ else
+ {
flags[0] = tvShow->pokemonName[nameLength - (arg1 + 2)];
flags[1] = tvShow->pokemonName[nameLength - (arg1 + 1)];
}
- } else {
+ }
+ else
+ {
nameLength = StringLength(gSpeciesNames[arg4]);
- if (arg2 == 0) {
+ if (arg2 == 0)
+ {
flags[0] = gSpeciesNames[arg4][arg1];
- } else if (arg2 == 1) {
+ }
+ else if (arg2 == 1)
+ {
flags[0] = gSpeciesNames[arg4][nameLength - arg1];
- } else if (arg2 == 2) {
+ }
+ else if (arg2 == 2)
+ {
flags[0] = gSpeciesNames[arg4][arg1];
flags[1] = gSpeciesNames[arg4][arg1 + 1];
- } else {
+ }
+ else
+ {
flags[0] = gSpeciesNames[arg4][nameLength - (arg1 + 2)];
flags[1] = gSpeciesNames[arg4][nameLength - (arg1 + 1)];
}
@@ -1946,7 +1724,8 @@ void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNam
bool8 sub_80BF974(void)
{
u8 i;
- for (i=0; i<5; i++)
+
+ for (i = 0; i < 5; i++)
{
if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004)
return TRUE;
@@ -1970,6 +1749,7 @@ void sub_80BF9F8(void)
u16 spec;
u16 gender;
u32 pval;
+
GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar3);
GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar2);
spec = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_SPECIES, 0);
@@ -2021,10 +1801,13 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void)
{
if (gSaveBlock1.location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
return 0;
- if (gSaveBlock2.playerGender == MALE) {
+ if (gSaveBlock2.playerGender == MALE)
+ {
if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
return 0;
- } else {
+ }
+ else
+ {
if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F)
return 0;
}
@@ -2035,165 +1818,56 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void)
return 1;
}
-#ifdef NONMATCHING
void GetMomOrDadStringForTVMessage(void)
{
- if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) {
- if (gSaveBlock2.playerGender == MALE) {
- if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) {
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
+ if (gSaveBlock2.playerGender == MALE)
+ {
+ if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
StringCopy(gStringVar1, gOtherText_Mom);
VarSet(VAR_0x4003, 1);
}
- } else {
- if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) {
+ }
+ else
+ {
+ if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F)
+ {
StringCopy(gStringVar1, gOtherText_Mom);
VarSet(VAR_0x4003, 1);
}
}
}
- if (VarGet(VAR_0x4003) == 1) {
+ if (VarGet(VAR_0x4003) == 1)
+ {
StringCopy(gStringVar1, gOtherText_Mom);
- } else if (VarGet(VAR_0x4003) == 2) {
+ }
+ else if (VarGet(VAR_0x4003) == 2)
+ {
StringCopy(gStringVar1, gOtherText_Dad);
- } else if (VarGet(VAR_0x4003) > 2) {
- if ((u16)(VarGet(VAR_0x4003) & 1) == 0) {
+ }
+ else if (VarGet(VAR_0x4003) > 2)
+ {
+ if (VarGet(VAR_0x4003) % 2 == 0)
StringCopy(gStringVar1, gOtherText_Mom);
- } else {
+ else
StringCopy(gStringVar1, gOtherText_Dad);
- }
- } else {
- if ((u16)(Random() & 1) != 0) {
+ }
+ else
+ {
+ if (Random() % 2 != 0)
+ {
StringCopy(gStringVar1, gOtherText_Mom);
VarSet(VAR_0x4003, 1);
- } else {
+ }
+ else
+ {
StringCopy(gStringVar1, gOtherText_Dad);
VarSet(VAR_0x4003, 2);
}
}
}
-#else
-__attribute__((naked))
-void GetMomOrDadStringForTVMessage(void)
-{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- ldr r1, _080BFC40 @ =gSaveBlock1\n\
- movs r0, 0x4\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0x1\n\
- bne _080BFC6C\n\
- ldr r0, _080BFC44 @ =gSaveBlock2\n\
- ldrb r0, [r0, 0x8]\n\
- cmp r0, 0\n\
- bne _080BFC54\n\
- movs r0, 0x5\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0\n\
- bne _080BFC6C\n\
- ldr r0, _080BFC48 @ =gStringVar1\n\
- ldr r1, _080BFC4C @ =gOtherText_Mom\n\
- bl StringCopy\n\
- ldr r0, _080BFC50 @ =0x00004003\n\
- movs r1, 0x1\n\
- bl VarSet\n\
- b _080BFC6C\n\
- .align 2, 0\n\
-_080BFC40: .4byte gSaveBlock1\n\
-_080BFC44: .4byte gSaveBlock2\n\
-_080BFC48: .4byte gStringVar1\n\
-_080BFC4C: .4byte gOtherText_Mom\n\
-_080BFC50: .4byte 0x00004003\n\
-_080BFC54:\n\
- movs r0, 0x5\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0x2\n\
- bne _080BFC6C\n\
- ldr r0, _080BFCB4 @ =gStringVar1\n\
- ldr r1, _080BFCB8 @ =gOtherText_Mom\n\
- bl StringCopy\n\
- ldr r0, _080BFCBC @ =0x00004003\n\
- movs r1, 0x1\n\
- bl VarSet\n\
-_080BFC6C:\n\
- ldr r4, _080BFCBC @ =0x00004003\n\
- adds r0, r4, 0\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- beq _080BFCAA\n\
- adds r0, r4, 0\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x2\n\
- beq _080BFCC0\n\
- adds r0, r4, 0\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x2\n\
- bls _080BFCD4\n\
- adds r0, r4, 0\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080BFCC0\n\
-_080BFCAA:\n\
- ldr r0, _080BFCB4 @ =gStringVar1\n\
- ldr r1, _080BFCB8 @ =gOtherText_Mom\n\
- bl StringCopy\n\
- b _080BFD10\n\
- .align 2, 0\n\
-_080BFCB4: .4byte gStringVar1\n\
-_080BFCB8: .4byte gOtherText_Mom\n\
-_080BFCBC: .4byte 0x00004003\n\
-_080BFCC0:\n\
- ldr r0, _080BFCCC @ =gStringVar1\n\
- ldr r1, _080BFCD0 @ =gOtherText_Dad\n\
- bl StringCopy\n\
- b _080BFD10\n\
- .align 2, 0\n\
-_080BFCCC: .4byte gStringVar1\n\
-_080BFCD0: .4byte gOtherText_Dad\n\
-_080BFCD4:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080BFD00\n\
- ldr r0, _080BFCF8 @ =gStringVar1\n\
- ldr r1, _080BFCFC @ =gOtherText_Mom\n\
- bl StringCopy\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl VarSet\n\
- b _080BFD10\n\
- .align 2, 0\n\
-_080BFCF8: .4byte gStringVar1\n\
-_080BFCFC: .4byte gOtherText_Mom\n\
-_080BFD00:\n\
- ldr r0, _080BFD18 @ =gStringVar1\n\
- ldr r1, _080BFD1C @ =gOtherText_Dad\n\
- bl StringCopy\n\
- adds r0, r4, 0\n\
- movs r1, 0x2\n\
- bl VarSet\n\
-_080BFD10:\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080BFD18: .4byte gStringVar1\n\
-_080BFD1C: .4byte gOtherText_Dad\n\
-.syntax divided\n");
-}
-#endif
void sub_80BFD20(void)
{
@@ -2201,7 +1875,8 @@ void sub_80BFD20(void)
RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
-typedef union ewramStruct_02007000 {
+typedef union ewramStruct_02007000
+{
TVShow tvshows[4][25];
struct UnknownSaveStruct2ABC unknown_2abc[4][16];
} ewramStruct_02007000;
@@ -2216,11 +1891,12 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2)
{
u8 i;
ewramStruct_02007000 *ewramTVShows;
- for (i=0; i<4; i++) {
+
+ for (i = 0; i < 4; i++)
memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], 25 * sizeof(TVShow));
- }
ewramTVShows = &gUnknown_02007000;
- switch (arg2) {
+ switch (arg2)
+ {
case 0:
sub_80BFE24(gSaveBlock1.tvShows, ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]);
break;
@@ -2241,9 +1917,6 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2)
sub_80C0408();
}
-extern u8 gUnknown_03000720;
-extern u8 gUnknown_03000721;
-extern s8 gUnknown_03000722;
s8 sub_80C019C(TVShow tvShows[]);
bool8 sub_80BFF68(TVShow * tv1[25], TVShow * tv2[25], u8 idx);
u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx);
@@ -2253,47 +1926,55 @@ u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx);
void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25])
{
u8 i, j;
- TVShow ** argslist[4];
+ TVShow **argslist[4];
+
argslist[0] = &arg0;
argslist[1] = &arg1;
argslist[2] = &arg2;
argslist[3] = &arg3;
gUnknown_03000720 = GetLinkPlayerCount();
- while (1) {
- for (i=0; i<gUnknown_03000720; i++) {
+ while (1)
+ {
+ for (i=0; i<gUnknown_03000720; i++)
+ {
if (i == 0)
gUnknown_020387E4 = i;
gUnknown_03000722 = sub_80C019C(argslist[i][0]);
- if (gUnknown_03000722 == -1) {
+ if (gUnknown_03000722 == -1)
+ {
gUnknown_020387E4++;
if (gUnknown_020387E4 == gUnknown_03000720)
return;
- } else {
- for (j=0; j<gUnknown_03000720-1; j++) {
+ }
+ else
+ {
+ for (j=0; j<gUnknown_03000720-1; j++)
+ {
gUnknown_03005D38.var0 = sub_80BF74C(argslist[(i + j + 1) % gUnknown_03000720][0]);
- if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(&argslist[(i + j + 1) % gUnknown_03000720][0], &argslist[i][0], (i + j + 1) % gUnknown_03000720) == 1) {
+ if (gUnknown_03005D38.var0 != -1
+ && sub_80BFF68(&argslist[(i + j + 1) % gUnknown_03000720][0], &argslist[i][0], (i + j + 1) % gUnknown_03000720) == 1)
break;
- }
}
- if (j == gUnknown_03000720 - 1) {
+ if (j == gUnknown_03000720 - 1)
sub_80BF55C(argslist[i][0], gUnknown_03000722);
- }
}
}
}
}
-#ifdef NONMATCHING
-bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) {
+bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx)
+{
u8 value;
u8 switchval;
- TVShow tv1[25];
- TVShow tv2[25];
+ TVShow *tv1;
+ TVShow *tv2;
+
tv1 = *arg1;
tv2 = *arg2;
value = FALSE;
switchval = sub_80BFB54(tv2[gUnknown_03000722].common.var00);
- switch (switchval) {
+ switch (switchval)
+ {
case 2:
value = sub_80C004C(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx);
break;
@@ -2304,140 +1985,23 @@ bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) {
value = sub_80C0134(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx);
break;
}
- if (value == TRUE) {
+ if (value == TRUE)
+ {
sub_80BF55C(tv2, gUnknown_03000722);
return TRUE;
- } else {
+ }
+ else
+ {
return FALSE;
}
}
-#else
-__attribute__((naked))
-bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) {
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x4\n\
- lsls r2, 24\n\
- lsrs r7, r2, 24\n\
- ldr r4, [r0]\n\
- ldr r6, [r1]\n\
- movs r5, 0\n\
- ldr r2, _080BFFA4 @ =gUnknown_03000722\n\
- movs r1, 0\n\
- ldrsb r1, [r2, r1]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6 @ this is the only mimsmatch\n\
- ldrb r0, [r0]\n\
- str r2, [sp]\n\
- bl sub_80BFB54\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r1, r0, 0\n\
- ldr r2, [sp]\n\
- cmp r0, 0x3\n\
- beq _080BFFD8\n\
- cmp r0, 0x3\n\
- bgt _080BFFA8\n\
- cmp r0, 0x2\n\
- beq _080BFFAE\n\
- b _080C0026\n\
- .align 2, 0\n\
-_080BFFA4: .4byte gUnknown_03000722\n\
-_080BFFA8:\n\
- cmp r1, 0x4\n\
- beq _080C0000\n\
- b _080C0026\n\
-_080BFFAE:\n\
- ldr r0, _080BFFD4 @ =gUnknown_03005D38\n\
- movs r1, 0\n\
- ldrsb r1, [r0, r1]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4, r0\n\
- ldrb r2, [r2]\n\
- lsls r2, 24\n\
- asrs r2, 24\n\
- lsls r1, r2, 3\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r6, r1\n\
- adds r2, r7, 0\n\
- bl sub_80C004C\n\
- b _080C0022\n\
- .align 2, 0\n\
-_080BFFD4: .4byte gUnknown_03005D38\n\
-_080BFFD8:\n\
- ldr r0, _080BFFFC @ =gUnknown_03005D38\n\
- movs r1, 0\n\
- ldrsb r1, [r0, r1]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4, r0\n\
- ldrb r2, [r2]\n\
- lsls r2, 24\n\
- asrs r2, 24\n\
- lsls r1, r2, 3\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r6, r1\n\
- adds r2, r7, 0\n\
- bl sub_80C00B4\n\
- b _080C0022\n\
- .align 2, 0\n\
-_080BFFFC: .4byte gUnknown_03005D38\n\
-_080C0000:\n\
- ldr r0, _080C0030 @ =gUnknown_03005D38\n\
- movs r1, 0\n\
- ldrsb r1, [r0, r1]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r4, r0\n\
- ldrb r2, [r2]\n\
- lsls r2, 24\n\
- asrs r2, 24\n\
- lsls r1, r2, 3\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r6, r1\n\
- adds r2, r7, 0\n\
- bl sub_80C0134\n\
-_080C0022:\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
-_080C0026:\n\
- cmp r5, 0x1\n\
- beq _080C0034\n\
- movs r0, 0\n\
- b _080C0040\n\
- .align 2, 0\n\
-_080C0030: .4byte gUnknown_03005D38\n\
-_080C0034:\n\
- ldr r0, _080C0048 @ =gUnknown_03000722\n\
- ldrb r1, [r0]\n\
- adds r0, r6, 0\n\
- bl sub_80BF55C\n\
- movs r0, 0x1\n\
-_080C0040:\n\
- add sp, 0x4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080C0048: .4byte gUnknown_03000722\n\
-.syntax divided\n");
-}
-#endif
-u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) {
+u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx)
+{
u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
- if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) {
+
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
return FALSE;
- }
tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo;
tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi;
tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
@@ -2447,14 +2011,13 @@ u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) {
return TRUE;
}
-u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) {
+u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx)
+{
u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
- if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) {
+ if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi)
return FALSE;
- }
- if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) {
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
return FALSE;
- }
tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo;
tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi;
tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF;
@@ -2464,11 +2027,11 @@ u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) {
return TRUE;
}
-u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) {
+u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx)
+{
u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
- if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) {
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
return FALSE;
- }
tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo;
tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi;
tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
@@ -2479,12 +2042,13 @@ u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) {
return TRUE;
}
-s8 sub_80C019C(TVShow tvShows[]) {
+s8 sub_80C019C(TVShow tvShows[])
+{
u8 i;
- for (i=0; i<24; i++) {
- if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60) {
+ for (i = 0; i < 24; i++)
+ {
+ if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60)
return i;
- }
}
return -1;
}
@@ -2749,82 +2313,40 @@ _080C03A0:\n\
}
#endif
-void sub_80C03A8(u8 showidx) {
+void sub_80C03A8(u8 showidx)
+{
gSaveBlock1.tvShows[showidx].common.var01 = 0;
}
-void sub_80C03C8(u16 species, u8 showidx) {
- if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) {
+void sub_80C03C8(u16 species, u8 showidx)
+{
+ if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0)
gSaveBlock1.tvShows[showidx].common.var01 = 0;
- }
}
-#ifdef NONMATCHING
-void sub_80C0408(void) {
+void sub_80C0408(void)
+{
u16 i;
- if (FlagGet(SYS_GAME_CLEAR) != 1) {
- for (i=0; i<24; i++) {
- if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK) {
- gSaveBlock1.tvShows[i].common.var01 = 0;
- }
- }
+
+ if (FlagGet(SYS_GAME_CLEAR) == TRUE)
+ return;
+ for (i = 0; i < 24; i++)
+ {
+ if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
+ gSaveBlock1.tvShows[i].common.var01 = 0;
+ else if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK)
+ gSaveBlock1.tvShows[i].common.var01 = 0;
}
}
-#else
-__attribute__((naked))
-void sub_80C0408(void) {
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r0, _080C044C @ =0x00000804\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- beq _080C0444\n\
- movs r2, 0\n\
- ldr r6, _080C0450 @ =gSaveBlock1\n\
- ldr r4, _080C0454 @ =0x00002739\n\
- movs r3, 0\n\
- ldr r5, _080C0458 @ =0x00002738\n\
-_080C0422:\n\
- lsls r0, r2, 3\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r1, r0, r6\n\
- adds r0, r1, r5\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x7\n\
- beq _080C0436\n\
- cmp r0, 0x29\n\
- bne _080C043A\n\
-_080C0436:\n\
- adds r0, r1, r4\n\
- strb r3, [r0]\n\
-_080C043A:\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x17\n\
- bls _080C0422\n\
-_080C0444:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080C044C: .4byte 0x00000804\n\
-_080C0450: .4byte gSaveBlock1\n\
-_080C0454: .4byte 0x00002739\n\
-_080C0458: .4byte 0x00002738\n\
-.syntax divided\n");
-}
-#endif
-void sub_80C045C(void) {
+void sub_80C045C(void)
+{
u8 i;
- for (i=0; i<5; i++) {
- if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2) {
+
+ for (i = 0; i < 5; i++)
+ {
+ if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2)
gSaveBlock1.tvShows[i].common.var01 = 0;
- }
}
}
@@ -2833,17 +2355,14 @@ void sub_80C04A0(void)
s8 showIdx;
s8 count;
count = 0;
- for (showIdx=5; showIdx<24; showIdx++)
+
+ for (showIdx = 5; showIdx < 24; showIdx++)
{
if (gSaveBlock1.tvShows[showIdx].common.var00 == 0)
- {
- count ++;
- }
+ count++;
}
- for (showIdx=0; showIdx<5-count; showIdx++)
- {
+ for (showIdx = 0; showIdx < 5 - count; showIdx++)
sub_80BF55C(gSaveBlock1.tvShows, showIdx+5);
- }
}
void sub_80C05C4(struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16]);
@@ -2856,25 +2375,24 @@ void sub_80C0514(void *a0, u32 a1, u8 a2)
{
ewramStruct_02007000 *struct02007000;
u8 i;
- for (i=0; i<4; i++)
- {
+
+ for (i = 0; i < 4; i++)
memcpy(gUnknown_02007000.unknown_2abc[i], a0 + i * a1, 64);
- }
struct02007000 = &gUnknown_02007000;
switch (a2)
{
- case 0:
- sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]);
- break;
- case 1:
- sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]);
- break;
- case 2:
- sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]);
- break;
- case 3:
- sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC);
- break;
+ case 0:
+ sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]);
+ break;
+ case 1:
+ sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]);
+ break;
+ case 2:
+ sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]);
+ break;
+ case 3:
+ sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC);
+ break;
}
sub_80C0750();
sub_80C0788();
@@ -2886,49 +2404,51 @@ void sub_80C05C4(struct UnknownSaveStruct2ABC a0[16], struct UnknownSaveStruct2A
u8 j;
u8 k;
struct UnknownSaveStruct2ABC ** arglist[4];
+
arglist[0] = &a0;
arglist[1] = &a1;
arglist[2] = &a2;
arglist[3] = &a3;
gUnknown_03000721 = GetLinkPlayerCount();
- for (i=0; i<16; i++)
+ for (i = 0; i < 16; i++)
{
- for (j=0; j<gUnknown_03000721; j++)
+ for (j = 0; j < gUnknown_03000721; j++)
{
gUnknown_03000722 = sub_80C0730(*arglist[j], i);
if (gUnknown_03000722 != -1)
{
- for (k=0; k<gUnknown_03000721-1; k++)
+ for (k = 0; k < gUnknown_03000721-1; k++)
{
gUnknown_03005D38.var0 = sub_80BEBC8(*arglist[(j + k + 1) % gUnknown_03000721]);
if (gUnknown_03005D38.var0 != -1)
- {
sub_80C06BC(arglist[(j + k + 1) % gUnknown_03000721], arglist[j]);
- }
}
}
}
}
}
-void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruct2ABC *arg1[16]) {
+void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruct2ABC *arg1[16])
+{
struct UnknownSaveStruct2ABC *str0;
struct UnknownSaveStruct2ABC *str1;
+
str0 = arg0[0];
str1 = arg1[0];
str1 += gUnknown_03000722;
sub_80C06E8(str0, str1, gUnknown_03005D38.var0);
}
-bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2) {
+bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2)
+{
u8 i;
- if (arg1->val0 == 0) {
+
+ if (arg1->val0 == 0)
return FALSE;
- }
- for (i=0; i<16; i++) {
- if (arg0[i].val0 == arg1->val0) {
+ for (i = 0; i < 16; i++)
+ {
+ if (arg0[i].val0 == arg1->val0)
return FALSE;
- }
}
arg0[arg2].val0 = arg1->val0;
arg0[arg2].val1 = 1;
@@ -2936,35 +2456,42 @@ bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2A
return TRUE;
}
-s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1) {
- if (arg0[arg1].val0 == 0) {
+s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1)
+{
+ if (arg0[arg1].val0 == 0)
return -1;
- }
return arg1;
}
-void sub_80C0750(void) {
+void sub_80C0750(void)
+{
u8 i;
- for (i=0; i<16; i++) {
- if (gSaveBlock1.unknown_2ABC[i].val0 > 3) {
+
+ for (i = 0; i < 16; i++)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val0 > 3)
sub_80BEC10(i);
- }
}
sub_80BEC40();
}
-void sub_80C0788(void) {
+void sub_80C0788(void)
+{
u8 i;
- if (FlagGet(SYS_GAME_CLEAR) != 1) {
- for (i=0; i<16; i++) {
+
+ if (FlagGet(SYS_GAME_CLEAR) != 1)
+ {
+ for (i = 0; i < 16; i++)
gSaveBlock1.unknown_2ABC[i].val1 = 0;
- }
}
}
-void DoTVShow(void) {
- if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0) {
- switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00) {
+void DoTVShow(void)
+{
+ if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0)
+ {
+ switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00)
+ {
case TVSHOW_FAN_CLUB_LETTER:
DoTVShowPokemonFanClubLetter();
break;
@@ -3008,328 +2535,275 @@ void DoTVShow(void) {
}
}
-void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) {
+void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language)
+{
StringCopy(dest, src);
- if (language < LANGUAGE_ENGLISH) {
+ if (language < LANGUAGE_ENGLISH)
ConvertInternationalString(dest, LANGUAGE_JAPANESE);
- }
}
void DoTVShowBravoTrainerPokemonProfile(void)
{
- TVShow *tvShow;
- u8 switchval;
+ struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer;
+ u8 state;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch(switchval)
- {
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language);
- CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory);
- sub_80BEF10(2, tvShow->bravoTrainer.contestRank);
- if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[tvShow->bravoTrainer.species], tvShow->bravoTrainer.pokemonNickname))
- {
- gUnknown_020387E8 = 8;
- } else
- {
- gUnknown_020387E8 = 1;
- }
- break;
- case 1:
- StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]);
- TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainer.pokemonNickname, tvShow->bravoTrainer.var1f);
- CopyContestCategoryToStringVar(2, tvShow->bravoTrainer.contestCategory);
- gUnknown_020387E8 = 2;
- break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language);
- if (tvShow->bravoTrainer.contestResult == 0) // placed first
- {
- gUnknown_020387E8 = 3;
- } else
- {
- gUnknown_020387E8 = 4;
- }
- break;
- case 3:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language);
- sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]);
- sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1);
- gUnknown_020387E8 = 5;
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language);
- sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]);
- sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1);
- gUnknown_020387E8 = 5;
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language);
- CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory);
- sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]);
- if (tvShow->bravoTrainer.var14)
- {
- gUnknown_020387E8 = 6;
- } else
- {
- gUnknown_020387E8 = 7;
- }
- break;
- case 6:
- StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]);
- StringCopy(gStringVar2, gMoveNames[tvShow->bravoTrainer.var14]);
- sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]);
+ state = gUnknown_020387E8;
+ switch(state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
+ CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory);
+ sub_80BEF10(2, bravoTrainer->contestRank);
+ if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[bravoTrainer->species], bravoTrainer->pokemonNickname))
+ gUnknown_020387E8 = 8;
+ else
+ gUnknown_020387E8 = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]);
+ TVShowConvertInternationalString(gStringVar2, bravoTrainer->pokemonNickname, bravoTrainer->var1f);
+ CopyContestCategoryToStringVar(2, bravoTrainer->contestCategory);
+ gUnknown_020387E8 = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
+ if (bravoTrainer->contestResult == 0) // placed first
+ gUnknown_020387E8 = 3;
+ else
+ gUnknown_020387E8 = 4;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
+ sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]);
+ sub_80BF088(2, bravoTrainer->contestResult + 1);
+ gUnknown_020387E8 = 5;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
+ sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]);
+ sub_80BF088(2, bravoTrainer->contestResult + 1);
+ gUnknown_020387E8 = 5;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
+ CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory);
+ sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]);
+ if (bravoTrainer->var14)
+ gUnknown_020387E8 = 6;
+ else
gUnknown_020387E8 = 7;
- break;
- case 7:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainer.species]);
- TVShowDone();
- break;
- case 8:
- StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]);
- gUnknown_020387E8 = 2;
- break;
+ break;
+ case 6:
+ StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]);
+ StringCopy(gStringVar2, gMoveNames[bravoTrainer->var14]);
+ sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]);
+ gUnknown_020387E8 = 7;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
+ StringCopy(gStringVar2, gSpeciesNames[bravoTrainer->species]);
+ TVShowDone();
+ break;
+ case 8:
+ StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]);
+ gUnknown_020387E8 = 2;
+ break;
}
- ShowFieldMessage(gTVBravoTrainerTextGroup[switchval]);
+ ShowFieldMessage(gTVBravoTrainerTextGroup[state]);
}
void DoTVShowBravoTrainerBattleTowerProfile(void)
{
- TVShow *tvShow;
- u8 switchval;
+ struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainerTower;
+ u8 state;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch(switchval)
+ state = gUnknown_020387E8;
+ switch(state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]);
- if (tvShow->bravoTrainerTower.var16 >= 7)
- {
- gUnknown_020387E8 = 1;
- } else
- {
- gUnknown_020387E8 = 2;
- }
- break;
- case 1:
- sub_80BF088(0, tvShow->bravoTrainerTower.btLevel);
- sub_80BF088(1, tvShow->bravoTrainerTower.var16);
- if (tvShow->bravoTrainerTower.var1c == 1)
- {
- gUnknown_020387E8 = 3;
- } else
- {
- gUnknown_020387E8 = 4;
- }
- break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language);
- sub_80BF088(1, tvShow->bravoTrainerTower.var16 + 1);
- if (tvShow->bravoTrainerTower.var1b == 0)
- {
- gUnknown_020387E8 = 5;
- } else
- {
- gUnknown_020387E8 = 6;
- }
- break;
- case 3:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]);
- if (tvShow->bravoTrainerTower.var1b == 0)
- {
- gUnknown_020387E8 = 5;
- } else
- {
- gUnknown_020387E8 = 6;
- }
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]);
- if (tvShow->bravoTrainerTower.var1b == 0)
- {
- gUnknown_020387E8 = 5;
- } else
- {
- gUnknown_020387E8 = 6;
- }
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language);
- gUnknown_020387E8 = 11;
- break;
- case 6:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language);
- gUnknown_020387E8 = 11;
- break;
- case 7:
- gUnknown_020387E8 = 11;
- break;
- case 8:
- case 9:
- case 10:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language);
- gUnknown_020387E8 = 11;
- break;
- case 11:
- sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]);
- if (tvShow->bravoTrainerTower.var1b == 0)
- {
- gUnknown_020387E8 = 12;
- } else
- {
- gUnknown_020387E8 = 13;
- }
- break;
- case 12:
- case 13:
- sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]);
- TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language);
- TVShowConvertInternationalString(gStringVar3, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language);
- gUnknown_020387E8 = 14;
- break;
- case 14:
- TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language);
+ StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->species]);
+ if (bravoTrainerTower->var16 >= 7)
+ gUnknown_020387E8 = 1;
+ else
+ gUnknown_020387E8 = 2;
+ break;
+ case 1:
+ sub_80BF088(0, bravoTrainerTower->btLevel);
+ sub_80BF088(1, bravoTrainerTower->var16);
+ if (bravoTrainerTower->var1c == 1)
+ gUnknown_020387E8 = 3;
+ else
+ gUnknown_020387E8 = 4;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ sub_80BF088(1, bravoTrainerTower->var16 + 1);
+ if (bravoTrainerTower->var1b == 0)
+ gUnknown_020387E8 = 5;
+ else
+ gUnknown_020387E8 = 6;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]);
+ if (bravoTrainerTower->var1b == 0)
+ gUnknown_020387E8 = 5;
+ else
+ gUnknown_020387E8 = 6;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->defeatedSpecies]);
+ if (bravoTrainerTower->var1b == 0)
+ gUnknown_020387E8 = 5;
+ else
+ gUnknown_020387E8 = 6;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ gUnknown_020387E8 = 11;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ gUnknown_020387E8 = 11;
+ break;
+ case 7:
+ gUnknown_020387E8 = 11;
+ break;
+ case 8:
+ case 9:
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language);
+ gUnknown_020387E8 = 11;
+ break;
+ case 11:
+ sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]);
+ if (bravoTrainerTower->var1b == 0)
+ gUnknown_020387E8 = 12;
+ else
+ gUnknown_020387E8 = 13;
+ break;
+ case 12:
+ case 13:
+ sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]);
+ TVShowConvertInternationalString(gStringVar2, bravoTrainerTower->trainerName, bravoTrainerTower->language);
+ TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
+ gUnknown_020387E8 = 14;
+ break;
+ case 14:
+ TVShowConvertInternationalString(gStringVar1, bravoTrainerTower->trainerName, bravoTrainerTower->language);
+ StringCopy(gStringVar2, gSpeciesNames[bravoTrainerTower->species]);
+ TVShowDone();
+ break;
}
- ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[switchval]);
+ ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[state]);
}
void DoTVShowTodaysSmartShopper(void)
{
- TVShow *tvShow;
- u8 switchval;
+ struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gSpecialVar_0x8004].smartshopperShow;
+ u8 state;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch(switchval)
+ state = gUnknown_020387E8;
+ switch(state)
{
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language);
- sub_80FBFB4(gStringVar2, tvShow->smartshopperShow.shopLocation, 0);
- if (tvShow->smartshopperShow.itemAmounts[0] >= 0xff)
- {
- gUnknown_020387E8 = 11;
- } else
- {
- gUnknown_020387E8 = 1;
- }
- break;
- case 1:
- TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language);
- StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name);
- sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0]);
- gUnknown_020387E8 += (Random() % 4) + 1;
- break;
- case 2:
- case 4:
- case 5:
- if (tvShow->smartshopperShow.itemIds[1] != 0)
- {
- gUnknown_020387E8 = 6;
- } else
- {
- gUnknown_020387E8 = 10;
- }
- break;
- case 3:
- sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0] + 1);
- if (tvShow->smartshopperShow.itemIds[1] != 0)
- {
- gUnknown_020387E8 = 6;
- } else
- {
- gUnknown_020387E8 = 10;
- }
- break;
- case 6:
- StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[1])->name);
- sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[1]);
- if (tvShow->smartshopperShow.itemIds[2] != 0)
- {
- gUnknown_020387E8 = 7;
- } else if (tvShow->smartshopperShow.priceReduced == 1)
- {
- gUnknown_020387E8 = 8;
- } else
- {
- gUnknown_020387E8 = 9;
- }
- break;
- case 7:
- StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[2])->name);
- sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[2]);
- if (tvShow->smartshopperShow.priceReduced == 1)
- {
- gUnknown_020387E8 = 8;
- } else
- {
- gUnknown_020387E8 = 9;
- }
- break;
- case 8:
- if (tvShow->smartshopperShow.itemAmounts[0] < 0xff)
- {
- gUnknown_020387E8 = 9;
- } else
- {
- gUnknown_020387E8 = 12;
- }
- break;
- case 9:
- sub_80BF154(1, &tvShow->smartshopperShow);
- TVShowDone();
- break;
- case 10:
- if (tvShow->smartshopperShow.priceReduced == 1)
- {
- gUnknown_020387E8 = 8;
- } else
- {
- gUnknown_020387E8 = 9;
- }
- break;
- case 11:
- TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language);
- StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name);
- if (tvShow->smartshopperShow.priceReduced == 1)
- {
- gUnknown_020387E8 = 8;
- } else
- {
- gUnknown_020387E8 = 12;
- }
- break;
- case 12:
- TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
+ GetMapSectionName(gStringVar2, smartShopper->shopLocation, 0);
+ if (smartShopper->itemAmounts[0] >= 0xff)
+ gUnknown_020387E8 = 11;
+ else
+ gUnknown_020387E8 = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
+ StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name);
+ sub_80BF088(2, smartShopper->itemAmounts[0]);
+ gUnknown_020387E8 += (Random() % 4) + 1;
+ break;
+ case 2:
+ case 4:
+ case 5:
+ if (smartShopper->itemIds[1] != 0)
+ gUnknown_020387E8 = 6;
+ else
+ gUnknown_020387E8 = 10;
+ break;
+ case 3:
+ sub_80BF088(2, smartShopper->itemAmounts[0] + 1);
+ if (smartShopper->itemIds[1] != 0)
+ gUnknown_020387E8 = 6;
+ else
+ gUnknown_020387E8 = 10;
+ break;
+ case 6:
+ StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[1])->name);
+ sub_80BF088(2, smartShopper->itemAmounts[1]);
+ if (smartShopper->itemIds[2] != 0)
+ gUnknown_020387E8 = 7;
+ else if (smartShopper->priceReduced == 1)
+ gUnknown_020387E8 = 8;
+ else
+ gUnknown_020387E8 = 9;
+ break;
+ case 7:
+ StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[2])->name);
+ sub_80BF088(2, smartShopper->itemAmounts[2]);
+ if (smartShopper->priceReduced == 1)
+ gUnknown_020387E8 = 8;
+ else
+ gUnknown_020387E8 = 9;
+ break;
+ case 8:
+ if (smartShopper->itemAmounts[0] < 0xff)
+ gUnknown_020387E8 = 9;
+ else
+ gUnknown_020387E8 = 12;
+ break;
+ case 9:
+ sub_80BF154(1, smartShopper);
+ TVShowDone();
+ break;
+ case 10:
+ if (smartShopper->priceReduced == 1)
+ gUnknown_020387E8 = 8;
+ else
+ gUnknown_020387E8 = 9;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
+ StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name);
+ if (smartShopper->priceReduced == 1)
+ gUnknown_020387E8 = 8;
+ else
+ gUnknown_020387E8 = 12;
+ break;
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
+ TVShowDone();
+ break;
}
- ShowFieldMessage(gTVSmartShopperTextGroup[switchval]);
+ ShowFieldMessage(gTVSmartShopperTextGroup[state]);
}
-void DoTVShowTheNameRaterShow(void) {
- TVShow *tvShow;
- u8 switchval;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+void DoTVShowTheNameRaterShow(void)
+{
+ struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004].nameRaterShow;
+ u8 state;
+
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch (switchval) {
+ state = gUnknown_020387E8;
+ switch (state)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]);
- TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
- gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1;
+ TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language);
+ StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]);
+ TVShowConvertInternationalString(gStringVar3, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage);
+ gUnknown_020387E8 = sub_80BF7E8(nameRaterShow) + 1;
break;
case 1:
case 3:
@@ -3338,217 +2812,214 @@ void DoTVShowTheNameRaterShow(void) {
case 6:
case 7:
case 8:
- if (tvShow->nameRaterShow.random == 0) {
+ if (nameRaterShow->random == 0)
gUnknown_020387E8 = 9;
- } else if (tvShow->nameRaterShow.random == 1) {
+ else if (nameRaterShow->random == 1)
gUnknown_020387E8 = 10;
- } else if (tvShow->nameRaterShow.random == 2) {
+ else if (nameRaterShow->random == 2)
gUnknown_020387E8 = 11;
- }
break;
case 2:
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
- if (tvShow->nameRaterShow.random == 0) {
+ TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language);
+ if (nameRaterShow->random == 0)
gUnknown_020387E8 = 9;
- } else if (tvShow->nameRaterShow.random == 1) {
+ else if (nameRaterShow->random == 1)
gUnknown_020387E8 = 10;
- } else if (tvShow->nameRaterShow.random == 2) {
+ else if (nameRaterShow->random == 2)
gUnknown_020387E8 = 11;
- }
break;
case 9:
case 10:
case 11:
- sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
+ sub_80BF820(0, 1, 0, 1, 0, nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage);
+ sub_80BF820(0, 0, 0, 1, 0, nameRaterShow);
+ TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage);
+ TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage);
gUnknown_020387E8 = 12;
break;
case 13:
- sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language);
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ sub_80BF820(0, 0, 3, 1, 0, nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage);
+ sub_80BF820(0, 0, 2, 0, 0, nameRaterShow);
+ TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->language);
+ TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language);
gUnknown_020387E8 = 14;
break;
case 14:
- sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language);
- sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ sub_80BF820(0, 0, 3, 0, 0, nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->language);
+ sub_80BF820(0, 0, 2, 1, 0, nameRaterShow);
+ TVShowConvertInternationalString(gStringVar2, gStringVar1, nameRaterShow->pokemonNameLanguage);
+ TVShowConvertInternationalString(gStringVar1, nameRaterShow->trainerName, nameRaterShow->language);
gUnknown_020387E8 = 18;
break;
case 15:
- sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]);
- sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow);
+ sub_80BF820(1, 0, 2, 1, 0, nameRaterShow);
+ TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->species]);
+ sub_80BF820(2, 0, 3, 2, nameRaterShow->species, nameRaterShow);
gUnknown_020387E8 = 16;
break;
case 16:
- sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow);
+ sub_80BF820(0, 0, 3, 1, 0, nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, nameRaterShow->pokemonNameLanguage);
+ sub_80BF820(0, 0, 2, 2, nameRaterShow->species, nameRaterShow);
gUnknown_020387E8 = 17;
break;
case 17:
- sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage);
- sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]);
+ sub_80BF820(1, 0, 2, 1, 0, nameRaterShow);
+ TVShowConvertInternationalString(gStringVar1, gStringVar2, nameRaterShow->pokemonNameLanguage);
+ sub_80BF820(2, 0, 3, 2, nameRaterShow->var1C, nameRaterShow);
+ StringCopy(gStringVar2, gSpeciesNames[nameRaterShow->var1C]);
gUnknown_020387E8 = 18;
break;
case 12:
- switchval = 18;
+ state = 18;
gUnknown_020387E8 = 18;
case 18:
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
- TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ TVShowConvertInternationalString(gStringVar1, nameRaterShow->pokemonName, nameRaterShow->pokemonNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, nameRaterShow->trainerName, nameRaterShow->language);
TVShowDone();
break;
}
- ShowFieldMessage(gTVNameRaterTextGroup[switchval]);
+ ShowFieldMessage(gTVNameRaterTextGroup[state]);
}
-void DoTVShowPokemonTodaySuccessfulCapture(void) {
- TVShow *tvShow;
- u8 switchval;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+void DoTVShowPokemonTodaySuccessfulCapture(void)
+{
+ struct TVShowPokemonToday *pokemonToday = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonToday;
+ u8 state;
+
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch (switchval) {
+ state = gUnknown_020387E8;
+ switch (state)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
- if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) {
+ TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language);
+ StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]);
+ TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2);
+ if (pokemonToday->ball == ITEM_MASTER_BALL)
gUnknown_020387E8 = 5;
- } else {
+ else
gUnknown_020387E8 = 1;
- }
break;
case 1:
gUnknown_020387E8 = 2;
break;
case 2:
- StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name);
- sub_80BF088(2, tvShow->pokemonToday.var12);
- if (tvShow->pokemonToday.var12 < 4) {
+ StringCopy(gStringVar2, ItemId_GetItem(pokemonToday->ball)->name);
+ sub_80BF088(2, pokemonToday->var12);
+ if (pokemonToday->var12 < 4)
gUnknown_020387E8 = 3;
- } else {
+ else
gUnknown_020387E8 = 4;
- }
break;
case 3:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language);
+ StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]);
+ TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2);
gUnknown_020387E8 = 6;
break;
case 4:
gUnknown_020387E8 = 6;
break;
case 5:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language);
+ StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]);
gUnknown_020387E8 = 6;
break;
case 6:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ TVShowConvertInternationalString(gStringVar1, pokemonToday->playerName, pokemonToday->language);
+ StringCopy(gStringVar2, gSpeciesNames[pokemonToday->species]);
+ TVShowConvertInternationalString(gStringVar3, pokemonToday->nickname, pokemonToday->language2);
gUnknown_020387E8 += (Random() % 4) + 1;
break;
case 7:
case 8:
- StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
- sub_80BF638(2, tvShow->pokemonToday.species);
+ StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]);
+ TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2);
+ sub_80BF638(2, pokemonToday->species);
gUnknown_020387E8 = 11;
break;
case 9:
case 10:
- StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ StringCopy(gStringVar1, gSpeciesNames[pokemonToday->species]);
+ TVShowConvertInternationalString(gStringVar2, pokemonToday->nickname, pokemonToday->language2);
gUnknown_020387E8 = 11;
break;
case 11:
TVShowDone();
break;
}
- ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]);
+ ShowFieldMessage(gTVPokemonTodayTextGroup[state]);
}
-void DoTVShowPokemonTodayFailedCapture(void) {
- TVShow *tvShow;
- u8 switchval;
- u16 rval;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+void DoTVShowPokemonTodayFailedCapture(void)
+{
+ struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonTodayFailed;
+ u8 state;
+
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch (switchval) {
+ state = gUnknown_020387E8;
+ switch (state)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]);
+ TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language);
+ StringCopy(gStringVar2, gSpeciesNames[pokemonTodayFailed->species]);
gUnknown_020387E8 = 1;
break;
case 1:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
- sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0);
- StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]);
- if (tvShow->pokemonTodayFailed.var11 == 1) {
+ TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language);
+ GetMapSectionName(gStringVar2, pokemonTodayFailed->var12, 0);
+ StringCopy(gStringVar3, gSpeciesNames[pokemonTodayFailed->species2]);
+ if (pokemonTodayFailed->var11 == 1)
gUnknown_020387E8 = 3;
- } else {
+ else
gUnknown_020387E8 = 2;
- }
break;
case 2:
case 3:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
- sub_80BF088(1, tvShow->pokemonTodayFailed.var10);
- rval = (Random() % 3);
- if (rval == 0) {
+ TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language);
+ sub_80BF088(1, pokemonTodayFailed->var10);
+ if ((Random() % 3) == 0)
gUnknown_020387E8 = 5;
- } else {
+ else
gUnknown_020387E8 = 4;
- }
break;
case 4:
case 5:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
+ TVShowConvertInternationalString(gStringVar1, pokemonTodayFailed->playerName, pokemonTodayFailed->language);
gUnknown_020387E8 = 6;
break;
case 6:
TVShowDone();
break;
}
- ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[switchval]);
+ ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[state]);
}
-void DoTVShowPokemonFanClubLetter(void) {
- TVShow *tvShow;
- u8 switchval;
+void DoTVShowPokemonFanClubLetter(void)
+{
+ struct TVShowFanClubLetter *fanclubLetter = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubLetter;
+ u8 state;
u16 rval;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch (switchval) {
+ state = gUnknown_020387E8;
+ switch (state)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]);
+ TVShowConvertInternationalString(gStringVar1, fanclubLetter->playerName, fanclubLetter->language);
+ StringCopy(gStringVar2, gSpeciesNames[fanclubLetter->species]);
gUnknown_020387E8 = 50;
break;
case 1:
rval = (Random() % 4) + 1;
- if (rval == 1) {
+ if (rval == 1)
gUnknown_020387E8 = 2;
- } else {
+ else
gUnknown_020387E8 = rval + 2;
- }
break;
case 2:
gUnknown_020387E8 = 51;
@@ -3559,7 +3030,7 @@ void DoTVShowPokemonFanClubLetter(void) {
case 4:
case 5:
case 6:
- sub_80BF79C(tvShow);
+ sub_80BF79C((TVShow *)fanclubLetter);
gUnknown_020387E8 = 7;
break;
case 7:
@@ -3568,29 +3039,31 @@ void DoTVShowPokemonFanClubLetter(void) {
TVShowDone();
break;
case 50:
- ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
+ ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2);
ShowFieldMessage(gStringVar4);
gUnknown_020387E8 = 1;
return;
case 51:
- ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
+ ConvertEasyChatWordsToString(gStringVar4, fanclubLetter->pad04, 2, 2);
ShowFieldMessage(gStringVar4);
gUnknown_020387E8 = 3;
return;
}
- ShowFieldMessage(gTVFanClubTextGroup[switchval]);
+ ShowFieldMessage(gTVFanClubTextGroup[state]);
}
-void DoTVShowRecentHappenings(void) {
- TVShow *tvShow;
- u8 switchval;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+void DoTVShowRecentHappenings(void)
+{
+ struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gSpecialVar_0x8004].recentHappenings;
+ u8 state;
+
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch (switchval) {
+ state = gUnknown_020387E8;
+ switch (state)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language);
- sub_80BF79C(tvShow);
+ TVShowConvertInternationalString(gStringVar1, recentHappenings->playerName, recentHappenings->language);
+ sub_80BF79C((TVShow *)recentHappenings);
gUnknown_020387E8 = 50;
break;
case 1:
@@ -3605,92 +3078,90 @@ void DoTVShowRecentHappenings(void) {
TVShowDone();
break;
case 50:
- ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2);
+ ConvertEasyChatWordsToString(gStringVar4, recentHappenings->var04, 2, 2);
ShowFieldMessage(gStringVar4);
gUnknown_020387E8 = 1;
return;
}
- ShowFieldMessage(gTVRecentHappeningsTextGroup[switchval]);
+ ShowFieldMessage(gTVRecentHappeningsTextGroup[state]);
}
-void DoTVShowPokemonFanClubOpinions(void) {
- TVShow *tvShow;
- u8 switchval;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+void DoTVShowPokemonFanClubOpinions(void)
+{
+ struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubOpinions;
+ u8 state;
+
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch (switchval) {
+ state = gUnknown_020387E8;
+ switch (state)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]);
- TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E);
- gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1;
+ TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
+ StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]);
+ TVShowConvertInternationalString(gStringVar3, fanclubOpinions->var10, fanclubOpinions->var0E);
+ gUnknown_020387E8 = fanclubOpinions->var04B + 1;
break;
case 1:
case 2:
case 3:
- TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]);
- sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]);
+ TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
+ StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]);
+ sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[0]);
gUnknown_020387E8 = 4;
break;
case 4:
- TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
- sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]);
+ TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
+ sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[1]);
TVShowDone();
break;
}
- ShowFieldMessage(gTVFanClubOpinionsTextGroup[switchval]);
+ ShowFieldMessage(gTVFanClubOpinionsTextGroup[state]);
}
-void nullsub_22(void) {
-
+void nullsub_22(void)
+{
}
void DoTVShowPokemonNewsMassOutbreak(void)
{
- TVShow *tvShow;
-
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
-
- sub_80FBFB4(gStringVar1, tvShow->massOutbreak.locationMapNum, 0);
-
- StringCopy(gStringVar2, gSpeciesNames[tvShow->massOutbreak.species]);
+ struct TVShowMassOutbreak *massOutbreak = &gSaveBlock1.tvShows[gSpecialVar_0x8004].massOutbreak;
+ GetMapSectionName(gStringVar1, massOutbreak->locationMapNum, 0);
+ StringCopy(gStringVar2, gSpeciesNames[massOutbreak->species]);
TVShowDone();
StartMassOutbreak();
-
ShowFieldMessage(gTVPokemonOutbreakTextGroup[gUnknown_020387E8]);
}
-void DoTVShowInSearchOfTrainers(void) {
- u8 switchval;
+void DoTVShowInSearchOfTrainers(void)
+{
+ u8 state;
+
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch (switchval) {
+ state = gUnknown_020387E8;
+ switch (state)
+ {
case 0:
- sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0);
- if (gSaveBlock1.gabbyAndTyData.battleNum > 1) {
+ GetMapSectionName(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0);
+ if (gSaveBlock1.gabbyAndTyData.battleNum > 1)
gUnknown_020387E8 = 1;
- } else {
+ else
gUnknown_020387E8 = 2;
- }
break;
case 1:
gUnknown_020387E8 = 2;
break;
case 2:
- if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) {
+ if (gSaveBlock1.gabbyAndTyData.valA_0 == 0)
gUnknown_020387E8 = 4;
- } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) {
+ else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0)
gUnknown_020387E8 = 5;
- } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) {
+ else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0)
gUnknown_020387E8 = 6;
- } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) {
+ else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0)
gUnknown_020387E8 = 7;
- } else {
+ else
gUnknown_020387E8 = 3;
- }
break;
case 3:
StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
@@ -3713,71 +3184,73 @@ void DoTVShowInSearchOfTrainers(void) {
TakeTVShowInSearchOfTrainersOffTheAir();
break;
}
- ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]);
+ ShowFieldMessage(gTVGabbyAndTyTextGroup[state]);
}
-void DoTVShowPokemonAngler(void) {
- TVShow *tvShow;
- u8 switchval;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+void DoTVShowPokemonAngler(void)
+{
+ struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonAngler;
+ u8 state;
+
gScriptResult = 0;
- if (tvShow->pokemonAngler.var02 < tvShow->pokemonAngler.var03) {
+ if (pokemonAngler->var02 < pokemonAngler->var03)
gUnknown_020387E8 = 0;
- } else {
+ else
gUnknown_020387E8 = 1;
- }
- switchval = gUnknown_020387E8;
- switch (switchval) {
+ state = gUnknown_020387E8;
+ switch (state)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]);
- sub_80BF088(2, tvShow->pokemonAngler.var03);
+ TVShowConvertInternationalString(gStringVar1, pokemonAngler->playerName, pokemonAngler->language);
+ StringCopy(gStringVar2, gSpeciesNames[pokemonAngler->var04]);
+ sub_80BF088(2, pokemonAngler->var03);
TVShowDone();
break;
case 1:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]);
- sub_80BF088(2, tvShow->pokemonAngler.var02);
+ TVShowConvertInternationalString(gStringVar1, pokemonAngler->playerName, pokemonAngler->language);
+ StringCopy(gStringVar2, gSpeciesNames[pokemonAngler->var04]);
+ sub_80BF088(2, pokemonAngler->var02);
TVShowDone();
break;
}
- ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]);
+ ShowFieldMessage(gTVFishingGuruAdviceTextGroup[state]);
}
-void DoTVShowTheWorldOfMasters(void) {
- TVShow *tvShow;
- u8 switchval;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+void DoTVShowTheWorldOfMasters(void)
+{
+ struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[gSpecialVar_0x8004].worldOfMasters;
+ u8 state;
+
gScriptResult = 0;
- switchval = gUnknown_020387E8;
- switch (switchval) {
+ state = gUnknown_020387E8;
+ switch (state)
+ {
case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName,
- tvShow->worldOfMasters.language);
- sub_80BF088(1, tvShow->worldOfMasters.var06);
- sub_80BF088(2, tvShow->worldOfMasters.var02);
+ TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName,
+ worldOfMasters->language);
+ sub_80BF088(1, worldOfMasters->var06);
+ sub_80BF088(2, worldOfMasters->var02);
gUnknown_020387E8 = 1;
break;
case 1:
- StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]);
+ StringCopy(gStringVar1, gSpeciesNames[worldOfMasters->var08]);
gUnknown_020387E8 = 2;
break;
case 2:
- TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName,
- tvShow->worldOfMasters.language);
- sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0);
- StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]);
+ TVShowConvertInternationalString(gStringVar1, worldOfMasters->playerName,
+ worldOfMasters->language);
+ GetMapSectionName(gStringVar2, worldOfMasters->var0a, 0);
+ StringCopy(gStringVar3, gSpeciesNames[worldOfMasters->var04]);
TVShowDone();
break;
}
- ShowFieldMessage(gTVWorldOfMastersTextGroup[switchval]);
+ ShowFieldMessage(gTVWorldOfMastersTextGroup[state]);
}
void TVShowDone(void)
{
gScriptResult = 1;
gUnknown_020387E8 = 0;
-
gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0;
}
diff --git a/src/unknown_debug_menu.c b/src/unknown_debug_menu.c
index 6a8bad0d4..a81625f2a 100644
--- a/src/unknown_debug_menu.c
+++ b/src/unknown_debug_menu.c
@@ -41,8 +41,8 @@ static u8 sub_814A464(void)
u8 sub_814A4B8(void)
{
- gSaveBlock2.filler_A8.var_4AE = 3;
- gSaveBlock2.filler_A8.var_4AF = 3;
+ gSaveBlock2.filler_A8.var_4AE[0] = 3;
+ gSaveBlock2.filler_A8.var_4AE[1] = 3;
gSaveBlock2.filler_A8.var_4B4 = gBattleCommunication[0] + 1;
gSaveBlock2.filler_A8.var_4B6 = gBattleCommunication[0] + 1;
gSaveBlock2.filler_A8.var_4B0 = 1;
diff --git a/src/unknown_task.c b/src/unknown_task.c
new file mode 100644
index 000000000..81b89ef92
--- /dev/null
+++ b/src/unknown_task.c
@@ -0,0 +1,255 @@
+#include "global.h"
+#include "data2.h"
+#include "task.h"
+#include "trig.h"
+
+struct UnknownStruct1
+{
+ void *src[2];
+ void *dest;
+ u32 unkC;
+ void (*unk10)(void);
+ u8 srcBank;
+ u8 unk15;
+ u8 unk16;
+ u8 unk17;
+ u8 taskId;
+ u8 filler19[0x7];
+};
+
+struct UnknownStruct2
+{
+ void *dest;
+ u32 control;
+ u8 unk8;
+ u8 unk9;
+};
+
+static void sub_80896F4(void);
+static void sub_8089714(void);
+
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_030041B8;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042C0;
+
+extern u8 gUnknown_0202FFA4;
+
+extern struct UnknownStruct1 gUnknown_03004DC0;
+
+extern u16 gUnknown_03004DE0[][0x3C0];
+
+void remove_some_task(void)
+{
+ gUnknown_03004DC0.unk15 = 0;
+ DmaStop(0);
+ if (gUnknown_03004DC0.taskId != 0xFF)
+ {
+ DestroyTask(gUnknown_03004DC0.taskId);
+ gUnknown_03004DC0.taskId = 0xFF;
+ }
+}
+
+void dp12_8087EA4(void)
+{
+ CpuFill16(0, gUnknown_03004DE0, 0x780 * 2);
+ gUnknown_03004DC0.src[0] = 0;
+ gUnknown_03004DC0.src[1] = 0;
+ gUnknown_03004DC0.dest = 0;
+ gUnknown_03004DC0.unkC = 0;
+ gUnknown_03004DC0.srcBank = 0;
+ gUnknown_03004DC0.unk15 = 0;
+ gUnknown_03004DC0.unk16 = 0;
+ gUnknown_03004DC0.unk17 = 0;
+ gUnknown_03004DC0.taskId = 0xFF;
+}
+
+void sub_80895F8(struct UnknownStruct2 unk)
+{
+ if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1))
+ {
+ gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][1];
+ gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][1];
+ gUnknown_03004DC0.unk10 = sub_80896F4;
+ }
+ else
+ {
+ gUnknown_03004DC0.src[0] = &gUnknown_03004DE0[0][2];
+ gUnknown_03004DC0.src[1] = &gUnknown_03004DE0[1][2];
+ gUnknown_03004DC0.unk10 = sub_8089714;
+ }
+
+ gUnknown_03004DC0.unkC = unk.control;
+ gUnknown_03004DC0.dest = unk.dest;
+ gUnknown_03004DC0.unk15 = unk.unk8;
+ gUnknown_03004DC0.unk16 = unk.unk9;
+ gUnknown_03004DC0.unk17 = unk.unk9;
+}
+
+void sub_8089668(void)
+{
+ if (gUnknown_03004DC0.unk15)
+ {
+ if (gUnknown_03004DC0.unk15 == 3)
+ {
+ gUnknown_03004DC0.unk15 = 0;
+ DmaStop(0);
+ gUnknown_0202FFA4 = 1;
+ }
+ else
+ {
+ DmaStop(0);
+ DmaSet(0, gUnknown_03004DC0.src[gUnknown_03004DC0.srcBank], gUnknown_03004DC0.dest, gUnknown_03004DC0.unkC);
+ gUnknown_03004DC0.unk10();
+ gUnknown_03004DC0.srcBank ^= 1;
+ }
+ }
+}
+
+static void sub_80896F4(void)
+{
+ u16 *dest = (u16 *)gUnknown_03004DC0.dest;
+ u16 *src = (u16 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank];
+ *dest = *src;
+}
+
+static void sub_8089714(void)
+{
+ u32 *dest = (u32 *)gUnknown_03004DC0.dest;
+ u32 *src = (u32 *)&gUnknown_03004DE0[gUnknown_03004DC0.srcBank];
+ *dest = *src;
+}
+
+static void task00_for_dp12(u8 taskId)
+{
+ int value = 0;
+
+ if (gUnknown_0202FFA4)
+ {
+ DestroyTask(taskId);
+ gUnknown_03004DC0.taskId = 0xFF;
+ }
+ else
+ {
+ if (gTasks[taskId].data[7])
+ {
+ switch (gTasks[taskId].data[6])
+ {
+ case 0x0:
+ value = gUnknown_030042A4;
+ break;
+ case 0x2:
+ value = gUnknown_030042A0;
+ break;
+ case 0x4:
+ value = gUnknown_030042C0;
+ break;
+ case 0x6:
+ value = gUnknown_030041B4;
+ break;
+ case 0x8:
+ value = gUnknown_03004288;
+ break;
+ case 0xA:
+ value = gUnknown_03004280;
+ break;
+ case 0xC:
+ value = gUnknown_030041B0;
+ break;
+ case 0xE:
+ value = gUnknown_030041B8;
+ break;
+ }
+ }
+ if (gTasks[taskId].data[4])
+ {
+ int i;
+ int offset;
+ gTasks[taskId].data[4]--;
+ offset = gTasks[taskId].data[3] + 320;
+ for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++)
+ {
+ gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value;
+ offset++;
+ }
+ }
+ else
+ {
+ int i;
+ int offset;
+ gTasks[taskId].data[4] = gTasks[taskId].data[5];
+ offset = gTasks[taskId].data[3] + 320;
+ for (i = gTasks[taskId].data[0]; i < gTasks[taskId].data[1]; i++)
+ {
+ gUnknown_03004DE0[gUnknown_03004DC0.srcBank][i] = gUnknown_03004DE0[0][offset] + value;
+ offset++;
+ }
+ gTasks[taskId].data[3]++;
+ if (gTasks[taskId].data[3] == gTasks[taskId].data[2])
+ {
+ gTasks[taskId].data[3] = 0;
+ }
+ }
+ }
+}
+
+static void sub_80898FC(u16 *a1, u8 a2, u8 a3, u8 a4)
+{
+ u16 i = 0;
+ u8 offset = 0;
+
+ while (i < 0x100)
+ {
+ a1[i] = (gSineTable[offset] * a3) / 256;
+ offset += a2;
+ i++;
+ }
+}
+
+u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7)
+{
+ int i;
+ int offset;
+ struct UnknownStruct2 unk;
+ u8 taskId;
+
+ dp12_8087EA4();
+
+ unk.dest = (void *)(REG_ADDR_BG0HOFS + a6);
+ unk.control = ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1;
+ unk.unk8 = 1;
+ unk.unk9 = 0;
+
+ sub_80895F8(unk);
+
+ taskId = CreateTask(task00_for_dp12, 0);
+
+ gTasks[taskId].data[0] = a1;
+ gTasks[taskId].data[1] = a2;
+ gTasks[taskId].data[2] = 256 / a3;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = a5;
+ gTasks[taskId].data[5] = a5;
+ gTasks[taskId].data[6] = a6;
+ gTasks[taskId].data[7] = a7;
+
+ gUnknown_03004DC0.taskId = taskId;
+ gUnknown_0202FFA4 = 0;
+
+ sub_80898FC(&gUnknown_03004DE0[0][320], a3, a4, a2 - a1);
+
+ offset = 320;
+
+ for (i = a1; i < a2; i++)
+ {
+ gUnknown_03004DE0[0][i] = gUnknown_03004DE0[0][offset];
+ gUnknown_03004DE0[1][i] = gUnknown_03004DE0[0][offset];
+ offset++;
+ }
+
+ return taskId;
+}
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index ce83bc1c2..3aa2f1fa5 100755..100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -102,10 +102,11 @@ const struct SpriteTemplate gSpriteTemplate_840618C = {
asm(".text\n"
".include \"constants/gba_constants.inc\"");
-extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304;
-extern MainCallback gUnknown_02039308;
-extern struct Pokeblock *gUnknown_0203930C;
-extern u8 gUnknown_02039310;
+static EWRAM_DATA struct UnkPokenavStruct_Sub1 *gUnknown_02039304 = NULL;
+static EWRAM_DATA MainCallback gUnknown_02039308 = NULL;
+static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL;
+EWRAM_DATA u8 gUnknown_02039310 = 0;
+EWRAM_DATA s16 gUnknown_02039312 = 0;
extern u16 gKeyRepeatStartDelay;
extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock
diff --git a/src/util.c b/src/util.c
index c83fe8c8a..582b9f806 100644
--- a/src/util.c
+++ b/src/util.c
@@ -1,27 +1,140 @@
#include "global.h"
#include "util.h"
-extern const struct SpriteTemplate gInvisibleSpriteTemplate;
-extern const u8 gSpriteDimensions[3][4][2];
-extern const u16 gCrc16Table[];
+const u32 gBitTable[] =
+{
+ 1 << 0,
+ 1 << 1,
+ 1 << 2,
+ 1 << 3,
+ 1 << 4,
+ 1 << 5,
+ 1 << 6,
+ 1 << 7,
+ 1 << 8,
+ 1 << 9,
+ 1 << 10,
+ 1 << 11,
+ 1 << 12,
+ 1 << 13,
+ 1 << 14,
+ 1 << 15,
+ 1 << 16,
+ 1 << 17,
+ 1 << 18,
+ 1 << 19,
+ 1 << 20,
+ 1 << 21,
+ 1 << 22,
+ 1 << 23,
+ 1 << 24,
+ 1 << 25,
+ 1 << 26,
+ 1 << 27,
+ 1 << 28,
+ 1 << 29,
+ 1 << 30,
+ 1 << 31,
+};
-u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *)) {
+static const struct SpriteTemplate gInvisibleSpriteTemplate =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gDummyOamData,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const u8 gSpriteDimensions[3][4][2] =
+{
+ // square
+ {
+ {1, 1},
+ {2, 2},
+ {4, 4},
+ {8, 8},
+ },
+
+ // horizontal rectangle
+ {
+ {2, 1},
+ {4, 1},
+ {4, 2},
+ {8, 4},
+ },
+
+ // vertical rectangle
+ {
+ {1, 2},
+ {1, 4},
+ {2, 4},
+ {4, 8},
+ },
+};
+
+static const u16 gCrc16Table[] =
+{
+ 0x0000, 0x1189, 0x2312, 0x329B, 0x4624, 0x57AD, 0x6536, 0x74BF,
+ 0x8C48, 0x9DC1, 0xAF5A, 0xBED3, 0xCA6C, 0xDBE5, 0xE97E, 0xF8F7,
+ 0x1081, 0x0108, 0x3393, 0x221A, 0x56A5, 0x472C, 0x75B7, 0x643E,
+ 0x9CC9, 0x8D40, 0xBFDB, 0xAE52, 0xDAED, 0xCB64, 0xF9FF, 0xE876,
+ 0x2102, 0x308B, 0x0210, 0x1399, 0x6726, 0x76AF, 0x4434, 0x55BD,
+ 0xAD4A, 0xBCC3, 0x8E58, 0x9FD1, 0xEB6E, 0xFAE7, 0xC87C, 0xD9F5,
+ 0x3183, 0x200A, 0x1291, 0x0318, 0x77A7, 0x662E, 0x54B5, 0x453C,
+ 0xBDCB, 0xAC42, 0x9ED9, 0x8F50, 0xFBEF, 0xEA66, 0xD8FD, 0xC974,
+ 0x4204, 0x538D, 0x6116, 0x709F, 0x0420, 0x15A9, 0x2732, 0x36BB,
+ 0xCE4C, 0xDFC5, 0xED5E, 0xFCD7, 0x8868, 0x99E1, 0xAB7A, 0xBAF3,
+ 0x5285, 0x430C, 0x7197, 0x601E, 0x14A1, 0x0528, 0x37B3, 0x263A,
+ 0xDECD, 0xCF44, 0xFDDF, 0xEC56, 0x98E9, 0x8960, 0xBBFB, 0xAA72,
+ 0x6306, 0x728F, 0x4014, 0x519D, 0x2522, 0x34AB, 0x0630, 0x17B9,
+ 0xEF4E, 0xFEC7, 0xCC5C, 0xDDD5, 0xA96A, 0xB8E3, 0x8A78, 0x9BF1,
+ 0x7387, 0x620E, 0x5095, 0x411C, 0x35A3, 0x242A, 0x16B1, 0x0738,
+ 0xFFCF, 0xEE46, 0xDCDD, 0xCD54, 0xB9EB, 0xA862, 0x9AF9, 0x8B70,
+ 0x8408, 0x9581, 0xA71A, 0xB693, 0xC22C, 0xD3A5, 0xE13E, 0xF0B7,
+ 0x0840, 0x19C9, 0x2B52, 0x3ADB, 0x4E64, 0x5FED, 0x6D76, 0x7CFF,
+ 0x9489, 0x8500, 0xB79B, 0xA612, 0xD2AD, 0xC324, 0xF1BF, 0xE036,
+ 0x18C1, 0x0948, 0x3BD3, 0x2A5A, 0x5EE5, 0x4F6C, 0x7DF7, 0x6C7E,
+ 0xA50A, 0xB483, 0x8618, 0x9791, 0xE32E, 0xF2A7, 0xC03C, 0xD1B5,
+ 0x2942, 0x38CB, 0x0A50, 0x1BD9, 0x6F66, 0x7EEF, 0x4C74, 0x5DFD,
+ 0xB58B, 0xA402, 0x9699, 0x8710, 0xF3AF, 0xE226, 0xD0BD, 0xC134,
+ 0x39C3, 0x284A, 0x1AD1, 0x0B58, 0x7FE7, 0x6E6E, 0x5CF5, 0x4D7C,
+ 0xC60C, 0xD785, 0xE51E, 0xF497, 0x8028, 0x91A1, 0xA33A, 0xB2B3,
+ 0x4A44, 0x5BCD, 0x6956, 0x78DF, 0x0C60, 0x1DE9, 0x2F72, 0x3EFB,
+ 0xD68D, 0xC704, 0xF59F, 0xE416, 0x90A9, 0x8120, 0xB3BB, 0xA232,
+ 0x5AC5, 0x4B4C, 0x79D7, 0x685E, 0x1CE1, 0x0D68, 0x3FF3, 0x2E7A,
+ 0xE70E, 0xF687, 0xC41C, 0xD595, 0xA12A, 0xB0A3, 0x8238, 0x93B1,
+ 0x6B46, 0x7ACF, 0x4854, 0x59DD, 0x2D62, 0x3CEB, 0x0E70, 0x1FF9,
+ 0xF78F, 0xE606, 0xD49D, 0xC514, 0xB1AB, 0xA022, 0x92B9, 0x8330,
+ 0x7BC7, 0x6A4E, 0x58D5, 0x495C, 0x3DE3, 0x2C6A, 0x1EF1, 0x0F78,
+};
+
+const u8 gMiscBlank_Gfx[] = INCBIN_U8("graphics/interface/blank.4bpp");
+
+
+u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *))
+{
u8 sprite = CreateSprite(&gInvisibleSpriteTemplate, 248, 168, 14);
gSprites[sprite].invisible = TRUE;
gSprites[sprite].callback = callback;
return sprite;
}
-void StoreWordInTwoHalfwords(u16 *h, u32 w) {
+void StoreWordInTwoHalfwords(u16 *h, u32 w)
+{
h[0] = (u16)(w);
h[1] = (u16)(w >> 16);
}
-void LoadWordFromTwoHalfwords(u16 *h, u32 *w) {
+void LoadWordFromTwoHalfwords(u16 *h, u32 *w)
+{
*w = h[0] | (s16)h[1] << 16;
}
-void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) {
+void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha)
+{
src->texX = texX;
src->texY = texY;
src->scrX = scrX;
@@ -31,15 +144,11 @@ void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX
src->alpha = alpha;
}
-void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) {
+void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha)
+{
struct BgAffineSrcData src;
- SetBgAffineStruct(
- &src,
- texX, texY,
- scrX, scrY,
- sx, sy,
- alpha
- );
+
+ SetBgAffineStruct(&src, texX, texY, scrX, scrY, sx, sy, alpha);
BgAffineSet(&src, dest, 1);
}
@@ -47,24 +156,34 @@ void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s
// Functionally equivalent.
// Only the two yflip loops don't match.
-void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) {
+void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
+{
u8 x, y;
s8 i, j;
u8 xflip[32];
u8 h = gSpriteDimensions[shape][size][1];
u8 w = gSpriteDimensions[shape][size][0];
- for (y = 0; y < h; y++) {
+
+ for (y = 0; y < h; y++)
+ {
int filler = 32 - w;
- for (x = 0; x < w; x++) {
+
+ for (x = 0; x < w; x++)
+ {
int tile = (*tilemap & 0x3ff) * 32;
int attr = *tilemap & 0xc00;
- if (attr == 0) {
+
+ if (attr == 0)
+ {
void *src = tiles + tile;
void *dest = output;
int length = 32;
DmaCopy32(3, src, dest, length);
- } else if (attr == 0x800) { // yflip
- for (i = 0; i < 8; i++) {
+ }
+ else if (attr == 0x800) // yflip
+ {
+ for (i = 0; i < 8; i++)
+ {
void *src = tiles;
void *dest = output;
int length = 4;
@@ -73,22 +192,30 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) {
dest += i * 4;
DmaCopy32(3, src, dest, length);
}
- } else { // xflip
- for (i = 0; i < 8; i++) {
- for (j = 0; j < 4; j++) {
+ }
+ else // xflip
+ {
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
u8 i2 = i * 4;
xflip[i2 + (3-j)] = (tiles[tile + i2 + j] & 0xf) << 4;
xflip[i2 + (3-j)] |= tiles[tile + i2 + j] >> 4;
}
}
- if (*tilemap & 0x800) { // yflip
- for (i = 0; i < 8; i++) {
+ if (*tilemap & 0x800) // yflip
+ {
+ for (i = 0; i < 8; i++)
+ {
void *src = xflip + (7-i) * 4;
void *dest = output + i*4;
int length = 4;
DmaCopy32(3, src, dest, length);
}
- } else {
+ }
+ else
+ {
void *src = xflip;
void *dest = output;
int length = 32;
@@ -104,7 +231,8 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) {
#else
-__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) {
+__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output)
+{
asm("\n"
" .syntax unified\n"
" push {r4-r7,lr}\n"
@@ -348,39 +476,47 @@ __attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *t
#endif
-int CountTrailingZeroBits(u32 value) {
+int CountTrailingZeroBits(u32 value)
+{
u8 i;
- for (i = 0; i < 32; i++) {
- if ((value & 1) == 0) {
+
+ for (i = 0; i < 32; i++)
+ {
+ if ((value & 1) == 0)
value >>= 1;
- } else {
+ else
return i;
- }
}
return 0;
}
-u16 CalcCRC16(u8 *data, int length) {
+u16 CalcCRC16(u8 *data, int length)
+{
u16 i, j;
u16 crc = 0x1121;
- for (i = 0; i < length; i++) {
+
+ for (i = 0; i < length; i++)
+ {
crc ^= data[i];
- for (j = 0; j < 8; j++) {
- if (crc & 1) {
+ for (j = 0; j < 8; j++)
+ {
+ if (crc & 1)
crc = (crc >> 1) ^ 0x8408;
- } else {
+ else
crc >>= 1;
- }
}
}
return ~crc;
}
-u16 CalcCRC16WithTable(u8 *data, int length) {
+u16 CalcCRC16WithTable(u8 *data, int length)
+{
u16 i;
u16 crc = 0x1121;
u8 byte;
- for (i = 0; i < length; i++) {
+
+ for (i = 0; i < length; i++)
+ {
byte = crc >> 8;
crc ^= data[i];
crc = byte ^ gCrc16Table[(u8)crc];
diff --git a/sym_bss.txt b/sym_bss.txt
index 99dcd1392..a6eaeefe1 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -5,6 +5,8 @@
.include "src/link.o"
.include "src/rtc.o"
+@ daycare
+
.align 2
gUnknown_03000470: @ 3000470
.space 0x68
@@ -21,9 +23,13 @@ gUnknown_030004E8: @ 30004E8
gUnknown_03000500: @ 3000500
.space 0x8
+@ trade
+
gUnknown_03000508: @ 3000508
.space 0x8
+@ berry_blender
+
gUnknown_03000510: @ 3000510
.space 0x10
@@ -49,38 +55,14 @@ gUnknown_03000560: @ 3000560
.space 0x1C
.include "src/play_time.o"
+ .include "src/rom4.o"
+ @ unused variable?
.align 2
-gUnknown_03000580: @ 3000580
.space 0x4
-gUnknown_03000584: @ 3000584
- .space 0x4
-
-gUnknown_03000588: @ 3000588
- .space 0x8
-
-gUnknown_03000590: @ 3000590
- .space 0x8
-
-gUnknown_03000598: @ 3000598
- .space 0x2
-
-gUnknown_0300059A: @ 300059A
- .space 0x2
-
-gUnknown_0300059C: @ 300059C
- .space 0x4
-
-gUnknown_030005A0: @ 30005A0
- .space 0x4
-
-gUnknown_030005A4: @ 30005A4
- .space 0x2
-
-gUnknown_030005A6: @ 30005A6
- .space 0x2
-
+ .include "src/field_camera.o"
+ .include "src/field_map_obj.o"
.include "src/field_message_box.o"
.include "src/text_window.o"
.include "src/script.o"
@@ -89,29 +71,27 @@ gUnknown_030005A6: @ 30005A6
.include "src/tileset_anim.o"
.include "src/sound.o"
+@ field_weather
+
gUnknown_030006DC: @ 30006DC
.space 0x4
.include "src/field_effect.o"
- .include "src/item_menu.o"
+ .include "src/item_menu.o"
+
+@ shop
gUnknown_03000708: @ 3000708
.space 0x10
-gUnknown_03000718: @ 3000718
- .space 0x4
+ .include "src/record_mixing.o"
+ .include "src/tv.o"
-gUnknown_0300071C: @ 300071C
+ @ unused variable?
+ .align 2
.space 0x4
-gUnknown_03000720: @ 3000720
- .space 0x1
-
-gUnknown_03000721: @ 3000721
- .space 0x1
-
-gUnknown_03000722: @ 3000722
- .space 0x6
+@ battle_anim_80CA710
gUnknown_03000728: @ 3000728
.space 0x8
@@ -119,45 +99,39 @@ gUnknown_03000728: @ 3000728
gUnknown_03000730: @ 3000730
.space 0x10
+@ easy_chat
+
gUnknown_03000740: @ 3000740
.space 0x4
+@ pokenav
+
gUnknown_03000744: @ 3000744
.space 0x4
-gUnknown_03000748: @ 3000748
- .space 0x4
+@ mauville_old_man
-gUnknown_0300074C: @ 300074C
+gUnknown_03000748: @ 3000748
.space 0x4
-gUnknown_03000750: @ 3000750
- .space 0x2
-
-gUnknown_03000752: @ 3000752
- .space 0x2
+ .include "src/menu_helpers.o"
+ .include "src/contest_painting.o"
+ .include "src/pokeblock.o"
-gUnknown_03000754: @ 3000754
- .space 0x2
+ @ unused variable?
+ .align 2
+ .space 0x4
-gUnknown_03000756: @ 3000756
- .space 0x2
+ .include "src/field_specials.o"
-gUnknown_03000758: @ 3000758
- .space 0x8
-
-gUnknown_03000760: @ 3000760
- .space 0x50
+@ learn_move
+ .align 2
gUnknown_030007B0: @ 30007B0
.space 0x4
-gPcItemMenuOptionsNum: @ 30007B4
- .space 0x4
-
-gUnknown_030007B8: @ 30007B8
- .space 0x770
-
+ .include "src/player_pc.o"
+ .include "asm/m4a_1.o"
.include "src/agb_flash.o"
.include "src/siirtc.o"
.include "tools/agbcc/lib/libgcc.a:dp-bit.o"
diff --git a/sym_common.txt b/sym_common.txt
index dc1e62f13..fc729a587 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -3,11 +3,11 @@
.include "string_util.o"
.include "link.o"
.include "rtc.o"
+ .include "rom3.o"
- .align 4
-gBattleBuffersTransferData: @ 3004040
- .space 0x170
+@ battle
+ .align 2
gUnknown_030041B0: @ 30041B0
.space 0x4
@@ -104,32 +104,27 @@ gUnknown_03004348: @ 3004348
gUnknown_0300434C: @ 300434C
.space 0x4
-gPlayerPartyCount: @ 3004350
- .space 0x10
-
-gPlayerParty: @ 3004360
- .space 0x258
-
-gEnemyPartyCount: @ 30045B8
- .space 0x8
-
-gEnemyParty: @ 30045C0
- .space 0x258
-
+ .include "pokemon_1.o"
.include "rng.o"
+@ egg_hatch
+
.align 2
gUnknown_0300481C: @ 300481C
.space 0x4
.include "load_save.o"
+@ trade
+
gUnknown_03004824: @ 3004824
.space 0x4
gUnknown_03004828: @ 3004828
.space 0x8
+@ berry_blender
+
gUnknown_03004830: @ 3004830
.space 0x4
@@ -142,59 +137,27 @@ gUnknown_03004840: @ 3004840
gUnknown_03004854: @ 3004854
.space 0x4
-word_3004858: @ 3004858
- .space 0x4
-
-gFieldCallback: @ 300485C
- .space 0x4
-
-gUnknown_03004860: @ 3004860
- .space 0x4
-
-gFieldLinkPlayerCount: @ 3004864
- .space 0xC
-
-gUnknown_03004870: @ 3004870
- .space 0x10
-
-gUnknown_03004880: @ 3004880
- .space 0x18
-
-gUnknown_03004898: @ 3004898
- .space 0x4
-
-gUnknown_0300489C: @ 300489C
- .space 0x4
-
-gMapObjects: @ 30048A0
- .space 0x240
+ .include "rom4.o"
+ .include "fieldmap.o"
+ .include "field_camera.o"
+ .include "field_map_obj.o"
+ .include "field_control_avatar.o"
-gSelectedMapObject: @ 3004AE0
- .space 0x4
+@ party_menu?
+ .align 2
gUnknown_03004AE4: @ 3004AE4
.space 0x4
-gCallback_03004AE8: @ 3004AE8
- .space 0x4
-
-gDisableMusic: @ 3004AEC
- .space 0x4
-
-gSoundAnimFramesToWait: @ 3004AF0
- .space 0x10
-
-gBattleAnimArgs: @ 3004B00
- .space 0x10
-
-gAnimSpriteIndexArray: @ 3004B10
- .space 0x10
-
+ .include "start_menu.o"
+ .include "sound.o"
+ .include "battle_anim.o"
.include "task.o"
+ .include "mori_debug_menu.o"
-gUnknown_03004DA0: @ 3004DA0
- .space 0x20
+@ unknown_task
+ .align 4
gUnknown_03004DC0: @ 3004DC0
.space 0x20
@@ -216,21 +179,25 @@ gUnknown_03005560: @ 3005560
gUnknown_030056A0: @ 30056A0
.space 0x640
+@ pokemon_menu
+
gLastFieldPokeMenuOpened: @ 3005CE0
.space 0x4
gUnknown_03005CE4: @ 3005CE4
.space 0x4
-gUnknown_03005CE8: @ 3005CE8
- .space 0x4
+ .include "pokedex.o"
-gUnknown_03005CEC: @ 3005CEC
- .space 0x4
+@ pokemon_summary_screen
+ .align 4
gUnknown_03005CF0: @ 3005CF0
.space 0x10
+@ item_menu
+
+ .align 4
gUnknown_03005D00: @ 3005D00
.space 0x10
@@ -240,24 +207,31 @@ gBagPocketScrollStates: @ 3005D10
gCurrentBagPocketItemSlots: @ 3005D24
.space 0x4
-gUnknown_03005D28: @ 3005D28
- .space 0x4
+@ contest
-gUnknown_03005D2C: @ 3005D2C
+ .align 2
+gUnknown_03005D28: @ 3005D28
.space 0x4
-gUnknown_03005D30: @ 3005D30
- .space 0x4
+ .include "record_mixing.o"
+ .include "sound_check_menu.o"
+ .align 2
gUnknown_03005D34: @ 3005D34
.space 0x4
-gUnknown_03005D38: @ 3005D38
- .space 0x68
+ .include "tv.o"
+
+ .space 0x64 @ unused variable?
+@ mauville_old_man
+
+ .align 4
gUnknown_03005DA0: @ 3005DA0
.space 0x48
+@ cute_sketch
+
gUnknown_03005DE8: @ 3005DE8
.space 0x4
@@ -288,60 +262,28 @@ gUnknown_03005E08: @ 3005E08
gUnknown_03005E0C: @ 3005E0C
.space 0x4
-gUnknown_03005E10: @ 3005E10
- .space 0x10
-
-gUnknown_03005E20: @ 3005E20
- .space 0x20
-
-gUnknown_03005E40: @ 3005E40
- .space 0x4C
+ .include "contest_painting.o"
-gUnknown_03005E8C: @ 3005E8C
- .space 0x4
-
-gUnknown_03005E90: @ 3005E90
- .space 0x4
+@ evolution_scene
+ .align 2
gUnknown_03005E94: @ 3005E94
.space 0x4
-gUnknown_03005E98: @ 3005E98
- .space 0x4
-
-gLastWrittenSector: @ 3005E9C
- .space 0x4
-
-gLastSaveCounter: @ 3005EA0
- .space 0x4
-
-gLastKnownGoodSector: @ 3005EA4
- .space 0x4
-
-gDamagedSaveSectors: @ 3005EA8
- .space 0x4
+@ pokedex_cry_screen
-gSaveCounter: @ 3005EAC
- .space 0x4
-
-gFastSaveSection: @ 3005EB0
- .space 0x4
-
-gUnknown_03005EB4: @ 3005EB4
+gUnknown_03005E98: @ 3005E98
.space 0x4
-gSaveFileStatus: @ 3005EB8
- .space 0x4
+ .include "save.o"
-gGameContinueCallback: @ 3005EBC
- .space 0x14
+ .space 0x10 @ unused variable?
-gIntroFrameCounter: @ 3005ED0
- .space 0x10
+ .include "intro.o"
-gMultibootProgramStruct: @ 3005EE0
- .space 0x2C
+@ battle_anim_813F0F4
+ .align 2
gUnknown_03005F0C: @ 3005F0C
.space 0x4
@@ -351,6 +293,8 @@ gUnknown_03005F10: @ 3005F10
gUnknown_03005F14: @ 3005F14
.space 0xC
+@ pokeblock_feed
+
gUnknown_03005F20: @ 3005F20
.space 0x4
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 0a7cce3ef..0e8b25e28 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -6,17 +6,11 @@
.space 0x2E8
.include "src/link.o"
+ .include "src/rom3.o"
- .align 2
-gUnknown_020238C4: @ 20238C4
- .space 0x1
-
-gUnknown_020238C5: @ 20238C5
- .space 0x1
-
-gUnknown_020238C6: @ 20238C6
- .space 0x2
+@ battle
+ .align 2
gUnknown_020238C8: @ 20238C8
.space 0x4
@@ -119,7 +113,7 @@ gCurrentMove: @ 2024BE6
gUnknown_02024BE8: @ 2024BE8
.space 0x2
-gUnknown_02024BEA: @ 2024BEA
+gRandomMove: @ 2024BEA
.space 0x2
gBattleMoveDamage: @ 2024BEC
@@ -299,20 +293,11 @@ word_2024E82: @ 2024E82
gBattleMonForms: @ 2024E84
.space 0x4
-byte_2024E88: @ 2024E88
- .space 0x4
+ .include "src/pokemon_1.o"
+ .include "src/pokemon_2.o"
+ .include "src/load_save.o"
-gUnknown_02024E8C: @ 2024E8C
- .space 0x18
-
-gSaveBlock2: @ 2024EA4
- .space 0x890
-
-gSaveBlock1: @ 2025734
- .space 0x3AC0
-
-gLoadedSaveData: @ items
- .space 0x4D8
+@ trade
gUnknown_020296CC: @ 20296CC
.space 0x34
@@ -323,6 +308,8 @@ gUnknown_02029700: @ 2029700
gUnknown_020297D8: @ 20297D8
.space 0x4
+@ berry_blender
+
gUnknown_020297DC: @ 20297DC
.space 0x4
@@ -335,128 +322,20 @@ gUnknown_020297E4: @ 20297E4
gUnknown_020297E8: @ 20297E8
.space 0x4
-gDifferentSaveFile: @ 20297EC
- .space 0x1
-
-gUnknown_020297ED: @ 20297ED
- .space 0x3
-
-gUnknown_020297F0: @ 20297F0
- .space 0x8
-
-gUnknown_020297F8: @ 20297F8
- .space 0x8
-
-gUnknown_02029800: @ 2029800
- .space 0x8
-
-gUnknown_02029808: @ 2029808
- .space 0x8
-
-gUnknown_02029810: @ 2029810
- .space 0x4
-
-gUnknown_02029814: @ 2029814
- .space 0x2
-
-gUnknown_02029816: @ 2029816
- .space 0x2
-
-gLinkPlayerMapObjects: @ 2029818
- .space 0x10
-
+ .include "src/new_game.o"
+ .include "src/rom4.o"
.include "src/fieldmap.o"
+ .include "src/field_camera.o"
+ .include "src/field_player_avatar.o"
+ .include "src/field_message_box.o"
+ .include "src/script.o"
+ .include "src/scrcmd.o"
+ .include "src/field_control_avatar.o"
+ .include "src/event_data.o"
-gUnknown_0202E854: @ 202E854
- .space 0x4
-
-gPlayerAvatar: @ 202E858
- .space 0x14
-
-gUnknown_0202E86C: @ 202E86C
- .space 0x8
-
-gUnknown_0202E874: @ 202E874
- .space 0x8
-
-gFieldMessageBoxWindow: @ 202E87C
- .space 0x30
-
-gUnknown_0202E8AC: @ 202E8AC
- .space 0x4
-
-gUnknown_0202E8B0: @ 202E8B0
- .space 0x4
-
-gUnknown_0202E8B4: @ 202E8B4
- .space 0x2
-
-gUnknown_0202E8B6: @ 202E8B6
- .space 0x2
-
-gUnknown_0202E8B8: @ 202E8B8
- .space 0x2
-
-gUnknown_0202E8BA: @ 202E8BA
- .space 0x2
-
-gUnknown_0202E8BC: @ 202E8BC
- .space 0x4
-
-gUnknown_0202E8C0: @ 202E8C0
- .space 0x2
-
-gUnknown_0202E8C2: @ 202E8C2
- .space 0x2
-
-gSpecialVar_0x8000: @ 202E8C4
- .space 0x2
-
-gSpecialVar_0x8001: @ 202E8C6
- .space 0x2
-
-gSpecialVar_0x8002: @ 202E8C8
- .space 0x2
-
-gSpecialVar_0x8003: @ 202E8CA
- .space 0x2
-
-gSpecialVar_0x8004: @ 202E8CC
- .space 0x2
-
-gSpecialVar_0x8005: @ 202E8CE
- .space 0x2
-
-gSpecialVar_0x8006: @ 202E8D0
- .space 0x2
-
-gSpecialVar_0x8007: @ 202E8D2
- .space 0x2
-
-gSpecialVar_0x8008: @ 202E8D4
- .space 0x2
-
-gSpecialVar_0x8009: @ 202E8D6
- .space 0x2
-
-gSpecialVar_0x800A: @ 202E8D8
- .space 0x2
-
-gSpecialVar_0x800B: @ 202E8DA
- .space 0x2
-
-gScriptResult: @ 202E8DC
- .space 0x2
-
-gScriptLastTalked: @ 202E8DE
- .space 0x2
-
-gScriptFacing: @ 202E8E0
- .space 0x2
-
-gUnknown_0202E8E2: @ 202E8E2
- .space 0x12
+@ party_menu
+ .align 2
gUnknown_0202E8F4: @ 202E8F4
.space 0x1
@@ -476,20 +355,14 @@ gUnknown_0202E8FA: @ 202E8FA
.include "src/menu.o"
.include "src/tileset_anim.o"
.include "src/palette.o"
-
- .align 2
-gMPlay_PokemonCry: @ 202F79C
- .space 0x4
-
-gPokemonCryBGMDuckingCounter: @ 202F7A0
- .space 0x4
-
+ .include "src/sound.o"
.include "src/battle_anim.o"
.include "src/rom_8077ABC.o"
+ .include "src/title_screen.o"
-gUnknown_0202F7E4: @ 202F7E4
- .space 0x4
+@ field_weather
+ .align 2
gUnknown_0202F7E8: @ 202F7E8
.space 0x200
@@ -507,13 +380,15 @@ gUnknown_0202FF58: @ 202FF58
.include "src/battle_setup.o"
.include "src/wild_encounter.o"
+ .include "src/field_effect.o"
-gUnknown_0202FF84: @ 202FF84
- .space 0x20
+@ unknown_task
gUnknown_0202FFA4: @ 202FFA4
.space 0x4
+@ pokemon_menu
+
gUnknown_0202FFA8: @ 202FFA8
.space 0x1
@@ -523,27 +398,13 @@ gUnknown_0202FFA9: @ 202FFA9
gUnknown_0202FFAA: @ 202FFAA
.space 0xA
-gPokedexView: @ 202FFB4
- .space 0x4
+ .include "src/pokedex.o"
+ .include "src/trainer_card.o"
+ .include "src/pokemon_storage_system.o"
-gUnknown_0202FFB8: @ 202FFB8
- .space 0x2
-
-gUnknown_0202FFBA: @ 202FFBA
- .space 0x2
-
-gUnknown_0202FFBC: @ 202FFBC
- .space 0x4
-
-gTrainerCards: @ 202FFC0
- .space 0xE0
-
-gPokemonStorage: @ 20300A0
- .space 0x360
-
-gUnknown_02030400: @ 02030400
- .space 0x8070
+@ still pokemon_storage_system
+ .align 2
gUnknown_02038470: @ 2038470
.space 0x3
@@ -595,19 +456,21 @@ gUnknown_020384EA: @ 20384EA
gUnknown_020384EC: @ 20384EC
.space 0x4
+@ pokemon_summary_screen
+
gUnknown_020384F0: @ 20384F0
.space 0x4
gUnknown_020384F4: @ 20384F4
.space 0x4
-gUnknown_020384F8: @ 20384F8
- .space 0x40
-
+ .include "src/script_movement.o"
.include "src/map_name_popup.o"
.include "src/item_menu.o"
- .align 2
+@ contest
+
+ .align 2
gUnknown_0203856C: @ 203856C
.space 0x4
@@ -660,6 +523,8 @@ gScriptContestCategory: @ 203869C
gScriptContestRank: @ 203869E
.space 0x2
+@ shop
+
gUnknown_020386A0: @ 20386A0
.space 0x4
@@ -681,185 +546,67 @@ gUnknown_02038730: @ 2038730
gUnknown_02038731: @ 2038731
.space 0x3
-gUnknown_02038734: @ 2038734
- .space 0x4
+ .include "src/money.o"
+@ record_mixing
+
+ .align 2
gUnknown_02038738: @ 2038738
.space 0x78
-gUnknown_020387B0: @ 20387B0
- .space 0x1
-
-gUnknown_020387B1: @ 20387B1
- .space 0x1
-
-gUnknown_020387B2: @ 20387B2
- .space 0x1
-
-gUnknown_020387B3: @ 20387B3
- .space 0x1
-
-gUnknown_020387B4: @ 20387B4
- .space 0x24
-
-gUnknown_020387D8: @ 20387D8
- .space 0x1
+ .include "src/sound_check_menu.o"
-gUnknown_020387D9: @ 20387D9
- .space 0x3
+@ secret_base
+ .align 2
gUnknown_020387DC: @ 20387DC
.space 0x4
-gUnknown_020387E0: @ 20387E0
- .space 0x2
+@ tv
-gUnknown_020387E2: @ 20387E2
- .space 0x2
+ .include "src/tv.o"
-gUnknown_020387E4: @ 20387E4
- .space 0x4
-
-gUnknown_020387E8: @ 20387E8
- .space 0x4
+@ fldeff_80C5CD4
+ .align 2
gUnknown_020387EC: @ 20387EC
.space 0x4
-gRotatingGate_GateSpriteIds: @ 20387F0
- .space 0x10
-
-gRotatingGate_PuzzleConfig: @ 2038800
- .space 0x4
-
-gRotatingGate_PuzzleCount: @ 2038804
- .space 0x4
-
+ .include "src/rotating_gate.o"
.include "src/safari_zone.o"
+@ easy_chat
+
gUnknown_020388AC: @ 20388AC
.space 0x4
+@ pokenav
+
gUnknown_020388B0: @ 20388B0
.space 0x4
gUnknown_020388B4: @ 20388B4
.space 0x4
-gUnknown_020388B8: @ 20388B8
- .space 0x4
-
-gUnknown_020388BC: @ 20388BC
- .space 0x4
-
-gUnknown_020388C0: @ 20388C0
- .space 0x4
-
-gUnknown_020388C4: @ 20388C4
- .space 0x8
-
-gUnknown_020388CC: @ 20388CC
- .space 0x4
-
-gUnknown_020388D0: @ 20388D0
- .space 0x4
-
-gUnknown_020388D4: @ 20388D4
- .space 0x1
-
-gUnknown_020388D5: @ 20388D5
- .space 0x1
-
-gUnknown_020388D6: @ 20388D6
- .space 0x10
-
-gUnknown_020388E6: @ 20388E6
- .space 0xC
-
-gUnknown_020388F2: @ 20388F2
- .space 0x1
-
-gUnknown_020388F3: @ 20388F3
- .space 0x1
-
-gUnknown_020388F4: @ 20388F4
- .space 0x1
-
-gUnknown_020388F5: @ 20388F5
- .space 0x1
-
-gUnknown_020388F6: @ 20388F6
- .space 0x1
-
-gUnknown_020388F7: @ 20388F7
- .space 0x9
-
-gUnknown_02038900: @ 2038900
- .space 0x8A4
-
-gUnknown_020391A4: @ 20391A4
- .space 0x2
-
-gUnknown_020391A6: @ 20391A6
- .space 0x2
-
-gUnknown_020391A8: @ 20391A8
- .space 0x1
-
-gUnknown_020391A9: @ 20391A9
- .space 0x1
-
-gUnknown_020391AA: @ 20391AA
- .space 0x2
-
-gUnknown_020391AC: @ 20391AC
- .space 0x8
-
-gUnknown_020391B4: @ 20391B4
- .space 0x80
-
-gUnknown_02039234: @ 2039234
- .space 0x4
-
-gAIScriptPtr: @ 2039238
- .space 0x4
-
-gUnknown_0203923C: @ 203923C
- .space 0x8
-
-gUnknown_02039244: @ 2039244
- .space 0x4
-
-gUnknown_02039248: @ 2039248
- .space 0x4
-
-gUnknown_0203924C: @ 203924C
- .space 0x4
+ .include "src/mon_markings.o"
-gUnknown_02039250: @ 2039250
- .space 0x1
+@ mauville_old_man
-gUnknown_02039251: @ 2039251
- .space 0x3
-
-gUnknown_02039254: @ 2039254
+ .align 2
+gUnknown_020388BC: @ 20388BC
.space 0x4
-gUnknown_02039258: @ 2039258
- .space 0x1
+ .include "src/menu_helpers.o"
+ .include "src/region_map.o"
+ .include "src/decoration.o"
+ .include "src/battle_ai.o"
+ .include "src/rom6.o"
+ .include "src/pokeblock.o"
+ .include "src/field_specials.o"
-gUnknown_02039259: @ 2039259
- .space 0x1
-
-gUnknown_0203925A: @ 203925A
- .space 0x1
-
-gUnknown_0203925B: @ 203925B
- .space 0x1
-
-gUnknown_0203925C: @ 203925C
- .space 0x4
+@ pokedex_area_screen
+ .align 2
gUnknown_02039260: @ 2039260
.space 0x2
@@ -878,12 +625,16 @@ gUnknown_02039268: @ 2039268
gUnknown_0203926A: @ 203926A
.space 0x2
+@ battle_message
+
gAbilitiesPerBank: @ 203926C
.space 0x4
-gSelectedOrderFromParty: @ 2039270
- .space 0x4
+ .include "src/choose_party.o"
+@ cable_car
+
+ .align 2
gUnknown_02039274: @ 2039274
.space 0x4
@@ -905,75 +656,33 @@ gUnknown_0203927C: @ 203927C
gUnknown_0203927D: @ 203927D
.space 0x7
-gLastSaveSectorStatus: @ 2039284
- .space 0x4
-
-gUnknown_02039288: @ 2039288
- .space 0x74
-
+ .include "src/save.o"
+ .include "src/mystery_event_script.o"
.include "src/roamer.o"
+ .include "src/use_pokeblock.o"
+ .include "src/player_pc.o"
+ .include "src/intro.o"
- .align 2
-gUnknown_02039304: @ 2039304
- .space 0x4
-
-gUnknown_02039308: @ 2039308
- .space 0x4
-
-gUnknown_0203930C: @ 203930C
- .space 0x4
-
-gUnknown_02039310: @ 2039310
- .space 0x2
-
-gUnknown_02039312: @ 2039312
- .space 0x2
-
-gPcItemMenuOptionOrder: @ 2039314
- .space 0x4
-
-gUnknown_02039318: @ 2039318
- .space 0x2
-
-gUnknown_0203931A: @ 203931A
- .space 0x2
+@ hall_of_fame
+ .align 2
gUnknown_0203931C: @ 203931C
.space 0x4
-gUnknown_02039320: @ 2039320
- .space 0x2
-
-gUnknown_02039322: @ 2039322
- .space 0x2
-
-gUnknown_02039324: @ 2039324
- .space 0x1
-
-gUnknown_02039325: @ 2039325
- .space 0x3
-
+ .include "src/credits.o"
.include "src/lottery_corner.o"
+ .include "src/berry_tag_screen.o"
+ .include "src/mystery_event_menu.o"
+ .include "src/save_failed_screen.o"
-gUnknown_0203932C: @ 203932C
- .space 0x2
-
-gUnknown_0203932E: @ 203932E
- .space 0xA
-
-gUnknown_02039338: @ 2039338
- .space 0x4
-
-gSaveFailedType: @ 203933C
- .space 0x2
-
-gSaveFailedClockInfo: @ 203933E
- .space 0x12
+@ pokeblock_feed
.align 2
gUnknown_02039350: @ 2039350
.space 0x8
+@ intro_credits_graphics
+
gUnknown_02039358: @ 2039358
.space 0x2
@@ -983,6 +692,8 @@ gUnknown_0203935A: @ 203935A
gUnknown_0203935C: @ 203935C
.space 0x4
+@ ???
+
gTileBuffer: @ 2039360
.space 0x100
@@ -995,19 +706,4 @@ gUnknown_02039760: @ 2039760
gUnknown_0203A360: @ 203A360
.space 0x20
-gMenuCursorSubsprites: @ 203A380
- .space 0x50
-
-gUnknown_0203A3D0: @ 203A3D0
- .space 0x1
-
-gUnknown_0203A3D1: @ 203A3D1
- .space 0x1
-
-gUnknown_0203A3D2: @ 203A3D2
- .space 0x1
-
-gUnknown_0203A3D3: @ 203A3D3
- .space 0x1
-
-gUnknown_0203A3D4: @ 203A3D4
+ .include "src/menu_cursor.o"